MCPcopy Create free account
hub / github.com/carbonengine/trinity / ReadRegisters

Function ReadRegisters

trinity/Shader/Tr2EffectDescription.cpp:258–367  ·  view source on GitHub ↗

CHECK

Source from the content-addressed store, hash-verified

256}
257// CHECK
258void ReadRegisters( Tr2ShaderSignatureAL& signature, EffectStream& stream, unsigned version, uint32_t type )
259{
260 auto inputCount = stream.Read<uint8_t>();
261 signature.registers.resize( inputCount );
262 for( int inputIx = 0; inputIx < inputCount; ++inputIx )
263 {
264 auto& element = signature.registers[inputIx];
265
266 if( version > 9 )
267 {
268 element.registerType = Tr2ShaderRegisterAL::RegisterType( stream.Read<uint8_t>() );
269 }
270 else
271 {
272 uint8_t oldRegisterType = stream.Read<uint8_t>();
273 switch( oldRegisterType )
274 {
275 case 0:
276 element.registerType = Tr2ShaderRegisterAL::CONSTANT_BUFFER;
277 break;
278 case 1:
279 element.registerType = Tr2ShaderRegisterAL::SRV_TEXTURE2D; // best guess
280 break;
281 case 2:
282 element.registerType = Tr2ShaderRegisterAL::UAV_TEXTURE2D; // best guess
283 break;
284 case 3:
285 element.registerType = Tr2ShaderRegisterAL::SAMPLER;
286 break;
287 default:
288 CCP_ASSERT( false );
289 element.registerType = Tr2ShaderRegisterAL::SRV_TEXTURE2D;
290 }
291 }
292 element.registerIndex = stream.Read<uint32_t>();
293
294 //stream.Read( element.registerIndex );
295 if( version > 12 )
296 {
297 stream.Read( element.arrayCount );
298 element.registerSpace = stream.Read<uint8_t>();
299 }
300 else
301 {
302 element.arrayCount = 1;
303 element.registerSpace = type;
304 }
305 bool dynamic = true;
306 if( element.registerType == Tr2ShaderRegisterAL::CONSTANT_BUFFER )
307 {
308 if( type == Tr2RenderContextEnum::ShaderType::VERTEX_SHADER && element.registerIndex == Tr2Renderer::GetPerFrameVSStartRegister() )
309 {
310 dynamic = false;
311 }
312 if( type == Tr2RenderContextEnum::ShaderType::PIXEL_SHADER && element.registerIndex == Tr2Renderer::GetPerFramePSStartRegister() )
313 {
314 dynamic = false;
315 }

Callers 1

ReadMethod · 0.85

Calls 5

RegisterTypeEnum · 0.85
TextureFilterEnum · 0.85
TextureAddressModeEnum · 0.85
CompareFuncEnum · 0.85
ReadMethod · 0.45

Tested by

no test coverage detected