MCPcopy Create free account
hub / github.com/NVIDIA-RTX/RTXPT / ProcessArg

Function ProcessArg

Rtxpt/Misc/ShaderDebug.cpp:244–286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

242}
243
244static std::string ProcessArg( const char * & currentData, const char * endData )
245{
246 char firstByteCode = *reinterpret_cast<const char*>(currentData);
247 currentData += sizeof(char);
248
249 ShaderDebugArgCode argCode = static_cast<ShaderDebugArgCode>(firstByteCode);
250 if( argCode == ShaderDebugArgCode::DebugPrint_ErrorType ) { assert(false); return ""; }
251
252 uint elementCount = 0;
253 ShaderDebugArgCode typeCode = ShaderDebugArgCode::DebugPrint_ErrorType;
254 switch(argCode)
255 {
256 case(ShaderDebugArgCode::DebugPrint_Uint): elementCount = 1; typeCode = ShaderDebugArgCode::DebugPrint_Uint; break;
257 case(ShaderDebugArgCode::DebugPrint_Uint2): elementCount = 2; typeCode = ShaderDebugArgCode::DebugPrint_Uint; break;
258 case(ShaderDebugArgCode::DebugPrint_Uint3): elementCount = 3; typeCode = ShaderDebugArgCode::DebugPrint_Uint; break;
259 case(ShaderDebugArgCode::DebugPrint_Uint4): elementCount = 4; typeCode = ShaderDebugArgCode::DebugPrint_Uint; break;
260 case(ShaderDebugArgCode::DebugPrint_Int): elementCount = 1; typeCode = ShaderDebugArgCode::DebugPrint_Int; break;
261 case(ShaderDebugArgCode::DebugPrint_Int2): elementCount = 2; typeCode = ShaderDebugArgCode::DebugPrint_Int; break;
262 case(ShaderDebugArgCode::DebugPrint_Int3): elementCount = 3; typeCode = ShaderDebugArgCode::DebugPrint_Int; break;
263 case(ShaderDebugArgCode::DebugPrint_Int4): elementCount = 4; typeCode = ShaderDebugArgCode::DebugPrint_Int; break;
264 case(ShaderDebugArgCode::DebugPrint_Float): elementCount = 1; typeCode = ShaderDebugArgCode::DebugPrint_Float; break;
265 case(ShaderDebugArgCode::DebugPrint_Float2): elementCount = 2; typeCode = ShaderDebugArgCode::DebugPrint_Float; break;
266 case(ShaderDebugArgCode::DebugPrint_Float3): elementCount = 3; typeCode = ShaderDebugArgCode::DebugPrint_Float; break;
267 case(ShaderDebugArgCode::DebugPrint_Float4): elementCount = 4; typeCode = ShaderDebugArgCode::DebugPrint_Float; break;
268 default: assert(false && "Wrong data type - there's a bug somewhere"); return "";
269 }
270 size_t neededSize = elementCount * sizeof(uint);
271 if( currentData + neededSize > endData )
272 {
273 assert(false && "Buffer overflow - there's a bug somewhere");
274 return "";
275 }
276
277 if( elementCount == 1 )
278 return ProcessSingleValue( currentData, endData, typeCode );
279 std::string ret = "(";
280 for( uint i = 0; i < elementCount; i++ )
281 {
282 if( i != 0 ) ret += ", ";
283 ret += ProcessSingleValue( currentData, endData, typeCode );
284 }
285 return ret + ")";
286}
287
288void ShaderDebug::OutputLastBufferPrints()
289{

Callers 1

Calls 1

ProcessSingleValueFunction · 0.85

Tested by

no test coverage detected