Refactor enum flags with __underlying_type and new EnumHasAnyFlags/EnumHasAllFlags

Fixes #832
Closes #886
This commit is contained in:
Wojtek Figat
2023-01-15 12:44:39 +01:00
parent 810f7fb803
commit f127bbebe1
101 changed files with 424 additions and 414 deletions

View File

@@ -1322,19 +1322,19 @@ PixelFormat GPUDeviceVulkan::GetClosestSupportedPixelFormat(PixelFormat format,
{
// Collect features to use
VkFormatFeatureFlags wantedFeatureFlags = 0;
if (flags & GPUTextureFlags::ShaderResource)
if (EnumHasAnyFlags(flags, GPUTextureFlags::ShaderResource))
wantedFeatureFlags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
if (flags & GPUTextureFlags::RenderTarget)
if (EnumHasAnyFlags(flags, GPUTextureFlags::RenderTarget))
wantedFeatureFlags |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT;
if (flags & GPUTextureFlags::DepthStencil)
if (EnumHasAnyFlags(flags, GPUTextureFlags::DepthStencil))
wantedFeatureFlags |= VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT;
if (flags & GPUTextureFlags::UnorderedAccess)
if (EnumHasAnyFlags(flags, GPUTextureFlags::UnorderedAccess))
wantedFeatureFlags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
if (!IsVkFormatSupported(RenderToolsVulkan::ToVulkanFormat(format), wantedFeatureFlags, optimalTiling))
{
// Special case for depth-stencil formats
if (flags & GPUTextureFlags::DepthStencil)
if (EnumHasAnyFlags(flags, GPUTextureFlags::DepthStencil))
{
const bool hasStencil = PixelFormatExtensions::HasStencil(format);
@@ -1749,7 +1749,7 @@ bool GPUDeviceVulkan::Init()
//VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
// Multi-sampling support
if (support & FormatSupport::Texture2D)
if (EnumHasAnyFlags(support, FormatSupport::Texture2D))
msaa = maxMsaa;
}