diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2011-12-29 00:32:06 -0600 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2011-12-29 00:32:06 -0600 |
| commit | 8a48b42e4c79e1d55e28c4d2f67ed72e39057a14 (patch) | |
| tree | 4ba379c351450144df7835a9f6b321267bd3b98d /Source/Core/VideoCommon | |
| parent | fbbea9bb9b30b8957f2c9229660b6cbfc801933f (diff) | |
Add support for Dual source blending to older ATI cards that don't support 420pack but do support GL_ARB_blend_func_extended. This is more proper as well anyways.
Diffstat (limited to 'Source/Core/VideoCommon')
| -rw-r--r-- | Source/Core/VideoCommon/Src/PixelShaderGen.cpp | 15 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/Src/VideoConfig.h | 1 |
2 files changed, 13 insertions, 3 deletions
diff --git a/Source/Core/VideoCommon/Src/PixelShaderGen.cpp b/Source/Core/VideoCommon/Src/PixelShaderGen.cpp index 277cd2e3e4..55a453c9b6 100644 --- a/Source/Core/VideoCommon/Src/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/Src/PixelShaderGen.cpp @@ -568,6 +568,8 @@ const char *GeneratePixelShaderCode(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType if (g_ActiveConfig.backend_info.bSupportsGLSLATTRBind) WRITE(p, "#extension GL_ARB_explicit_attrib_location : enable\n"); + if (g_ActiveConfig.backend_info.bSupportsGLSLBlend) + WRITE(p, "#extension GL_ARB_blend_func_extended : enable\n"); // Silly differences WRITE(p, "#define float2 vec2\n"); WRITE(p, "#define float3 vec3\n"); @@ -693,13 +695,20 @@ const char *GeneratePixelShaderCode(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType { // GLSL doesn't do main arguments // Once we switch to GLSL 1.3 we will bind a lot of these. - if (dstAlphaMode == DSTALPHA_DUAL_SOURCE_BLEND) { // This won't get hit unless we support GL 3.3 - WRITE(p, " layout(location = 0) out float4 ocol0;\n"); - WRITE(p, " layout(location = 0, index = 1) out float4 ocol1;\n"); // Will be supported later + if (g_ActiveConfig.backend_info.bSupportsGLSLBinding) + { + WRITE(p, " layout(location = 0) out float4 ocol0;\n"); + WRITE(p, " layout(location = 0, index = 1) out float4 ocol1;\n"); + } + else + { + WRITE(p, " out float4 ocol0;\n"); + WRITE(p, " out float4 ocol1;\n"); + } } else { diff --git a/Source/Core/VideoCommon/Src/VideoConfig.h b/Source/Core/VideoCommon/Src/VideoConfig.h index b8a7168dfe..d51d99d411 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.h +++ b/Source/Core/VideoCommon/Src/VideoConfig.h @@ -170,6 +170,7 @@ struct VideoConfig bool bSupportsGLSL; bool bSupportsGLSLBinding; + bool bSupportsGLSLBlend; bool bSupportsGLSLUBO; bool bSupportsGLSLATTRBind; bool bSupportsGLSLCache; |
