diff options
| author | Pierre Bourdon <delroth@gmail.com> | 2016-03-26 01:43:32 +0100 |
|---|---|---|
| committer | Pierre Bourdon <delroth@gmail.com> | 2016-03-26 01:43:32 +0100 |
| commit | ae4cb12033eb01df67cea1f054d44526fe093059 (patch) | |
| tree | e361642dc48ec2c7b53e8e4de8bc807e233a36e0 /Source/Core/VideoCommon/PixelShaderGen.cpp | |
| parent | 21eb1cd158268535e42f1fff80d122233677efd6 (diff) | |
| parent | 3ab7806e242d631f2fb034a23f354764ef6b9ee9 (diff) | |
Merge pull request #3719 from Sonicadvance1/workaround_osx_video_drivers
Workaround OS X video driver bug #24983074
Diffstat (limited to 'Source/Core/VideoCommon/PixelShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/PixelShaderGen.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp index e16ac28b8f..cc0ab52422 100644 --- a/Source/Core/VideoCommon/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/PixelShaderGen.cpp @@ -282,7 +282,7 @@ static T GeneratePixelShader(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType) } out.Write("struct VS_OUTPUT {\n"); - GenerateVSOutputMembers<T>(out, ApiType); + GenerateVSOutputMembers<T>(out, ApiType, ""); out.Write("};\n"); const bool forced_early_z = g_ActiveConfig.backend_info.bSupportsEarlyZ && bpmem.UseEarlyDepthTest() @@ -354,29 +354,30 @@ static T GeneratePixelShader(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType) uid_data->stereo = g_ActiveConfig.iStereoMode > 0; if (g_ActiveConfig.backend_info.bSupportsGeometryShaders) { + out.Write("// The interface block qualifier is duplicated to its member due to Apple OS X bug 24983074\n"); out.Write("in VertexData {\n"); - GenerateVSOutputMembers<T>(out, ApiType, GetInterpolationQualifier(ApiType, true, true)); + GenerateVSOutputMembers<T>(out, ApiType, "in", GetInterpolationQualifier()); if (g_ActiveConfig.iStereoMode > 0) - out.Write("\tflat int layer;\n"); + out.Write("\tflat in int layer;\n"); out.Write("};\n"); } else { - out.Write("%s in float4 colors_0;\n", GetInterpolationQualifier(ApiType)); - out.Write("%s in float4 colors_1;\n", GetInterpolationQualifier(ApiType)); + out.Write("%s in float4 colors_0;\n", GetInterpolationQualifier()); + out.Write("%s in float4 colors_1;\n", GetInterpolationQualifier()); // compute window position if needed because binding semantic WPOS is not widely supported // Let's set up attributes for (unsigned int i = 0; i < numTexgen; ++i) { - out.Write("%s in float3 uv%d;\n", GetInterpolationQualifier(ApiType), i); + out.Write("%s in float3 uv%d;\n", GetInterpolationQualifier(), i); } - out.Write("%s in float4 clipPos;\n", GetInterpolationQualifier(ApiType)); + out.Write("%s in float4 clipPos;\n", GetInterpolationQualifier()); if (g_ActiveConfig.bEnablePixelLighting) { - out.Write("%s in float3 Normal;\n", GetInterpolationQualifier(ApiType)); - out.Write("%s in float3 WorldPos;\n", GetInterpolationQualifier(ApiType)); + out.Write("%s in float3 Normal;\n", GetInterpolationQualifier()); + out.Write("%s in float3 WorldPos;\n", GetInterpolationQualifier()); } } @@ -397,17 +398,17 @@ static T GeneratePixelShader(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType) dstAlphaMode == DSTALPHA_DUAL_SOURCE_BLEND ? "\n out float4 ocol1 : SV_Target1," : "", per_pixel_depth ? "\n out float depth : SV_Depth," : ""); - out.Write(" in %s float4 colors_0 : COLOR0,\n", GetInterpolationQualifier(ApiType)); - out.Write(" in %s float4 colors_1 : COLOR1\n", GetInterpolationQualifier(ApiType)); + out.Write(" in %s float4 colors_0 : COLOR0,\n", GetInterpolationQualifier()); + out.Write(" in %s float4 colors_1 : COLOR1\n", GetInterpolationQualifier()); // compute window position if needed because binding semantic WPOS is not widely supported for (unsigned int i = 0; i < numTexgen; ++i) - out.Write(",\n in %s float3 uv%d : TEXCOORD%d", GetInterpolationQualifier(ApiType), i, i); - out.Write(",\n in %s float4 clipPos : TEXCOORD%d", GetInterpolationQualifier(ApiType), numTexgen); + out.Write(",\n in %s float3 uv%d : TEXCOORD%d", GetInterpolationQualifier(), i, i); + out.Write(",\n in %s float4 clipPos : TEXCOORD%d", GetInterpolationQualifier(), numTexgen); if (g_ActiveConfig.bEnablePixelLighting) { - out.Write(",\n in %s float3 Normal : TEXCOORD%d", GetInterpolationQualifier(ApiType), numTexgen + 1); - out.Write(",\n in %s float3 WorldPos : TEXCOORD%d", GetInterpolationQualifier(ApiType), numTexgen + 2); + out.Write(",\n in %s float3 Normal : TEXCOORD%d", GetInterpolationQualifier(), numTexgen + 1); + out.Write(",\n in %s float3 WorldPos : TEXCOORD%d", GetInterpolationQualifier(), numTexgen + 2); } uid_data->stereo = g_ActiveConfig.iStereoMode > 0; if (g_ActiveConfig.iStereoMode > 0) |
