diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2023-08-22 12:10:10 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-22 12:10:10 +0800 |
| commit | 9d7c9b98702df8b6f77ed5eac833111e6925b08f (patch) | |
| tree | a4336caa7d39beef2d1263a081a40f1d72784f7e | |
| parent | bd6dbaf7c3ea720b4ed39904fe08878f9dcbd947 (diff) | |
color spirv-val output (#3132)
* s/invalid code/todo
* comment debug disassembled spirv
* more convenient spirv-val output
* color spirv-val output
| -rw-r--r-- | source/slang/hlsl.meta.slang | 5 | ||||
| -rw-r--r-- | source/slang/slang-spirv-val.cpp | 8 |
2 files changed, 9 insertions, 4 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 3dcdc6c54..cfc2bc3a5 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -926,8 +926,9 @@ __generic<T : __BuiltinType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "all(bvec$N0($0))") __target_intrinsic(spirv, boolean(T), "OpAll resultType resultId _0") -__target_intrinsic(spirv, integral(T), "%c = OpINotEqual resultType resultId _0 const(,0); OpAll resultType resultId %c") -__target_intrinsic(spirv, floating(T), "%c = OpFUnordNotEqual resultType resultId _0 const(,0); OpAll resultType resultId %c") +// TODO: correct resultType in here +// __target_intrinsic(spirv, integral(T), "%c = OpINotEqual {vector<bool,N>} resultId _0 const(,0); OpAll resultType resultId %c") +// __target_intrinsic(spirv, floating(T), "%c = OpFUnordNotEqual {vector<bool,N>} resultId _0 const(,0); OpAll resultType resultId %c") [__readNone] bool all(vector<T,N> x) { diff --git a/source/slang/slang-spirv-val.cpp b/source/slang/slang-spirv-val.cpp index 29a4b8617..d41f0e8cc 100644 --- a/source/slang/slang-spirv-val.cpp +++ b/source/slang/slang-spirv-val.cpp @@ -8,6 +8,8 @@ static SlangResult disassembleSPIRV(const List<uint8_t>& spirv, String& outErr, // Set up our process CommandLine commandLine; commandLine.m_executableLocation.setName("spirv-dis"); + commandLine.addArg("--comment"); + commandLine.addArg("--color"); RefPtr<Process> p; // If we failed to even start the process, then validation isn't available @@ -75,9 +77,9 @@ SlangResult debugValidateSPIRV(const List<uint8_t>& spirv) fwrite(outData.getBuffer(), outData.getCount(), 1, stderr); outData.clear(); SLANG_RETURN_ON_FAIL(StreamUtil::readAll(err, 0, outData)); - fwrite(outData.getBuffer(), outData.getCount(), 1, stderr); - const auto ret = p->getReturnValue(); + // If we failed, dump the spirv first. + const auto ret = p->getReturnValue(); if(ret != 0) { String spirvDisErr; @@ -87,6 +89,8 @@ SlangResult debugValidateSPIRV(const List<uint8_t>& spirv) fwrite(spirvDis.getBuffer(), spirvDis.getLength(), 1, stderr); } + fwrite(outData.getBuffer(), outData.getCount(), 1, stderr); + return ret == 0 ? SLANG_OK : SLANG_FAIL; } |
