diff options
Diffstat (limited to 'tools/render-test')
| -rw-r--r-- | tools/render-test/render-test-main.cpp | 28 | ||||
| -rw-r--r-- | tools/render-test/shader-input-layout.cpp | 11 | ||||
| -rw-r--r-- | tools/render-test/slang-support.cpp | 4 |
3 files changed, 30 insertions, 13 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp index 27311d67a..db51339f1 100644 --- a/tools/render-test/render-test-main.cpp +++ b/tools/render-test/render-test-main.cpp @@ -274,19 +274,25 @@ struct AssignValsFromLayoutContext if(field.name.getLength() == 0) { - StdWriters::getError().print("error: entries in `ShaderInputLayout` must include a name\n"); - return SLANG_E_INVALID_ARG; + // If no name was given, assume by-indexing matching is requested + auto fieldCursor = dstCursor.getElement(fieldIndex); + if(!fieldCursor.isValid()) + { + StdWriters::getError().print("error: could not find shader parameter at index %d\n", (int)fieldIndex); + return SLANG_E_INVALID_ARG; + } + SLANG_RETURN_ON_FAIL(assign(fieldCursor, field.val)); } - - auto fieldCursor = dstCursor.getPath(field.name.getBuffer()); - - if(!fieldCursor.isValid()) + else { - StdWriters::getError().print("error: could not find shader parameter matching '%s'\n", field.name.begin()); - return SLANG_E_INVALID_ARG; + auto fieldCursor = dstCursor.getPath(field.name.getBuffer()); + if(!fieldCursor.isValid()) + { + StdWriters::getError().print("error: could not find shader parameter matching '%s'\n", field.name.begin()); + return SLANG_E_INVALID_ARG; + } + SLANG_RETURN_ON_FAIL(assign(fieldCursor, field.val)); } - - assign(fieldCursor, field.val); } return SLANG_OK; } @@ -329,7 +335,7 @@ struct AssignValsFromLayoutContext ComPtr<IShaderObject> shaderObject = device->createShaderObject(slangType); - assign(ShaderCursor(shaderObject), srcVal->contentVal); + SLANG_RETURN_ON_FAIL(assign(ShaderCursor(shaderObject), srcVal->contentVal)); dstCursor.setObject(shaderObject); return SLANG_OK; diff --git a/tools/render-test/shader-input-layout.cpp b/tools/render-test/shader-input-layout.cpp index c5f1cb6dd..4febc4bd5 100644 --- a/tools/render-test/shader-input-layout.cpp +++ b/tools/render-test/shader-input-layout.cpp @@ -504,10 +504,17 @@ namespace renderer_test val->contentVal = parseValExpr(parser); return val; } + else if( parser.AdvanceIf("out") ) + { + auto val = parseValExpr(parser); + val->isOutput = true; + return val; + } else { - // TODO: other named cases - throw ShaderInputLayoutFormatException(String("Unexpected '") + parser.NextToken().Content + String("' at line") + String(parser.NextToken().Position.Line)); + // We assume that any other word is introducing one of the other + // cases for a parse-able value. + return parseVal(parser); } } break; diff --git a/tools/render-test/slang-support.cpp b/tools/render-test/slang-support.cpp index aca354763..840b0d3e2 100644 --- a/tools/render-test/slang-support.cpp +++ b/tools/render-test/slang-support.cpp @@ -135,6 +135,10 @@ void ShaderCompilerUtil::Output::reset() { spSetPassThrough(slangRequest, input.passThrough); } + else + { + spSetCompileFlags(slangRequest, SLANG_COMPILE_FLAG_NO_CODEGEN); + } // Process any additional command-line options specified for Slang using // the `-xslang <arg>` option to `render-test`. |
