-----------------------------------------------------------------------
| 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 ) |
nothing calls this directly
no test coverage detected