Uses bitfields instead of masking for vk version info
This commit is contained in:
@@ -23,20 +23,17 @@ int main()
|
||||
// major 7-bit, bits 28-22
|
||||
// minor, 10 bit, 21-12
|
||||
// patch, 12 bit, 10-0
|
||||
// clang-format off
|
||||
constexpr std::uint64_t PATCH_BITMASK { 0b00000000000000000000111111111111 };
|
||||
constexpr std::uint64_t MINOR_BITMASK { 0b00000000001111111111000000000000 };
|
||||
constexpr std::uint64_t MAJOR_BITMASK { 0b00011111110000000000000000000000 };
|
||||
constexpr std::uint64_t VARIANT_BITMASK { 0b11100000000000000000000000000000 };
|
||||
struct VersionBits
|
||||
{
|
||||
unsigned int patch:12;
|
||||
unsigned int minor:10;
|
||||
unsigned int major:7;
|
||||
unsigned int variant:3;
|
||||
};
|
||||
|
||||
const auto patch { ( version & PATCH_BITMASK ) >> 0};
|
||||
const auto minor { ( version & MINOR_BITMASK ) >> 10};
|
||||
const auto major { ( version & MAJOR_BITMASK ) >> (10 + 12)};
|
||||
[[maybe_unused]] const auto variant { ( version & VARIANT_BITMASK ) >> (10 + 12 + 7) };
|
||||
const auto [ patch, minor, major, variant ] { static_cast< VersionBits >( version ) };
|
||||
|
||||
// clang-format on
|
||||
|
||||
log::debug( "Vulkan instance version: {}.{}.{}.{}", major, minor, patch, minor );
|
||||
log::debug( "Vulkan instance version: {}.{}.{}.{}", major, minor, patch, variant );
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user