summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/TextureConversionShader.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2019-04-20 23:44:33 +1000
committerStenzek <stenzek@gmail.com>2019-04-20 23:44:33 +1000
commiteddde3e6c8d8ea37a724e66dbc82b432ae63df96 (patch)
treea11582e26fbd5060c1d9ab2abbaecb2a7af1e451 /Source/Core/VideoCommon/TextureConversionShader.cpp
parent4b1adab7856cb2dd28418a1d748a0e8cebf94a2f (diff)
ShaderGen: Use interface blocks when geometry shaders are supported
We don't use explicit locations in OpenGL currently, so this breaks when we use alternative names in the geometry shaders.
Diffstat (limited to 'Source/Core/VideoCommon/TextureConversionShader.cpp')
-rw-r--r--Source/Core/VideoCommon/TextureConversionShader.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/Source/Core/VideoCommon/TextureConversionShader.cpp b/Source/Core/VideoCommon/TextureConversionShader.cpp
index 29c7cccc1b..69a42e26d5 100644
--- a/Source/Core/VideoCommon/TextureConversionShader.cpp
+++ b/Source/Core/VideoCommon/TextureConversionShader.cpp
@@ -72,7 +72,16 @@ static void WriteHeader(char*& p, APIType ApiType)
WRITE(p, " float2 clamp_tb;\n");
WRITE(p, " float3 filter_coefficients;\n");
WRITE(p, "};\n");
- WRITE(p, "VARYING_LOCATION(0) in float3 v_tex0;\n");
+ if (g_ActiveConfig.backend_info.bSupportsGeometryShaders)
+ {
+ WRITE(p, "VARYING_LOCATION(0) in VertexData {\n");
+ WRITE(p, " float3 v_tex0;\n");
+ WRITE(p, "};\n");
+ }
+ else
+ {
+ WRITE(p, "VARYING_LOCATION(0) in float3 v_tex0;\n");
+ }
WRITE(p, "SAMPLER_BINDING(0) uniform sampler2DArray samp0;\n");
WRITE(p, "FRAGMENT_OUTPUT_LOCATION(0) out float4 ocol0;\n");
}
@@ -1510,7 +1519,16 @@ float4 DecodePixel(int val)
}
else
{
- ss << "VARYING_LOCATION(0) in float3 v_tex0;\n";
+ if (g_ActiveConfig.backend_info.bSupportsGeometryShaders)
+ {
+ ss << "VARYING_LOCATION(0) in VertexData {\n";
+ ss << " float3 v_tex0;\n";
+ ss << "};\n";
+ }
+ else
+ {
+ ss << "VARYING_LOCATION(0) in float3 v_tex0;\n";
+ }
ss << "FRAGMENT_OUTPUT_LOCATION(0) out float4 ocol0;\n";
ss << "void main() {\n";
ss << " float3 coords = v_tex0;\n";