Commit bb2f2c43 by jchen10 Committed by Commit Bot

Squash State dirty bits for CHROMIUM_path_rendering

Currently we limit the maximum of State bits to 64 for performance consideration. To accommodate new ES31 states, we have to pick and squash some existing bits which are less hot. Bug: angleproject:2814 Change-Id: I8fc19286bbf8d8273949da8d986a8b1587fa105e Reviewed-on: https://chromium-review.googlesource.com/1227069Reviewed-by: 's avatarJie A Chen <jie.a.chen@intel.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
parent 017bda42
...@@ -1827,12 +1827,12 @@ void State::loadPathRenderingMatrix(GLenum matrixMode, const GLfloat *matrix) ...@@ -1827,12 +1827,12 @@ void State::loadPathRenderingMatrix(GLenum matrixMode, const GLfloat *matrix)
if (matrixMode == GL_PATH_MODELVIEW_CHROMIUM) if (matrixMode == GL_PATH_MODELVIEW_CHROMIUM)
{ {
memcpy(mPathMatrixMV, matrix, 16 * sizeof(GLfloat)); memcpy(mPathMatrixMV, matrix, 16 * sizeof(GLfloat));
mDirtyBits.set(DIRTY_BIT_PATH_RENDERING_MATRIX_MV); mDirtyBits.set(DIRTY_BIT_PATH_RENDERING);
} }
else if (matrixMode == GL_PATH_PROJECTION_CHROMIUM) else if (matrixMode == GL_PATH_PROJECTION_CHROMIUM)
{ {
memcpy(mPathMatrixProj, matrix, 16 * sizeof(GLfloat)); memcpy(mPathMatrixProj, matrix, 16 * sizeof(GLfloat));
mDirtyBits.set(DIRTY_BIT_PATH_RENDERING_MATRIX_PROJ); mDirtyBits.set(DIRTY_BIT_PATH_RENDERING);
} }
else else
{ {
...@@ -1860,7 +1860,7 @@ void State::setPathStencilFunc(GLenum func, GLint ref, GLuint mask) ...@@ -1860,7 +1860,7 @@ void State::setPathStencilFunc(GLenum func, GLint ref, GLuint mask)
mPathStencilFunc = func; mPathStencilFunc = func;
mPathStencilRef = ref; mPathStencilRef = ref;
mPathStencilMask = mask; mPathStencilMask = mask;
mDirtyBits.set(DIRTY_BIT_PATH_RENDERING_STENCIL_STATE); mDirtyBits.set(DIRTY_BIT_PATH_RENDERING);
} }
GLenum State::getPathStencilFunc() const GLenum State::getPathStencilFunc() const
......
...@@ -420,10 +420,8 @@ class State : angle::NonCopyable ...@@ -420,10 +420,8 @@ class State : angle::NonCopyable
DIRTY_BIT_TRANSFORM_FEEDBACK_BINDING, DIRTY_BIT_TRANSFORM_FEEDBACK_BINDING,
DIRTY_BIT_MULTISAMPLING, DIRTY_BIT_MULTISAMPLING,
DIRTY_BIT_SAMPLE_ALPHA_TO_ONE, DIRTY_BIT_SAMPLE_ALPHA_TO_ONE,
DIRTY_BIT_COVERAGE_MODULATION, // CHROMIUM_framebuffer_mixed_samples DIRTY_BIT_COVERAGE_MODULATION, // CHROMIUM_framebuffer_mixed_samples
DIRTY_BIT_PATH_RENDERING_MATRIX_MV, // CHROMIUM_path_rendering path model view matrix DIRTY_BIT_PATH_RENDERING,
DIRTY_BIT_PATH_RENDERING_MATRIX_PROJ, // CHROMIUM_path_rendering path projection matrix
DIRTY_BIT_PATH_RENDERING_STENCIL_STATE,
DIRTY_BIT_FRAMEBUFFER_SRGB, // GL_EXT_sRGB_write_control DIRTY_BIT_FRAMEBUFFER_SRGB, // GL_EXT_sRGB_write_control
DIRTY_BIT_CURRENT_VALUES, DIRTY_BIT_CURRENT_VALUES,
DIRTY_BIT_INVALID, DIRTY_BIT_INVALID,
......
...@@ -1997,15 +1997,11 @@ void StateManagerGL::syncState(const gl::Context *context, const gl::State::Dirt ...@@ -1997,15 +1997,11 @@ void StateManagerGL::syncState(const gl::Context *context, const gl::State::Dirt
case gl::State::DIRTY_BIT_COVERAGE_MODULATION: case gl::State::DIRTY_BIT_COVERAGE_MODULATION:
setCoverageModulation(state.getCoverageModulation()); setCoverageModulation(state.getCoverageModulation());
break; break;
case gl::State::DIRTY_BIT_PATH_RENDERING_MATRIX_MV: case gl::State::DIRTY_BIT_PATH_RENDERING:
setPathRenderingModelViewMatrix( setPathRenderingModelViewMatrix(
state.getPathRenderingMatrix(GL_PATH_MODELVIEW_MATRIX_CHROMIUM)); state.getPathRenderingMatrix(GL_PATH_MODELVIEW_MATRIX_CHROMIUM));
break;
case gl::State::DIRTY_BIT_PATH_RENDERING_MATRIX_PROJ:
setPathRenderingProjectionMatrix( setPathRenderingProjectionMatrix(
state.getPathRenderingMatrix(GL_PATH_PROJECTION_MATRIX_CHROMIUM)); state.getPathRenderingMatrix(GL_PATH_PROJECTION_MATRIX_CHROMIUM));
break;
case gl::State::DIRTY_BIT_PATH_RENDERING_STENCIL_STATE:
setPathRenderingStencilState(state.getPathStencilFunc(), state.getPathStencilRef(), setPathRenderingStencilState(state.getPathStencilFunc(), state.getPathStencilRef(),
state.getPathStencilMask()); state.getPathStencilMask());
break; break;
...@@ -2157,7 +2153,7 @@ void StateManagerGL::setPathRenderingModelViewMatrix(const GLfloat *m) ...@@ -2157,7 +2153,7 @@ void StateManagerGL::setPathRenderingModelViewMatrix(const GLfloat *m)
memcpy(mPathMatrixMV, m, sizeof(mPathMatrixMV)); memcpy(mPathMatrixMV, m, sizeof(mPathMatrixMV));
mFunctions->matrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, m); mFunctions->matrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, m);
mLocalDirtyBits.set(gl::State::DIRTY_BIT_PATH_RENDERING_MATRIX_MV); mLocalDirtyBits.set(gl::State::DIRTY_BIT_PATH_RENDERING);
} }
} }
...@@ -2168,7 +2164,7 @@ void StateManagerGL::setPathRenderingProjectionMatrix(const GLfloat *m) ...@@ -2168,7 +2164,7 @@ void StateManagerGL::setPathRenderingProjectionMatrix(const GLfloat *m)
memcpy(mPathMatrixProj, m, sizeof(mPathMatrixProj)); memcpy(mPathMatrixProj, m, sizeof(mPathMatrixProj));
mFunctions->matrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, m); mFunctions->matrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, m);
mLocalDirtyBits.set(gl::State::DIRTY_BIT_PATH_RENDERING_MATRIX_PROJ); mLocalDirtyBits.set(gl::State::DIRTY_BIT_PATH_RENDERING);
} }
} }
...@@ -2181,7 +2177,7 @@ void StateManagerGL::setPathRenderingStencilState(GLenum func, GLint ref, GLuint ...@@ -2181,7 +2177,7 @@ void StateManagerGL::setPathRenderingStencilState(GLenum func, GLint ref, GLuint
mPathStencilMask = mask; mPathStencilMask = mask;
mFunctions->pathStencilFuncNV(func, ref, mask); mFunctions->pathStencilFuncNV(func, ref, mask);
mLocalDirtyBits.set(gl::State::DIRTY_BIT_PATH_RENDERING_STENCIL_STATE); mLocalDirtyBits.set(gl::State::DIRTY_BIT_PATH_RENDERING);
} }
} }
......
...@@ -853,11 +853,7 @@ gl::Error ContextVk::syncState(const gl::Context *context, const gl::State::Dirt ...@@ -853,11 +853,7 @@ gl::Error ContextVk::syncState(const gl::Context *context, const gl::State::Dirt
break; break;
case gl::State::DIRTY_BIT_COVERAGE_MODULATION: case gl::State::DIRTY_BIT_COVERAGE_MODULATION:
break; break;
case gl::State::DIRTY_BIT_PATH_RENDERING_MATRIX_MV: case gl::State::DIRTY_BIT_PATH_RENDERING:
break;
case gl::State::DIRTY_BIT_PATH_RENDERING_MATRIX_PROJ:
break;
case gl::State::DIRTY_BIT_PATH_RENDERING_STENCIL_STATE:
break; break;
case gl::State::DIRTY_BIT_FRAMEBUFFER_SRGB: case gl::State::DIRTY_BIT_FRAMEBUFFER_SRGB:
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment