@@ -100,30 +100,29 @@ class IGraphicsPipeline : public IPipeline<PipelineLayoutType>
100
100
// TODO: check rasterization samples, etc.
101
101
// rp->getCreationParameters().subpasses[i]
102
102
103
- std::bitset<GRAPHICS_SHADER_STAGE_COUNT > stagePresence = {};
103
+ core::bitflag<ICPUShader::E_SHADER_STAGE > stagePresence = {};
104
104
for (const auto info : shaders)
105
105
if (info.shader )
106
106
{
107
107
if (!extra (info))
108
108
return false ;
109
109
const auto stage = info.shader ->getStage ();
110
- if (stage>=GRAPHICS_SHADER_STAGE_COUNT )
110
+ if (stage>ICPUShader::ESS_FRAGMENT )
111
111
return false ;
112
- const auto stageIx = hlsl::findLSB (stage);
113
- if (stagePresence.test (stageIx))
112
+ if (stagePresence.hasFlags (stage))
114
113
return false ;
115
- stagePresence. set (stageIx) ;
114
+ stagePresence |= stage ;
116
115
}
117
116
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-stage-02096
118
- if (!stagePresence.test (ICPUShader::ESS_VERTEX))
117
+ if (!stagePresence.hasFlags (ICPUShader::ESS_VERTEX))
119
118
return false ;
120
119
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-pStages-00729
121
120
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-pStages-00730
122
- if (stagePresence.test (ICPUShader::ESS_TESSELLATION_CONTROL)!=stagePresence.test (ICPUShader::ESS_TESSELLATION_EVALUATION))
121
+ if (stagePresence.hasFlags (ICPUShader::ESS_TESSELLATION_CONTROL)!=stagePresence.hasFlags (ICPUShader::ESS_TESSELLATION_EVALUATION))
123
122
return false ;
124
123
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-pStages-08888
125
124
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html#VUID-VkGraphicsPipelineCreateInfo-topology-08889
126
- if (stagePresence.test (ICPUShader::ESS_TESSELLATION_EVALUATION)!=(cached.primitiveAssembly .primitiveType ==EPT_PATCH_LIST))
125
+ if (stagePresence.hasFlags (ICPUShader::ESS_TESSELLATION_EVALUATION)!=(cached.primitiveAssembly .primitiveType ==EPT_PATCH_LIST))
127
126
return false ;
128
127
129
128
return true ;
0 commit comments