Commit f38978ed by John Kessenich Committed by GitHub

Merge pull request #522 from steve-lunarg/glsl-binding-test

GLSL: Add IO map tests
parents 10f7fc73 ad0752e8
#version 450
uniform layout(binding=0) sampler g_sSamp1;
uniform sampler g_sSamp2;
uniform layout(binding=2) sampler g_sSamp3[2];
uniform sampler g_sSamp4[3];
uniform sampler g_sSamp5;
uniform sampler g_sSamp_unused1;
uniform sampler g_sSamp_unused2;
uniform layout(binding=1) texture1D g_tTex1;
uniform texture1D g_tTex2;
uniform layout(binding=3) texture1D g_tTex3[2];
uniform texture1D g_tTex4[3];
uniform texture1D g_tTex5;
uniform layout(binding=0) texture1D g_tTex_unused1;
uniform layout(binding=2) texture1D g_tTex_unused2;
uniform texture1D g_tTex_unused3;
struct MyStruct_t {
int a;
float b;
vec3 c;
};
uniform layout(binding=4) myblock {
MyStruct_t mystruct;
vec4 myvec4_a;
vec4 myvec4_b;
ivec4 myint4_a;
};
vec4 Func1()
{
return
texture(sampler1D(g_tTex1, g_sSamp1), 0.1) +
texture(sampler1D(g_tTex2, g_sSamp2), 0.2) +
texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) +
texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) +
texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) +
texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) +
texture(sampler1D(g_tTex5, g_sSamp5), 0.5) +
mystruct.c[1];
}
vec4 Func2()
{
return
texture(sampler1D(g_tTex1, g_sSamp1), 0.1) +
texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3);
}
// Not called from entry point:
vec4 Func2_unused()
{
return
texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) +
texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2);
}
out vec4 FragColor;
void main()
{
FragColor = Func1() + Func2();
}
#version 450
uniform layout(binding=0) sampler g_sSamp1;
uniform sampler g_sSamp2;
uniform layout(binding=2) sampler g_sSamp3[2];
uniform sampler g_sSamp4[3];
uniform sampler g_sSamp5;
uniform sampler g_sSamp_unused1;
uniform sampler g_sSamp_unused2;
uniform layout(binding=1) texture1D g_tTex1;
uniform texture1D g_tTex2;
uniform layout(binding=3) texture1D g_tTex3[2];
uniform texture1D g_tTex4[3];
uniform texture1D g_tTex5;
uniform layout(binding=0) texture1D g_tTex_unused1;
uniform layout(binding=2) texture1D g_tTex_unused2;
uniform texture1D g_tTex_unused3;
struct MyStruct_t {
int a;
float b;
vec3 c;
};
uniform layout(binding=4) myblock {
MyStruct_t mystruct;
vec4 myvec4_a;
vec4 myvec4_b;
ivec4 myint4_a;
};
vec4 Func1()
{
return
texture(sampler1D(g_tTex1, g_sSamp1), 0.1) +
texture(sampler1D(g_tTex2, g_sSamp2), 0.2) +
texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) +
texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) +
texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) +
texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) +
texture(sampler1D(g_tTex5, g_sSamp5), 0.5) +
mystruct.c[1];
}
vec4 Func2()
{
return
texture(sampler1D(g_tTex1, g_sSamp1), 0.1) +
texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3);
}
// Not called from entry point:
vec4 Func2_unused()
{
return
texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) +
texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2);
}
out vec4 FragColor;
void main()
{
FragColor = Func1() + Func2();
}
// //
// Copyright (C) 2016 Google, Inc. // Copyright (C) 2016 Google, Inc.
// //
// All rights reserved. // All rights reserved.
...@@ -65,7 +65,8 @@ using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::strin ...@@ -65,7 +65,8 @@ using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::strin
using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>; using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>; using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
using VulkanAstSemantics = GlslangTest<::testing::TestWithParam<std::string>>; using VulkanAstSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
using HlslSemantics = GlslangTest<::testing::TestWithParam<IoMapData>>; using HlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
using GlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
// generate SPIR-V. // generate SPIR-V.
...@@ -112,7 +113,7 @@ TEST_P(VulkanAstSemantics, FromFile) ...@@ -112,7 +113,7 @@ TEST_P(VulkanAstSemantics, FromFile)
} }
// HLSL-level Vulkan semantics tests. // HLSL-level Vulkan semantics tests.
TEST_P(HlslSemantics, FromFile) TEST_P(HlslIoMap, FromFile)
{ {
loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName, loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
Source::HLSL, Semantics::Vulkan, Source::HLSL, Semantics::Vulkan,
...@@ -124,6 +125,19 @@ TEST_P(HlslSemantics, FromFile) ...@@ -124,6 +125,19 @@ TEST_P(HlslSemantics, FromFile)
GetParam().flattenUniforms); GetParam().flattenUniforms);
} }
// GLSL-level Vulkan semantics tests.
TEST_P(GlslIoMap, FromFile)
{
loadFileCompileIoMapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
Source::GLSL, Semantics::Vulkan,
Target::Spv, GetParam().entryPoint,
GetParam().baseSamplerBinding,
GetParam().baseTextureBinding,
GetParam().baseUboBinding,
GetParam().autoMapBindings,
GetParam().flattenUniforms);
}
// clang-format off // clang-format off
INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P(
Glsl, CompileVulkanToSpirvTest, Glsl, CompileVulkanToSpirvTest,
...@@ -251,7 +265,7 @@ INSTANTIATE_TEST_CASE_P( ...@@ -251,7 +265,7 @@ INSTANTIATE_TEST_CASE_P(
// clang-format off // clang-format off
INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P(
Hlsl, HlslSemantics, Hlsl, HlslIoMap,
::testing::ValuesIn(std::vector<IoMapData>{ ::testing::ValuesIn(std::vector<IoMapData>{
{ "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false }, { "spv.register.autoassign.frag", "main_ep", 5, 10, 15, true, false },
{ "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false },
...@@ -262,6 +276,16 @@ INSTANTIATE_TEST_CASE_P( ...@@ -262,6 +276,16 @@ INSTANTIATE_TEST_CASE_P(
// clang-format off // clang-format off
INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P(
Hlsl, GlslIoMap,
::testing::ValuesIn(std::vector<IoMapData>{
{ "spv.glsl.register.autoassign.frag", "main", 5, 10, 15, true, false },
{ "spv.glsl.register.noautoassign.frag", "main", 5, 10, 15, false, false },
}),
FileNameAsCustomTestSuffixIoMap
);
// clang-format off
INSTANTIATE_TEST_CASE_P(
Glsl, CompileOpenGLToSpirvTest, Glsl, CompileOpenGLToSpirvTest,
::testing::ValuesIn(std::vector<std::string>({ ::testing::ValuesIn(std::vector<std::string>({
"spv.atomic.comp", "spv.atomic.comp",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment