summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorTony Wasserka <neobrainx@gmail.com>2014-02-04 14:05:55 -0800
committerTony Wasserka <neobrainx@gmail.com>2014-02-04 14:05:55 -0800
commitaf24ed782d263ea20cd82107c4119ffe81fe1780 (patch)
tree27a90ffb172eaf49b6e202274b29edad9b099eb4 /Source/Core
parent00089433a6ce1ea4262eb86a7e206f1953a3f3b9 (diff)
parent6089e4470ab2636c9c8d697905ee79135e33072f (diff)
Merge pull request #14 from degasus/uboWorkaroundRemove
OGL: Remove non-UBO code path.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp157
-rw-r--r--Source/Core/VideoBackends/OGL/Render.cpp27
-rw-r--r--Source/Core/VideoBackends/OGL/VertexManager.cpp5
-rw-r--r--Source/Core/VideoCommon/PixelShaderGen.cpp24
-rw-r--r--Source/Core/VideoCommon/ShaderGenCommon.h8
-rw-r--r--Source/Core/VideoCommon/VertexShaderGen.cpp24
-rw-r--r--Source/Core/VideoCommon/VideoConfig.cpp1
-rw-r--r--Source/Core/VideoCommon/VideoConfig.h1
8 files changed, 67 insertions, 180 deletions
diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
index 000398c787..6804417938 100644
--- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
+++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
@@ -34,69 +34,13 @@ UidChecker<VertexShaderUid,VertexShaderCode> ProgramShaderCache::vertex_uid_chec
static char s_glsl_header[1024] = "";
-
-
-// Annoying sure, can be removed once we drop our UBO workaround
-
-const char *UniformNames[NUM_UNIFORMS] =
-{
- // PIXEL SHADER UNIFORMS
- I_COLORS,
- I_KCOLORS,
- I_ALPHA,
- I_TEXDIMS,
- I_ZBIAS ,
- I_INDTEXSCALE ,
- I_INDTEXMTX,
- I_FOG,
- I_PLIGHTS,
- I_PMATERIALS,
- // VERTEX SHADER UNIFORMS
- I_POSNORMALMATRIX,
- I_PROJECTION ,
- I_MATERIALS,
- I_LIGHTS,
- I_TEXMATRICES,
- I_TRANSFORMMATRICES ,
- I_NORMALMATRICES ,
- I_POSTTRANSFORMMATRICES,
- I_DEPTHPARAMS,
-};
-
-const static int PSVar_Loc[] = {
- offsetof(PixelShaderConstants, colors)/16,
- offsetof(PixelShaderConstants, kcolors)/16,
- offsetof(PixelShaderConstants, alpha)/16,
- offsetof(PixelShaderConstants, texdims)/16,
- offsetof(PixelShaderConstants, zbias)/16,
- offsetof(PixelShaderConstants, indtexscale)/16,
- offsetof(PixelShaderConstants, indtexmtx)/16,
- offsetof(PixelShaderConstants, fog)/16,
- offsetof(PixelShaderConstants, plights)/16,
- offsetof(PixelShaderConstants, pmaterials)/16,
-};
-
-const static int VSVar_Loc[] = {
- offsetof(VertexShaderConstants, posnormalmatrix)/16,
- offsetof(VertexShaderConstants, projection)/16,
- offsetof(VertexShaderConstants, materials)/16,
- offsetof(VertexShaderConstants, lights)/16,
- offsetof(VertexShaderConstants, texmatrices)/16,
- offsetof(VertexShaderConstants, transformmatrices)/16,
- offsetof(VertexShaderConstants, normalmatrices)/16,
- offsetof(VertexShaderConstants, posttransformmatrices)/16,
- offsetof(VertexShaderConstants, depthparams)/16,
-};
-
-// End of UBO workaround
-
void SHADER::SetProgramVariables()
{
// glsl shader must be bind to set samplers
Bind();
// Bind UBO
- if (g_ActiveConfig.backend_info.bSupportsGLSLUBO && !g_ActiveConfig.backend_info.bSupportShadingLanguage420pack)
+ if (!g_ActiveConfig.backend_info.bSupportShadingLanguage420pack)
{
GLint PSBlock_id = glGetUniformBlockIndex(glprogid, "PSBlock");
GLint VSBlock_id = glGetUniformBlockIndex(glprogid, "VSBlock");
@@ -107,34 +51,6 @@ void SHADER::SetProgramVariables()
glUniformBlockBinding(glprogid, VSBlock_id, 2);
}
- // UBO workaround
- if(!g_ActiveConfig.backend_info.bSupportsGLSLUBO)
- {
- for (int a = 0; a < NUM_UNIFORMS; ++a)
- {
- UniformLocations[a] = glGetUniformLocation(glprogid, UniformNames[a]);
- UniformSize[a] = 0;
- }
-
- int max_uniforms = 0;
- char name[50];
- int size;
-
- glGetProgramiv(glprogid, GL_ACTIVE_UNIFORMS, &max_uniforms);
- for(int i=0; i<max_uniforms; i++)
- {
- glGetActiveUniform(glprogid, i, sizeof(name), NULL, &size, NULL, name);
- for (int a = 0; a < NUM_UNIFORMS; ++a)
- {
- if(strstr(name, UniformNames[a]))
- {
- UniformSize[a] = size;
- break;
- }
- }
- }
- }
-
// Bind Texture Sampler
for (int a = 0; a <= 9; ++a)
{
@@ -189,48 +105,27 @@ void SHADER::Bind()
void ProgramShaderCache::UploadConstants()
{
- if(g_ActiveConfig.backend_info.bSupportsGLSLUBO)
+ if(PixelShaderManager::dirty || VertexShaderManager::dirty)
{
- if(PixelShaderManager::dirty || VertexShaderManager::dirty)
- {
- auto buffer = s_buffer->Map(s_ubo_buffer_size, s_ubo_align);
+ auto buffer = s_buffer->Map(s_ubo_buffer_size, s_ubo_align);
- memcpy(buffer.first,
- &PixelShaderManager::constants, sizeof(PixelShaderConstants));
+ memcpy(buffer.first,
+ &PixelShaderManager::constants, sizeof(PixelShaderConstants));
- memcpy(buffer.first + ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align),
- &VertexShaderManager::constants, sizeof(VertexShaderConstants));
+ memcpy(buffer.first + ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align),
+ &VertexShaderManager::constants, sizeof(VertexShaderConstants));
- s_buffer->Unmap(s_ubo_buffer_size);
- glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_buffer->m_buffer, buffer.second,
- sizeof(PixelShaderConstants));
- glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_buffer->m_buffer, buffer.second + ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align),
- sizeof(VertexShaderConstants));
+ s_buffer->Unmap(s_ubo_buffer_size);
+ glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_buffer->m_buffer, buffer.second,
+ sizeof(PixelShaderConstants));
+ glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_buffer->m_buffer, buffer.second + ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align),
+ sizeof(VertexShaderConstants));
- PixelShaderManager::dirty = false;
- VertexShaderManager::dirty = false;
-
- ADDSTAT(stats.thisFrame.bytesUniformStreamed, s_ubo_buffer_size);
- }
- }
- else
- {
- // UBO workaround
- // this must be updated per shader switch, so also update it when it's not dirty
- for (unsigned int a = 0; a < 10; ++a)
- {
- if(last_entry->shader.UniformSize[a] > 0)
- glUniform4fv(last_entry->shader.UniformLocations[a], last_entry->shader.UniformSize[a], (float*) &PixelShaderManager::constants + 4*PSVar_Loc[a]);
- }
- for (unsigned int a = 0; a < 9; ++a)
- {
- if(last_entry->shader.UniformSize[a+10] > 0)
- glUniform4fv(last_entry->shader.UniformLocations[a+10], last_entry->shader.UniformSize[a+10], (float*) &VertexShaderManager::constants + 4*VSVar_Loc[a]);
- }
+ PixelShaderManager::dirty = false;
+ VertexShaderManager::dirty = false;
ADDSTAT(stats.thisFrame.bytesUniformStreamed, s_ubo_buffer_size);
}
-
}
GLuint ProgramShaderCache::GetCurrentProgram(void)
@@ -462,17 +357,14 @@ void ProgramShaderCache::Init(void)
// We have to get the UBO alignment here because
// if we generate a buffer that isn't aligned
// then the UBO will fail.
- if (g_ActiveConfig.backend_info.bSupportsGLSLUBO)
- {
- glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &s_ubo_align);
+ glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &s_ubo_align);
- s_ubo_buffer_size = ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align) + ROUND_UP(sizeof(VertexShaderConstants), s_ubo_align);
+ s_ubo_buffer_size = ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align) + ROUND_UP(sizeof(VertexShaderConstants), s_ubo_align);
- // We multiply by *4*4 because we need to get down to basic machine units.
- // So multiply by four to get how many floats we have from vec4s
- // Then once more to get bytes
- s_buffer = StreamBuffer::Create(GL_UNIFORM_BUFFER, UBO_LENGTH);
- }
+ // We multiply by *4*4 because we need to get down to basic machine units.
+ // So multiply by four to get how many floats we have from vec4s
+ // Then once more to get bytes
+ s_buffer = StreamBuffer::Create(GL_UNIFORM_BUFFER, UBO_LENGTH);
// Read our shader cache, only if supported
if (g_ogl_config.bSupportsGLSLCache && !g_Config.bEnableShaderDebugging)
@@ -542,11 +434,8 @@ void ProgramShaderCache::Shutdown(void)
pixel_uid_checker.Invalidate();
vertex_uid_checker.Invalidate();
- if (g_ActiveConfig.backend_info.bSupportsGLSLUBO)
- {
- delete s_buffer;
- s_buffer = 0;
- }
+ delete s_buffer;
+ s_buffer = 0;
}
void ProgramShaderCache::CreateHeader ( void )
@@ -583,7 +472,7 @@ void ProgramShaderCache::CreateHeader ( void )
"%s\n"
, v==GLSLES3 ? "#version 300 es" : v==GLSL_130 ? "#version 130" : v==GLSL_140 ? "#version 140" : "#version 150"
- , g_ActiveConfig.backend_info.bSupportsGLSLUBO && v<GLSL_140 ? "#extension GL_ARB_uniform_buffer_object : enable" : ""
+ , v<GLSL_140 ? "#extension GL_ARB_uniform_buffer_object : enable" : ""
, g_ActiveConfig.backend_info.bSupportsEarlyZ ? "#extension GL_ARB_shader_image_load_store : enable" : ""
, g_ActiveConfig.backend_info.bSupportShadingLanguage420pack ? "#extension GL_ARB_shading_language_420pack : enable" : ""
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp
index 0cabbd0a10..8921fdd2ae 100644
--- a/Source/Core/VideoBackends/OGL/Render.cpp
+++ b/Source/Core/VideoBackends/OGL/Render.cpp
@@ -420,6 +420,21 @@ Renderer::Renderer()
bSuccess = false;
}
+ if (!GLExtensions::Supports("GL_ARB_uniform_buffer_object"))
+ {
+ // ubo allow us to keep the current constants on shader switches
+ // we also can stream them much nicer and pack into it whatever we want to
+ PanicAlert("GPU: OGL ERROR: Need GL_ARB_uniform_buffer_object.\n"
+ "GPU: Does your video card support OpenGL 3.1?");
+ bSuccess = false;
+ }
+ else if (DriverDetails::HasBug(DriverDetails::BUG_BROKENUBO))
+ {
+ PanicAlert("Buggy GPU driver detected.\n"
+ "Please either install the closed-source GPU driver or update your Mesa 3D version.");
+ bSuccess = false;
+ }
+
if (!GLExtensions::Supports("GL_ARB_sampler_objects") && bSuccess)
{
// Our sampler cache uses this extension. It could easyly be workaround and it's by far the
@@ -440,7 +455,6 @@ Renderer::Renderer()
}
g_Config.backend_info.bSupportsDualSourceBlend = GLExtensions::Supports("GL_ARB_blend_func_extended");
- g_Config.backend_info.bSupportsGLSLUBO = GLExtensions::Supports("GL_ARB_uniform_buffer_object") && !DriverDetails::HasBug(DriverDetails::BUG_ANNIHILATEDUBOS);
g_Config.backend_info.bSupportsPrimitiveRestart = !DriverDetails::HasBug(DriverDetails::BUG_PRIMITIVERESTART) &&
((GLExtensions::Version() >= 310) || GLExtensions::Supports("GL_NV_primitive_restart"));
g_Config.backend_info.bSupportsEarlyZ = GLExtensions::Supports("GL_ARB_shader_image_load_store");
@@ -520,14 +534,6 @@ Renderer::Renderer()
if(g_ogl_config.max_samples < 1)
g_ogl_config.max_samples = 1;
- if(g_Config.backend_info.bSupportsGLSLUBO && DriverDetails::HasBug(DriverDetails::BUG_BROKENUBO))
- {
- g_Config.backend_info.bSupportsGLSLUBO = false;
- ERROR_LOG(VIDEO, "Buggy driver detected. Disable UBO");
- OSD::AddMessage("Major performance warning: Buggy GPU driver detected.", 20000);
- OSD::AddMessage("Please either install the closed-source GPU driver or update your Mesa 3D version.", 20000);
- }
-
UpdateActiveConfig();
OSD::AddMessage(StringFromFormat("Video Info: %s, %s, %s",
@@ -535,9 +541,8 @@ Renderer::Renderer()
g_ogl_config.gl_renderer,
g_ogl_config.gl_version), 5000);
- WARN_LOG(VIDEO,"Missing OGL Extensions: %s%s%s%s%s%s%s%s%s%s%s",
+ WARN_LOG(VIDEO,"Missing OGL Extensions: %s%s%s%s%s%s%s%s%s%s",
g_ActiveConfig.backend_info.bSupportsDualSourceBlend ? "" : "DualSourceBlend ",
- g_ActiveConfig.backend_info.bSupportsGLSLUBO ? "" : "UniformBuffer ",
g_ActiveConfig.backend_info.bSupportsPrimitiveRestart ? "" : "PrimitiveRestart ",
g_ActiveConfig.backend_info.bSupportsEarlyZ ? "" : "EarlyZ ",
g_ogl_config.bSupportsGLPinnedMemory ? "" : "PinnedMemory ",
diff --git a/Source/Core/VideoBackends/OGL/VertexManager.cpp b/Source/Core/VideoBackends/OGL/VertexManager.cpp
index dba3874ec6..aed97e2ebd 100644
--- a/Source/Core/VideoBackends/OGL/VertexManager.cpp
+++ b/Source/Core/VideoBackends/OGL/VertexManager.cpp
@@ -186,11 +186,6 @@ void VertexManager::vFlush()
if (useDstAlpha && !dualSourcePossible)
{
ProgramShaderCache::SetShader(DSTALPHA_ALPHA_PASS,g_nativeVertexFmt->m_components);
- if (!g_ActiveConfig.backend_info.bSupportsGLSLUBO)
- {
- // Need to upload these again, if we don't support UBO
- ProgramShaderCache::UploadConstants();
- }
// only update alpha
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp
index 79d3a38835..eb9d79ed3d 100644
--- a/Source/Core/VideoCommon/PixelShaderGen.cpp
+++ b/Source/Core/VideoCommon/PixelShaderGen.cpp
@@ -283,23 +283,23 @@ static inline void GeneratePixelShader(T& out, DSTALPHA_MODE dstAlphaMode, API_T
}
out.Write("\n");
- if (g_ActiveConfig.backend_info.bSupportsGLSLUBO)
+ if (ApiType == API_OPENGL)
out.Write("layout(std140%s) uniform PSBlock {\n", g_ActiveConfig.backend_info.bSupportShadingLanguage420pack ? ", binding = 1" : "");
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_COLORS, "float4", I_COLORS"[4]");
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_KCOLORS, "float4", I_KCOLORS"[4]");
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_ALPHA, "float4", I_ALPHA"[1]"); // TODO: Why is this an array...-.-
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_TEXDIMS, "float4", I_TEXDIMS"[8]");
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_ZBIAS, "float4", I_ZBIAS"[2]");
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_INDTEXSCALE, "float4", I_INDTEXSCALE"[2]");
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_INDTEXMTX, "float4", I_INDTEXMTX"[6]");
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_FOG, "float4", I_FOG"[3]");
+ DeclareUniform(out, ApiType, C_COLORS, "float4", I_COLORS"[4]");
+ DeclareUniform(out, ApiType, C_KCOLORS, "float4", I_KCOLORS"[4]");
+ DeclareUniform(out, ApiType, C_ALPHA, "float4", I_ALPHA"[1]"); // TODO: Why is this an array...-.-
+ DeclareUniform(out, ApiType, C_TEXDIMS, "float4", I_TEXDIMS"[8]");
+ DeclareUniform(out, ApiType, C_ZBIAS, "float4", I_ZBIAS"[2]");
+ DeclareUniform(out, ApiType, C_INDTEXSCALE, "float4", I_INDTEXSCALE"[2]");
+ DeclareUniform(out, ApiType, C_INDTEXMTX, "float4", I_INDTEXMTX"[6]");
+ DeclareUniform(out, ApiType, C_FOG, "float4", I_FOG"[3]");
// For pixel lighting - TODO: Should only be defined when per pixel lighting is enabled!
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_PLIGHTS, "float4", I_PLIGHTS"[40]");
- DeclareUniform(out, ApiType, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_PMATERIALS, "float4", I_PMATERIALS"[4]");
+ DeclareUniform(out, ApiType, C_PLIGHTS, "float4", I_PLIGHTS"[40]");
+ DeclareUniform(out, ApiType, C_PMATERIALS, "float4", I_PMATERIALS"[4]");
- if (g_ActiveConfig.backend_info.bSupportsGLSLUBO)
+ if (ApiType == API_OPENGL)
out.Write("};\n");
if (ApiType == API_OPENGL)
diff --git a/Source/Core/VideoCommon/ShaderGenCommon.h b/Source/Core/VideoCommon/ShaderGenCommon.h
index b56e9f29ff..96db35d7bd 100644
--- a/Source/Core/VideoCommon/ShaderGenCommon.h
+++ b/Source/Core/VideoCommon/ShaderGenCommon.h
@@ -174,18 +174,18 @@ static inline void WriteRegister(T& object, API_TYPE ApiType, const char *prefix
}
template<class T>
-static inline void WriteLocation(T& object, API_TYPE ApiType, bool using_ubos)
+static inline void WriteLocation(T& object, API_TYPE ApiType)
{
- if (using_ubos)
+ if (ApiType == API_OPENGL)
return;
object.Write("uniform ");
}
template<class T>
-static inline void DeclareUniform(T& object, API_TYPE api_type, bool using_ubos, const u32 num, const char* type, const char* name)
+static inline void DeclareUniform(T& object, API_TYPE api_type, const u32 num, const char* type, const char* name)
{
- WriteLocation(object, api_type, using_ubos);
+ WriteLocation(object, api_type);
object.Write("%s %s ", type, name);
WriteRegister(object, api_type, "c", num);
object.Write(";\n");
diff --git a/Source/Core/VideoCommon/VertexShaderGen.cpp b/Source/Core/VideoCommon/VertexShaderGen.cpp
index b805b0459a..5d1855d8d9 100644
--- a/Source/Core/VideoCommon/VertexShaderGen.cpp
+++ b/Source/Core/VideoCommon/VertexShaderGen.cpp
@@ -83,20 +83,20 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ
_assert_(bpmem.genMode.numcolchans == xfregs.numChan.numColorChans);
// uniforms
- if (g_ActiveConfig.backend_info.bSupportsGLSLUBO)
+ if (api_type == API_OPENGL)
out.Write("layout(std140%s) uniform VSBlock {\n", g_ActiveConfig.backend_info.bSupportShadingLanguage420pack ? ", binding = 2" : "");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_POSNORMALMATRIX, "float4", I_POSNORMALMATRIX"[6]");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_PROJECTION, "float4", I_PROJECTION"[4]");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_MATERIALS, "float4", I_MATERIALS"[4]");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_LIGHTS, "float4", I_LIGHTS"[40]");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_TEXMATRICES, "float4", I_TEXMATRICES"[24]");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_TRANSFORMMATRICES, "float4", I_TRANSFORMMATRICES"[64]");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_NORMALMATRICES, "float4", I_NORMALMATRICES"[32]");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_POSTTRANSFORMMATRICES, "float4", I_POSTTRANSFORMMATRICES"[64]");
- DeclareUniform(out, api_type, g_ActiveConfig.backend_info.bSupportsGLSLUBO, C_DEPTHPARAMS, "float4", I_DEPTHPARAMS);
-
- if (g_ActiveConfig.backend_info.bSupportsGLSLUBO)
+ DeclareUniform(out, api_type, C_POSNORMALMATRIX, "float4", I_POSNORMALMATRIX"[6]");
+ DeclareUniform(out, api_type, C_PROJECTION, "float4", I_PROJECTION"[4]");
+ DeclareUniform(out, api_type, C_MATERIALS, "float4", I_MATERIALS"[4]");
+ DeclareUniform(out, api_type, C_LIGHTS, "float4", I_LIGHTS"[40]");
+ DeclareUniform(out, api_type, C_TEXMATRICES, "float4", I_TEXMATRICES"[24]");
+ DeclareUniform(out, api_type, C_TRANSFORMMATRICES, "float4", I_TRANSFORMMATRICES"[64]");
+ DeclareUniform(out, api_type, C_NORMALMATRICES, "float4", I_NORMALMATRICES"[32]");
+ DeclareUniform(out, api_type, C_POSTTRANSFORMMATRICES, "float4", I_POSTTRANSFORMMATRICES"[64]");
+ DeclareUniform(out, api_type, C_DEPTHPARAMS, "float4", I_DEPTHPARAMS);
+
+ if (api_type == API_OPENGL)
out.Write("};\n");
GenerateVSOutputStruct(out, api_type);
diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp
index 9de5aa5505..37c68786dd 100644
--- a/Source/Core/VideoCommon/VideoConfig.cpp
+++ b/Source/Core/VideoCommon/VideoConfig.cpp
@@ -215,7 +215,6 @@ void VideoConfig::VerifyValidity()
if (!backend_info.bSupports3DVision) b3DVision = false;
if (!backend_info.bSupportsFormatReinterpretation) bEFBEmulateFormatChanges = false;
if (!backend_info.bSupportsPixelLighting) bEnablePixelLighting = false;
- if (backend_info.APIType != API_OPENGL) backend_info.bSupportsGLSLUBO = false;
}
void VideoConfig::Save(const char *ini_file)
diff --git a/Source/Core/VideoCommon/VideoConfig.h b/Source/Core/VideoCommon/VideoConfig.h
index bbd1f6603e..08702e84ca 100644
--- a/Source/Core/VideoCommon/VideoConfig.h
+++ b/Source/Core/VideoCommon/VideoConfig.h
@@ -150,7 +150,6 @@ struct VideoConfig
bool bSupportsPrimitiveRestart;
bool bSupportsSeparateAlphaFunction;
bool bSupportsOversizedViewports;
- bool bSupportsGLSLUBO; // needed by PixelShaderGen, so must stay in VideoCommon
bool bSupportsEarlyZ; // needed by PixelShaderGen, so must stay in VideoCommon
bool bSupportShadingLanguage420pack; // needed by ShaderGen, so must stay in VideoCommon
} backend_info;