Remove using some non-GLES features from GL manager/renderstate/replay

This commit is contained in:
Janos Pantos
2017-04-03 07:18:31 -07:00
committed by Baldur Karlsson
parent e110b759d3
commit 1a6b19a314
3 changed files with 30 additions and 12 deletions
+10 -3
View File
@@ -642,7 +642,9 @@ void GLResourceManager::PrepareTextureInitialContents(ResourceId liveid, Resourc
gl.glGetTextureParameterfvEXT(res.name, details.curType, eGL_TEXTURE_MAX_LOD, &state->maxLod);
gl.glGetTextureParameterfvEXT(res.name, details.curType, eGL_TEXTURE_BORDER_COLOR,
&state->border[0]);
gl.glGetTextureParameterfvEXT(res.name, details.curType, eGL_TEXTURE_LOD_BIAS, &state->lodBias);
if(!IsGLES)
gl.glGetTextureParameterfvEXT(res.name, details.curType, eGL_TEXTURE_LOD_BIAS,
&state->lodBias);
// CLAMP isn't supported (border texels gone), assume they meant CLAMP_TO_EDGE
if(state->wrap[0] == eGL_CLAMP)
@@ -2012,7 +2014,9 @@ void GLResourceManager::Apply_InitialState(GLResource live, InitialContentData i
(GLint *)&state->wrap[2]);
gl.glTextureParameterfvEXT(live.name, details.curType, eGL_TEXTURE_BORDER_COLOR,
state->border);
gl.glTextureParameterfvEXT(live.name, details.curType, eGL_TEXTURE_LOD_BIAS, &state->lodBias);
if(!IsGLES)
gl.glTextureParameterfvEXT(live.name, details.curType, eGL_TEXTURE_LOD_BIAS,
&state->lodBias);
if(details.curType != eGL_TEXTURE_RECTANGLE)
{
gl.glTextureParameterfvEXT(live.name, details.curType, eGL_TEXTURE_MIN_LOD, &state->minLod);
@@ -2145,7 +2149,10 @@ void GLResourceManager::Apply_InitialState(GLResource live, InitialContentData i
if(data->ReadBuffer == eGL_BACK || data->ReadBuffer == eGL_FRONT)
data->ReadBuffer = eGL_COLOR_ATTACHMENT0;
gl.glDrawBuffers(ARRAY_COUNT(data->DrawBuffers), data->DrawBuffers);
GLuint maxDraws = 0;
gl.glGetIntegerv(eGL_MAX_DRAW_BUFFERS, (GLint *)&maxDraws);
gl.glDrawBuffers(RDCMIN(maxDraws, (GLuint)ARRAY_COUNT(data->DrawBuffers)), data->DrawBuffers);
gl.glReadBuffer(data->ReadBuffer);
+18 -8
View File
@@ -717,7 +717,8 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
m_Real->glGetFloatv(eGL_POINT_SIZE, &PointSize);
}
m_Real->glGetIntegerv(eGL_PRIMITIVE_RESTART_INDEX, (GLint *)&PrimitiveRestartIndex);
if(!IsGLES)
m_Real->glGetIntegerv(eGL_PRIMITIVE_RESTART_INDEX, (GLint *)&PrimitiveRestartIndex);
if(HasExt[ARB_clip_control])
{
m_Real->glGetIntegerv(eGL_CLIP_ORIGIN, (GLint *)&ClipOrigin);
@@ -728,7 +729,8 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
ClipOrigin = eGL_LOWER_LEFT;
ClipDepth = eGL_NEGATIVE_ONE_TO_ONE;
}
m_Real->glGetIntegerv(eGL_PROVOKING_VERTEX, (GLint *)&ProvokingVertex);
if(!IsGLES)
m_Real->glGetIntegerv(eGL_PROVOKING_VERTEX, (GLint *)&ProvokingVertex);
m_Real->glGetIntegerv(eGL_CURRENT_PROGRAM, (GLint *)&Program);
@@ -1028,14 +1030,17 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
m_Real->glGetFloatv(eGL_COLOR_CLEAR_VALUE, &ColorClearValue.red);
if(HasExt[ARB_tessellation_shader])
{
m_Real->glGetIntegerv(eGL_PATCH_VERTICES, &PatchParams.numVerts);
else
PatchParams.numVerts = 3;
if(!IsGLES && HasExt[ARB_tessellation_shader])
{
m_Real->glGetFloatv(eGL_PATCH_DEFAULT_INNER_LEVEL, &PatchParams.defaultInnerLevel[0]);
m_Real->glGetFloatv(eGL_PATCH_DEFAULT_OUTER_LEVEL, &PatchParams.defaultOuterLevel[0]);
}
else
{
PatchParams.numVerts = 3;
PatchParams.defaultInnerLevel[0] = PatchParams.defaultInnerLevel[1] = 1.0f;
PatchParams.defaultOuterLevel[0] = PatchParams.defaultOuterLevel[1] =
PatchParams.defaultOuterLevel[2] = PatchParams.defaultOuterLevel[3] = 1.0f;
@@ -1152,10 +1157,12 @@ void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl)
m_Real->glPointSize(PointSize);
}
m_Real->glPrimitiveRestartIndex(PrimitiveRestartIndex);
if(!IsGLES)
m_Real->glPrimitiveRestartIndex(PrimitiveRestartIndex);
if(m_Real->glClipControl && HasExt[ARB_clip_control])
m_Real->glClipControl(ClipOrigin, ClipDepth);
m_Real->glProvokingVertex(ProvokingVertex);
if(!IsGLES)
m_Real->glProvokingVertex(ProvokingVertex);
m_Real->glUseProgram(Program);
if(HasExt[ARB_separate_shader_objects])
@@ -1404,8 +1411,11 @@ void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl)
if(HasExt[ARB_tessellation_shader])
{
m_Real->glPatchParameteri(eGL_PATCH_VERTICES, PatchParams.numVerts);
m_Real->glPatchParameterfv(eGL_PATCH_DEFAULT_INNER_LEVEL, PatchParams.defaultInnerLevel);
m_Real->glPatchParameterfv(eGL_PATCH_DEFAULT_OUTER_LEVEL, PatchParams.defaultOuterLevel);
if(!IsGLES)
{
m_Real->glPatchParameterfv(eGL_PATCH_DEFAULT_INNER_LEVEL, PatchParams.defaultInnerLevel);
m_Real->glPatchParameterfv(eGL_PATCH_DEFAULT_OUTER_LEVEL, PatchParams.defaultOuterLevel);
}
}
m_Real->glPolygonMode(eGL_FRONT_AND_BACK, PolygonMode);
+2 -1
View File
@@ -1450,7 +1450,8 @@ void GLReplay::SavePipelineState()
gl.glGetTexParameterfv(target, eGL_TEXTURE_MAX_LOD, &pipe.Samplers[unit].MaxLOD);
gl.glGetTexParameterfv(target, eGL_TEXTURE_MIN_LOD, &pipe.Samplers[unit].MinLOD);
gl.glGetTexParameterfv(target, eGL_TEXTURE_LOD_BIAS, &pipe.Samplers[unit].MipLODBias);
if(!IsGLES)
gl.glGetTexParameterfv(target, eGL_TEXTURE_LOD_BIAS, &pipe.Samplers[unit].MipLODBias);
}
else
{