Commit 2df6a601 by Shannon Woods

Remove context pointer from State

BUG=angle:685 State needs only to track a few variables from Context's caps, so store those instead of a pointer to Context. Change-Id: I36d448dcaccf9780d6df2cfc82ef975b2ba0346f Reviewed-on: https://chromium-review.googlesource.com/219804Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarShannon Woods <shannonwoods@chromium.org>
parent bee59e03
...@@ -119,8 +119,6 @@ Context::Context(int clientVersion, const gl::Context *shareContext, rx::Rendere ...@@ -119,8 +119,6 @@ Context::Context(int clientVersion, const gl::Context *shareContext, rx::Rendere
mResetStatus = GL_NO_ERROR; mResetStatus = GL_NO_ERROR;
mResetStrategy = (notifyResets ? GL_LOSE_CONTEXT_ON_RESET_EXT : GL_NO_RESET_NOTIFICATION_EXT); mResetStrategy = (notifyResets ? GL_LOSE_CONTEXT_ON_RESET_EXT : GL_NO_RESET_NOTIFICATION_EXT);
mRobustAccess = robustAccess; mRobustAccess = robustAccess;
mState.setContext(this);
} }
Context::~Context() Context::~Context()
......
...@@ -22,6 +22,8 @@ namespace gl ...@@ -22,6 +22,8 @@ namespace gl
State::State() State::State()
{ {
mMaxDrawBuffers = 0;
mMaxCombinedTextureImageUnits = 0;
} }
State::~State() State::~State()
...@@ -31,7 +33,8 @@ State::~State() ...@@ -31,7 +33,8 @@ State::~State()
void State::initialize(const Caps& caps, GLuint clientVersion) void State::initialize(const Caps& caps, GLuint clientVersion)
{ {
mContext = NULL; mMaxDrawBuffers = caps.maxDrawBuffers;
mMaxCombinedTextureImageUnits = caps.maxCombinedTextureImageUnits;
setClearColor(0.0f, 0.0f, 0.0f, 0.0f); setClearColor(0.0f, 0.0f, 0.0f, 0.0f);
...@@ -1185,7 +1188,7 @@ void State::getIntegerv(GLenum pname, GLint *params) ...@@ -1185,7 +1188,7 @@ void State::getIntegerv(GLenum pname, GLint *params)
if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT) if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT)
{ {
unsigned int colorAttachment = (pname - GL_DRAW_BUFFER0_EXT); unsigned int colorAttachment = (pname - GL_DRAW_BUFFER0_EXT);
ASSERT(colorAttachment < mContext->getCaps().maxDrawBuffers); ASSERT(colorAttachment < mMaxDrawBuffers);
Framebuffer *framebuffer = mDrawFramebuffer; Framebuffer *framebuffer = mDrawFramebuffer;
*params = framebuffer->getDrawBufferState(colorAttachment); *params = framebuffer->getDrawBufferState(colorAttachment);
return; return;
...@@ -1332,19 +1335,19 @@ void State::getIntegerv(GLenum pname, GLint *params) ...@@ -1332,19 +1335,19 @@ void State::getIntegerv(GLenum pname, GLint *params)
} }
break; break;
case GL_TEXTURE_BINDING_2D: case GL_TEXTURE_BINDING_2D:
ASSERT(mActiveSampler < mContext->getCaps().maxCombinedTextureImageUnits); ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
*params = mSamplerTextures.at(GL_TEXTURE_2D)[mActiveSampler].id(); *params = mSamplerTextures.at(GL_TEXTURE_2D)[mActiveSampler].id();
break; break;
case GL_TEXTURE_BINDING_CUBE_MAP: case GL_TEXTURE_BINDING_CUBE_MAP:
ASSERT(mActiveSampler < mContext->getCaps().maxCombinedTextureImageUnits); ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
*params = mSamplerTextures.at(GL_TEXTURE_CUBE_MAP)[mActiveSampler].id(); *params = mSamplerTextures.at(GL_TEXTURE_CUBE_MAP)[mActiveSampler].id();
break; break;
case GL_TEXTURE_BINDING_3D: case GL_TEXTURE_BINDING_3D:
ASSERT(mActiveSampler <mContext->getCaps().maxCombinedTextureImageUnits); ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
*params = mSamplerTextures.at(GL_TEXTURE_3D)[mActiveSampler].id(); *params = mSamplerTextures.at(GL_TEXTURE_3D)[mActiveSampler].id();
break; break;
case GL_TEXTURE_BINDING_2D_ARRAY: case GL_TEXTURE_BINDING_2D_ARRAY:
ASSERT(mActiveSampler < mContext->getCaps().maxCombinedTextureImageUnits); ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
*params = mSamplerTextures.at(GL_TEXTURE_2D_ARRAY)[mActiveSampler].id(); *params = mSamplerTextures.at(GL_TEXTURE_2D_ARRAY)[mActiveSampler].id();
break; break;
case GL_UNIFORM_BUFFER_BINDING: case GL_UNIFORM_BUFFER_BINDING:
......
...@@ -35,8 +35,6 @@ class State ...@@ -35,8 +35,6 @@ class State
void initialize(const Caps& caps, GLuint clientVersion); void initialize(const Caps& caps, GLuint clientVersion);
void reset(); void reset();
void setContext(Context *context) { mContext = context; }
// State chunk getters // State chunk getters
const RasterizerState &getRasterizerState() const; const RasterizerState &getRasterizerState() const;
const BlendState &getBlendState() const; const BlendState &getBlendState() const;
...@@ -247,7 +245,9 @@ class State ...@@ -247,7 +245,9 @@ class State
private: private:
DISALLOW_COPY_AND_ASSIGN(State); DISALLOW_COPY_AND_ASSIGN(State);
Context *mContext; // Cached values from Context's caps
GLuint mMaxDrawBuffers;
GLuint mMaxCombinedTextureImageUnits;
ColorF mColorClearValue; ColorF mColorClearValue;
GLclampf mDepthClearValue; GLclampf mDepthClearValue;
......
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