summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Src/TextureConversionShader.cpp
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2011-12-08 01:51:08 -0600
committerSonicadvance1 <sonicadvance1@RH-Live.(none)>2012-10-09 23:37:52 -0500
commitcf68cc0c611f261ad0168bda8b354331f07a77ff (patch)
treeed59f840ead3e0470dab38b3e76bc36a55952e42 /Source/Core/VideoCommon/Src/TextureConversionShader.cpp
parent081ad949ce46b54288d1dc823048bb6ab202f254 (diff)
Add support for GL_ARB_shading_language_420pack so we don't have to binding sampler locations. Also add support for GL_ARB_separate_shader_objects which doesn't currently work for some reason....investigating.
Diffstat (limited to 'Source/Core/VideoCommon/Src/TextureConversionShader.cpp')
-rw-r--r--Source/Core/VideoCommon/Src/TextureConversionShader.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/Source/Core/VideoCommon/Src/TextureConversionShader.cpp b/Source/Core/VideoCommon/Src/TextureConversionShader.cpp
index a6dfdd38af..8e45955d4a 100644
--- a/Source/Core/VideoCommon/Src/TextureConversionShader.cpp
+++ b/Source/Core/VideoCommon/Src/TextureConversionShader.cpp
@@ -26,6 +26,7 @@
#include "PixelShaderGen.h"
#include "BPMemory.h"
#include "RenderBase.h"
+#include "VideoConfig.h"
#define WRITE p+=sprintf
@@ -92,6 +93,8 @@ void WriteSwizzler(char*& p, u32 format, API_TYPE ApiType)
}
else if (ApiType == API_GLSL)
{
+ if (g_ActiveConfig.backend_info.bSupportsGLSLBinding)
+ WRITE(p, "layout(binding = 0) ");
WRITE(p, "uniform sampler2DRect samp0;\n");
}
else if (ApiType & API_D3D9)
@@ -177,6 +180,8 @@ void Write32BitSwizzler(char*& p, u32 format, API_TYPE ApiType)
}
else if (ApiType == API_GLSL)
{
+ if (g_ActiveConfig.backend_info.bSupportsGLSLBinding)
+ WRITE(p, "layout(binding = 0) ");
WRITE(p, "uniform sampler2DRect samp0;\n");
}
else if (ApiType & API_D3D9)
@@ -834,7 +839,13 @@ const char *GenerateEncodingShader(u32 format,API_TYPE ApiType)
if(ApiType == API_GLSL)
{
// A few required defines and ones that will make our lives a lot easier
- WRITE(p, "#version 120\n");
+ if (g_ActiveConfig.backend_info.bSupportsGLSLBinding)
+ {
+ WRITE(p, "#version 330 compatibility\n");
+ WRITE(p, "#extension GL_ARB_shading_language_420pack : enable\n");
+ }
+ else
+ WRITE(p, "#version 120\n");
// Silly differences
WRITE(p, "#define float2 vec2\n");
WRITE(p, "#define float3 vec3\n");