|
@@ -298,6 +298,11 @@ public:
|
|
|
TEST_METHOD(CompileWhenRecursiveAlbeitStaticTermThenFail)
|
|
|
TEST_METHOD(CompileWhenRecursiveThenFail)
|
|
|
|
|
|
+ TEST_METHOD(CompileHlsl2015ThenFail)
|
|
|
+ TEST_METHOD(CompileHlsl2016ThenOK)
|
|
|
+ TEST_METHOD(CompileHlsl2017ThenOK)
|
|
|
+ TEST_METHOD(CompileHlsl2018ThenFail)
|
|
|
+
|
|
|
TEST_METHOD(CodeGenAbs1)
|
|
|
TEST_METHOD(CodeGenAbs2)
|
|
|
TEST_METHOD(CodeGenAllLit)
|
|
@@ -2033,6 +2038,87 @@ TEST_F(CompilerTest, CompileWhenRecursiveThenFail) {
|
|
|
VerifyCompileFailed(ShaderTextMissing, L"vs_6_0", "missing entry point definition");
|
|
|
}
|
|
|
|
|
|
+TEST_F(CompilerTest, CompileHlsl2015ThenFail) {
|
|
|
+ CComPtr<IDxcCompiler> pCompiler;
|
|
|
+ CComPtr<IDxcOperationResult> pResult;
|
|
|
+ CComPtr<IDxcBlobEncoding> pSource;
|
|
|
+ CComPtr<IDxcBlobEncoding> pErrors;
|
|
|
+
|
|
|
+ VERIFY_SUCCEEDED(CreateCompiler(&pCompiler));
|
|
|
+ CreateBlobFromText("float4 main(float4 pos : SV_Position) : SV_Target { return pos; }", &pSource);
|
|
|
+
|
|
|
+ LPCWSTR args[2] = { L"-HV", L"2015" };
|
|
|
+
|
|
|
+ VERIFY_SUCCEEDED(pCompiler->Compile(pSource, L"source.hlsl", L"main",
|
|
|
+ L"ps_6_0", args, 2, nullptr, 0, nullptr, &pResult));
|
|
|
+
|
|
|
+ HRESULT status;
|
|
|
+ VERIFY_SUCCEEDED(pResult->GetStatus(&status));
|
|
|
+ VERIFY_ARE_EQUAL(status, E_INVALIDARG);
|
|
|
+ VERIFY_SUCCEEDED(pResult->GetErrorBuffer(&pErrors));
|
|
|
+ LPCSTR pErrorMsg = "HLSL Version 2015 is only supported for language services";
|
|
|
+ CheckOperationResultMsgs(pResult, &pErrorMsg, 1, false, false);
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(CompilerTest, CompileHlsl2016ThenOK) {
|
|
|
+ CComPtr<IDxcCompiler> pCompiler;
|
|
|
+ CComPtr<IDxcOperationResult> pResult;
|
|
|
+ CComPtr<IDxcBlobEncoding> pSource;
|
|
|
+ CComPtr<IDxcBlobEncoding> pErrors;
|
|
|
+
|
|
|
+ VERIFY_SUCCEEDED(CreateCompiler(&pCompiler));
|
|
|
+ CreateBlobFromText("float4 main(float4 pos : SV_Position) : SV_Target { return pos; }", &pSource);
|
|
|
+
|
|
|
+ LPCWSTR args[2] = { L"-HV", L"2016" };
|
|
|
+
|
|
|
+ VERIFY_SUCCEEDED(pCompiler->Compile(pSource, L"source.hlsl", L"main",
|
|
|
+ L"ps_6_0", args, 2, nullptr, 0, nullptr, &pResult));
|
|
|
+
|
|
|
+ HRESULT status;
|
|
|
+ VERIFY_SUCCEEDED(pResult->GetStatus(&status));
|
|
|
+ VERIFY_SUCCEEDED(status);
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(CompilerTest, CompileHlsl2017ThenOK) {
|
|
|
+ CComPtr<IDxcCompiler> pCompiler;
|
|
|
+ CComPtr<IDxcOperationResult> pResult;
|
|
|
+ CComPtr<IDxcBlobEncoding> pSource;
|
|
|
+ CComPtr<IDxcBlobEncoding> pErrors;
|
|
|
+
|
|
|
+ VERIFY_SUCCEEDED(CreateCompiler(&pCompiler));
|
|
|
+ CreateBlobFromText("float4 main(float4 pos : SV_Position) : SV_Target { return pos; }", &pSource);
|
|
|
+
|
|
|
+ LPCWSTR args[2] = { L"-HV", L"2017" };
|
|
|
+
|
|
|
+ VERIFY_SUCCEEDED(pCompiler->Compile(pSource, L"source.hlsl", L"main",
|
|
|
+ L"ps_6_0", args, 2, nullptr, 0, nullptr, &pResult));
|
|
|
+
|
|
|
+ HRESULT status;
|
|
|
+ VERIFY_SUCCEEDED(pResult->GetStatus(&status));
|
|
|
+ VERIFY_SUCCEEDED(status);
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(CompilerTest, CompileHlsl2018ThenFail) {
|
|
|
+ CComPtr<IDxcCompiler> pCompiler;
|
|
|
+ CComPtr<IDxcOperationResult> pResult;
|
|
|
+ CComPtr<IDxcBlobEncoding> pSource;
|
|
|
+ CComPtr<IDxcBlobEncoding> pErrors;
|
|
|
+
|
|
|
+ VERIFY_SUCCEEDED(CreateCompiler(&pCompiler));
|
|
|
+ CreateBlobFromText("float4 main(float4 pos : SV_Position) : SV_Target { return pos; }", &pSource);
|
|
|
+
|
|
|
+ LPCWSTR args[2] = { L"-HV", L"2018" };
|
|
|
+
|
|
|
+ VERIFY_SUCCEEDED(pCompiler->Compile(pSource, L"source.hlsl", L"main",
|
|
|
+ L"ps_6_0", args, 2, nullptr, 0, nullptr, &pResult));
|
|
|
+
|
|
|
+ HRESULT status;
|
|
|
+ VERIFY_SUCCEEDED(pResult->GetStatus(&status));
|
|
|
+ VERIFY_ARE_EQUAL(status, E_INVALIDARG);
|
|
|
+ VERIFY_SUCCEEDED(pResult->GetErrorBuffer(&pErrors));
|
|
|
+ LPCSTR pErrorMsg = "Unknown HLSL version";
|
|
|
+ CheckOperationResultMsgs(pResult, &pErrorMsg, 1, false, false);
|
|
|
+}
|
|
|
|
|
|
TEST_F(CompilerTest, CodeGenAbs1) {
|
|
|
CodeGenTestCheck(L"..\\CodeGenHLSL\\abs1.hlsl");
|