@@ -491,12 +491,11 @@ namespace Slang
491
491
ComPtr<ID3DBlob> codeBlob;
492
492
SlangResult res = disassembleFunc (data, size, 0 , nullptr , codeBlob.writeRef ());
493
493
494
- String result;
495
494
if (codeBlob)
496
495
{
497
496
char const * codeBegin = (char const *)codeBlob->GetBufferPointer ();
498
497
char const * codeEnd = codeBegin + codeBlob->GetBufferSize () - 1 ;
499
- result. append (codeBegin, codeEnd);
498
+ stringOut = String (codeBegin, codeEnd);
500
499
}
501
500
if (FAILED (res))
502
501
{
@@ -576,11 +575,14 @@ SlangResult dissassembleDXILUsingDXC(
576
575
return 0 ;
577
576
}
578
577
579
- String dissassembleSPIRV (
578
+ SlangResult dissassembleSPIRV (
580
579
CompileRequest* slangRequest,
581
580
void const * data,
582
- size_t size)
581
+ size_t size,
582
+ String& stringOut)
583
583
{
584
+ stringOut = String ();
585
+
584
586
String output;
585
587
auto outputFunc = [](void const * data, size_t size, void * userData)
586
588
{
@@ -597,13 +599,13 @@ SlangResult dissassembleDXILUsingDXC(
597
599
request.outputUserData = &output;
598
600
599
601
int err = invokeGLSLCompiler (slangRequest, request);
600
-
601
602
if (err)
602
603
{
603
- String () ;
604
+ return SLANG_FAIL ;
604
605
}
605
606
606
- return output;
607
+ stringOut = output;
608
+ return SLANG_OK;
607
609
}
608
610
609
611
List<uint8_t > emitSPIRVForEntryPoint (
@@ -648,7 +650,8 @@ SlangResult dissassembleDXILUsingDXC(
648
650
if (spirv.Count () == 0 )
649
651
return String ();
650
652
651
- String result = dissassembleSPIRV (entryPoint->compileRequest , spirv.begin (), spirv.Count ());
653
+ String result;
654
+ dissassembleSPIRV (entryPoint->compileRequest , spirv.begin (), spirv.Count (), result);
652
655
return result;
653
656
}
654
657
#endif
@@ -910,9 +913,10 @@ SlangResult dissassembleDXILUsingDXC(
910
913
911
914
case CodeGenTarget::SPIRV:
912
915
{
913
- String assembly = dissassembleSPIRV (compileRequest,
916
+ String assembly;
917
+ dissassembleSPIRV (compileRequest,
914
918
data.begin (),
915
- data.end () - data.begin ());
919
+ data.end () - data.begin (), assembly );
916
920
writeOutputToConsole (compileRequest, assembly);
917
921
}
918
922
break ;
@@ -1135,7 +1139,8 @@ SlangResult dissassembleDXILUsingDXC(
1135
1139
case CodeGenTarget::SPIRV:
1136
1140
dumpIntermediateBinary (compileRequest, data, size, " .spv" );
1137
1141
{
1138
- String spirvAssembly = dissassembleSPIRV (compileRequest, data, size);
1142
+ String spirvAssembly;
1143
+ dissassembleSPIRV (compileRequest, data, size, spirvAssembly);
1139
1144
dumpIntermediateText (compileRequest, spirvAssembly.begin (), spirvAssembly.Length (), " .spv.asm" );
1140
1145
}
1141
1146
break ;
0 commit comments