Merge pull request #10819 from Dentomologist/fix_shader_compilation_warnings

VideoCommon: Fix D3D shader compilation warnings
This commit is contained in:
JMC47 2022-07-08 18:46:29 -04:00 committed by GitHub
commit fac66897af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 8 deletions

View File

@ -219,7 +219,11 @@ ShaderCode GenerateGeometryShaderCode(APIType api_type, const ShaderHostConfig&
if (wireframe) if (wireframe)
out.Write("\tVS_OUTPUT first;\n"); out.Write("\tVS_OUTPUT first;\n");
out.Write("\tfor (int i = 0; i < {}; ++i) {{\n", vertex_in); // Avoid D3D warning about forced unrolling of single-iteration loop
if (vertex_in > 1)
out.Write("\tfor (int i = 0; i < {}; ++i) {{\n", vertex_in);
else
out.Write("\tint i = 0;\n");
if (api_type == APIType::OpenGL || api_type == APIType::Vulkan) if (api_type == APIType::OpenGL || api_type == APIType::Vulkan)
{ {
@ -310,7 +314,9 @@ ShaderCode GenerateGeometryShaderCode(APIType api_type, const ShaderHostConfig&
EmitVertex(out, host_config, uid_data, "f", api_type, wireframe, stereo, true); EmitVertex(out, host_config, uid_data, "f", api_type, wireframe, stereo, true);
} }
out.Write("\t}}\n"); // Only close loop if previous code was in one (See D3D warning above)
if (vertex_in > 1)
out.Write("\t}}\n");
EndPrimitive(out, host_config, uid_data, api_type, wireframe, stereo); EndPrimitive(out, host_config, uid_data, api_type, wireframe, stereo);

View File

@ -712,8 +712,8 @@ static void WriteXFBEncoder(ShaderCode& code, APIType api_type, const EFBCopyPar
WriteSampleColor(code, "rgb", "color1", 1, api_type, params); WriteSampleColor(code, "rgb", "color1", 1, api_type, params);
// Gamma is only applied to XFB copies. // Gamma is only applied to XFB copies.
code.Write(" color0 = pow(color0, float3(gamma_rcp, gamma_rcp, gamma_rcp));\n" code.Write(" color0 = pow(abs(color0), float3(gamma_rcp, gamma_rcp, gamma_rcp));\n"
" color1 = pow(color1, float3(gamma_rcp, gamma_rcp, gamma_rcp));\n"); " color1 = pow(abs(color1), float3(gamma_rcp, gamma_rcp, gamma_rcp));\n");
// Convert to YUV. // Convert to YUV.
code.Write(" const float3 y_const = float3(0.257, 0.504, 0.098);\n" code.Write(" const float3 y_const = float3(0.257, 0.504, 0.098);\n"

View File

@ -278,8 +278,8 @@ ShaderCode GeneratePixelShader(APIType api_type, const UidData* uid_data)
break; break;
case EFBCopyFormat::XFB: case EFBCopyFormat::XFB:
out.Write( out.Write(" ocol0 = float4(pow(abs(texcol.rgb), float3(gamma_rcp, gamma_rcp, gamma_rcp)), "
" ocol0 = float4(pow(texcol.rgb, float3(gamma_rcp, gamma_rcp, gamma_rcp)), 1.0f);\n"); "1.0f);\n");
break; break;
default: default:

View File

@ -827,8 +827,8 @@ ShaderCode GenPixelShader(APIType api_type, const ShaderHostConfig& host_config,
out.Write( out.Write(
" uint alpha_compare_op = alpha_scale << 1 | uint(alpha_op);\n" " uint alpha_compare_op = alpha_scale << 1 | uint(alpha_op);\n"
"\n" "\n"
" int alpha_A;\n" " int alpha_A = 0;\n"
" int alpha_B;\n" " int alpha_B = 0;\n"
" if (alpha_bias != 3u || alpha_compare_op > 5u) {{\n" " if (alpha_bias != 3u || alpha_compare_op > 5u) {{\n"
" // Small optimisation here: alpha_A and alpha_B are unused by compare ops 0-5\n" " // Small optimisation here: alpha_A and alpha_B are unused by compare ops 0-5\n"
" alpha_A = selectAlphaInput(s, ss, {0}colors_0, {0}colors_1, alpha_a) & 255;\n" " alpha_A = selectAlphaInput(s, ss, {0}colors_0, {0}colors_1, alpha_a) & 255;\n"