Only check shader compilation status in debug or with DEBUG_GLSL defined. invalidate range on bindbufferrange since we don't care about what is in the range. Both give a performance boost for me.

This commit is contained in:
Ryan Houdek 2013-01-26 11:24:24 -06:00
parent 3a52b37c3b
commit 4fadb65259
3 changed files with 5 additions and 4 deletions

View File

@ -133,7 +133,7 @@ bool PixelShaderCache::CompilePixelShader(FRAGMENTSHADER& ps, const char* pstrpr
glShaderSource(result, 1, &pstrprogram, NULL); glShaderSource(result, 1, &pstrprogram, NULL);
glCompileShader(result); glCompileShader(result);
#if defined(_DEBUG) || defined(DEBUGFAST) || defined(DEBUG_GLSL)
GLsizei length = 0; GLsizei length = 0;
glGetShaderiv(result, GL_INFO_LOG_LENGTH, &length); glGetShaderiv(result, GL_INFO_LOG_LENGTH, &length);
if (length > 1) if (length > 1)
@ -161,7 +161,7 @@ bool PixelShaderCache::CompilePixelShader(FRAGMENTSHADER& ps, const char* pstrpr
glDeleteShader(result); glDeleteShader(result);
return false; return false;
} }
#endif
(void)GL_REPORT_ERROR(); (void)GL_REPORT_ERROR();
ps.glprogid = result; ps.glprogid = result;
return true; return true;

View File

@ -200,7 +200,7 @@ void ProgramShaderCache::UploadConstants()
glBufferData(GL_UNIFORM_BUFFER, UBO_LENGTH, NULL, GL_STREAM_DRAW); glBufferData(GL_UNIFORM_BUFFER, UBO_LENGTH, NULL, GL_STREAM_DRAW);
s_ubo_iterator = 0; s_ubo_iterator = 0;
} }
void *ubo = glMapBufferRange(GL_UNIFORM_BUFFER, s_ubo_iterator, s_ubo_buffer_size, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT); void *ubo = glMapBufferRange(GL_UNIFORM_BUFFER, s_ubo_iterator, s_ubo_buffer_size, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_RANGE_BIT);
memcpy(ubo, s_ubo_buffer, s_ubo_buffer_size); memcpy(ubo, s_ubo_buffer, s_ubo_buffer_size);
glUnmapBuffer(GL_UNIFORM_BUFFER); glUnmapBuffer(GL_UNIFORM_BUFFER);

View File

@ -119,7 +119,7 @@ bool VertexShaderCache::CompileVertexShader(VERTEXSHADER& vs, const char* pstrpr
glShaderSource(result, 1, &pstrprogram, NULL); glShaderSource(result, 1, &pstrprogram, NULL);
glCompileShader(result); glCompileShader(result);
#if defined(_DEBUG) || defined(DEBUGFAST) || defined(DEBUG_GLSL)
GLsizei length = 0; GLsizei length = 0;
glGetShaderiv(result, GL_INFO_LOG_LENGTH, &length); glGetShaderiv(result, GL_INFO_LOG_LENGTH, &length);
if (length > 1) if (length > 1)
@ -147,6 +147,7 @@ bool VertexShaderCache::CompileVertexShader(VERTEXSHADER& vs, const char* pstrpr
glDeleteShader(result); glDeleteShader(result);
return false; return false;
} }
#endif
(void)GL_REPORT_ERROR(); (void)GL_REPORT_ERROR();
vs.glprogid = result; vs.glprogid = result;
return true; return true;