SL-18869 Followup -- AMD compatibility pass.
parent
c2fef4b588
commit
984bdcd9d9
|
|
@ -86,9 +86,9 @@ void APIENTRY gl_debug_callback(GLenum source,
|
|||
const GLchar* message,
|
||||
GLvoid* userParam)
|
||||
{
|
||||
if (severity != GL_DEBUG_SEVERITY_HIGH // &&
|
||||
//severity != GL_DEBUG_SEVERITY_MEDIUM &&
|
||||
//severity != GL_DEBUG_SEVERITY_LOW
|
||||
if (severity != GL_DEBUG_SEVERITY_HIGH &&
|
||||
severity != GL_DEBUG_SEVERITY_MEDIUM &&
|
||||
severity != GL_DEBUG_SEVERITY_LOW
|
||||
)
|
||||
{ //suppress out-of-spec messages sent by nvidia driver (mostly vertexbuffer hints)
|
||||
return;
|
||||
|
|
@ -112,10 +112,28 @@ void APIENTRY gl_debug_callback(GLenum source,
|
|||
glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &vao);
|
||||
GLint vbo = 0;
|
||||
glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &vbo);
|
||||
GLint vbo_size = 0;
|
||||
if (vbo != 0)
|
||||
{
|
||||
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &vbo_size);
|
||||
}
|
||||
GLint ibo = 0;
|
||||
glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &ibo);
|
||||
|
||||
if (severity == GL_DEBUG_SEVERITY_HIGH)
|
||||
GLint ibo_size = 0;
|
||||
if (ibo != 0)
|
||||
{
|
||||
glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_SIZE, &ibo_size);
|
||||
}
|
||||
GLint ubo = 0;
|
||||
glGetIntegerv(GL_UNIFORM_BUFFER_BINDING, &ubo);
|
||||
GLint ubo_size = 0;
|
||||
GLint ubo_immutable = 0;
|
||||
if (ubo != 0)
|
||||
{
|
||||
glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_SIZE, &ubo_size);
|
||||
glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_IMMUTABLE_STORAGE, &ubo_immutable);
|
||||
}
|
||||
//if (severity == GL_DEBUG_SEVERITY_HIGH)
|
||||
{
|
||||
LL_ERRS() << "Halting on GL Error" << LL_ENDL;
|
||||
}
|
||||
|
|
@ -2393,12 +2411,13 @@ void LLGLState::checkStates(GLboolean writeAlpha)
|
|||
llassert_always(src == GL_SRC_ALPHA);
|
||||
llassert_always(dst == GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
GLboolean colorMask[4];
|
||||
glGetBooleanv(GL_COLOR_WRITEMASK, colorMask);
|
||||
llassert_always(colorMask[0]);
|
||||
llassert_always(colorMask[1]);
|
||||
llassert_always(colorMask[2]);
|
||||
llassert_always(colorMask[3] == writeAlpha);
|
||||
// disable for now until usage is consistent
|
||||
//GLboolean colorMask[4];
|
||||
//glGetBooleanv(GL_COLOR_WRITEMASK, colorMask);
|
||||
//llassert_always(colorMask[0]);
|
||||
//llassert_always(colorMask[1]);
|
||||
//llassert_always(colorMask[2]);
|
||||
// llassert_always(colorMask[3] == writeAlpha);
|
||||
|
||||
for (boost::unordered_map<LLGLenum, LLGLboolean>::iterator iter = sStateMap.begin();
|
||||
iter != sStateMap.end(); ++iter)
|
||||
|
|
|
|||
|
|
@ -260,19 +260,30 @@ static GLWorkQueue* sQueue = nullptr;
|
|||
static GLuint gen_buffer()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VERTEX;
|
||||
constexpr U32 pool_size = 4096;
|
||||
|
||||
thread_local static GLuint sNamePool[pool_size];
|
||||
thread_local static U32 sIndex = 0;
|
||||
|
||||
if (sIndex == 0)
|
||||
GLuint ret = 0;
|
||||
if (!gGLManager.mIsAMD)
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_VERTEX("gen buffer");
|
||||
sIndex = pool_size;
|
||||
glGenBuffers(pool_size, sNamePool);
|
||||
constexpr U32 pool_size = 4096;
|
||||
|
||||
thread_local static GLuint sNamePool[pool_size];
|
||||
thread_local static U32 sIndex = 0;
|
||||
|
||||
if (sIndex == 0)
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_VERTEX("gen buffer");
|
||||
sIndex = pool_size;
|
||||
glGenBuffers(pool_size, sNamePool);
|
||||
}
|
||||
|
||||
ret = sNamePool[--sIndex];
|
||||
}
|
||||
else
|
||||
{
|
||||
glGenBuffers(1, &ret);
|
||||
}
|
||||
|
||||
return sNamePool[--sIndex];
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define ANALYZE_VBO_POOL 0
|
||||
|
|
@ -725,7 +736,6 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
|
|||
llassert(mGLBuffer == sGLRenderBuffer);
|
||||
llassert(mGLIndices == sGLRenderIndices);
|
||||
gGL.syncMatrices();
|
||||
|
||||
glDrawRangeElements(sGLMode[mode], start, end, count, GL_UNSIGNED_SHORT,
|
||||
(GLvoid*) (indices_offset * sizeof(U16)));
|
||||
}
|
||||
|
|
@ -1144,7 +1154,8 @@ static void flush_vbo(GLenum target, U32 start, U32 end, void* data)
|
|||
LL_PROFILE_ZONE_NAMED_CATEGORY_VERTEX("glBufferSubData block");
|
||||
//LL_PROFILE_GPU_ZONE("glBufferSubData");
|
||||
U32 tend = llmin(i + block_size, end);
|
||||
glBufferSubData(target, i, tend - i+1, (U8*) data + (i-start));
|
||||
U32 size = tend - i + 1;
|
||||
glBufferSubData(target, i, size, (U8*) data + (i-start));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue