MCPcopy Create free account
hub / github.com/OGRECave/ogre-next / gatherArrayedDescs

Method gatherArrayedDescs

RenderSystems/Vulkan/src/OgreVulkanProgram.cpp:1134–1175  ·  view source on GitHub ↗

-----------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1132
1133 //-----------------------------------------------------------------------
1134 void VulkanProgram::gatherArrayedDescs( const bool bValidating )
1135 {
1136 OgreProfileExhaustive( "VulkanProgram::gatherArrayedDescs" );
1137
1138 SpvReflectShaderModule module;
1139 memset( &module, 0, sizeof( module ) );
1140 SpvReflectResult result =
1141 spvReflectCreateShaderModule( mSpirv.size() * sizeof( uint32 ), &mSpirv[0], &module );
1142 if( result != SPV_REFLECT_RESULT_SUCCESS )
1143 {
1144 OGRE_EXCEPT( Exception::ERR_RENDERINGAPI_ERROR,
1145 "spvReflectCreateShaderModule failed on shader " + mName +
1146 " error code: " + getSpirvReflectError( result ),
1147 "VulkanDescriptors::generateDescriptorSet" );
1148 }
1149
1150 // Ensure module gets freed if we throw
1151 FreeModuleOnDestructor modulePtr( &module );
1152
1153 uint32 numDescSets = 0;
1154 result = spvReflectEnumerateDescriptorSets( &module, &numDescSets, 0 );
1155 if( result != SPV_REFLECT_RESULT_SUCCESS )
1156 {
1157 OGRE_EXCEPT( Exception::ERR_RENDERINGAPI_ERROR,
1158 "spvReflectEnumerateDescriptorSets failed on shader " + mName +
1159 " error code: " + getSpirvReflectError( result ),
1160 "VulkanDescriptors::generateDescriptorSet" );
1161 }
1162
1163 FastArray<SpvReflectDescriptorSet *> sets;
1164 sets.resize( numDescSets );
1165 result = spvReflectEnumerateDescriptorSets( &module, &numDescSets, sets.begin() );
1166 if( result != SPV_REFLECT_RESULT_SUCCESS )
1167 {
1168 OGRE_EXCEPT( Exception::ERR_RENDERINGAPI_ERROR,
1169 "spvReflectEnumerateDescriptorSets failed on shader " + mName +
1170 " error code: " + getSpirvReflectError( result ),
1171 "VulkanDescriptors::generateDescriptorSet" );
1172 }
1173
1174 gatherArrayedDescs( sets, bValidating );
1175 }
1176 //-----------------------------------------------------------------------
1177 void VulkanProgram::gatherArrayedDescs( const FastArray<SpvReflectDescriptorSet *> &sets,
1178 const bool bValidating )

Callers

nothing calls this directly

Calls 15

getSpirvReflectErrorFunction · 0.85
ArrayDescClass · 0.85
findBindingIndexMethod · 0.80
addArrayBindingMethod · 0.80
validateMethod · 0.80
getRootLayoutMethod · 0.80
validateArrayBindingsMethod · 0.80
toStringFunction · 0.50
sizeMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected