Context now uses a Rectangle struct for storing viewport.

TRAC #22116 Signed-off-by: Shannon Woods Signed-off-by: Daniel Koch git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1454 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 83e80ee4
...@@ -106,10 +106,10 @@ Context::Context(const gl::Context *shareContext, rx::Renderer *renderer, bool n ...@@ -106,10 +106,10 @@ Context::Context(const gl::Context *shareContext, rx::Renderer *renderer, bool n
mState.lineWidth = 1.0f; mState.lineWidth = 1.0f;
mState.viewportX = 0; mState.viewport.x = 0;
mState.viewportY = 0; mState.viewport.y = 0;
mState.viewportWidth = 0; mState.viewport.width = 0;
mState.viewportHeight = 0; mState.viewport.height = 0;
mState.zNear = 0.0f; mState.zNear = 0.0f;
mState.zFar = 1.0f; mState.zFar = 1.0f;
...@@ -304,10 +304,10 @@ void Context::makeCurrent(egl::Surface *surface) ...@@ -304,10 +304,10 @@ void Context::makeCurrent(egl::Surface *surface)
initExtensionString(); initExtensionString();
initRendererString(); initRendererString();
mState.viewportX = 0; mState.viewport.x = 0;
mState.viewportY = 0; mState.viewport.y = 0;
mState.viewportWidth = surface->getWidth(); mState.viewport.width = surface->getWidth();
mState.viewportHeight = surface->getHeight(); mState.viewport.height = surface->getHeight();
mState.scissor.x = 0; mState.scissor.x = 0;
mState.scissor.y = 0; mState.scissor.y = 0;
...@@ -599,10 +599,10 @@ void Context::setFragmentShaderDerivativeHint(GLenum hint) ...@@ -599,10 +599,10 @@ void Context::setFragmentShaderDerivativeHint(GLenum hint)
void Context::setViewportParams(GLint x, GLint y, GLsizei width, GLsizei height) void Context::setViewportParams(GLint x, GLint y, GLsizei width, GLsizei height)
{ {
mState.viewportX = x; mState.viewport.x = x;
mState.viewportY = y; mState.viewport.y = y;
mState.viewportWidth = width; mState.viewport.width = width;
mState.viewportHeight = height; mState.viewport.height = height;
} }
void Context::setScissorParams(GLint x, GLint y, GLsizei width, GLsizei height) void Context::setScissorParams(GLint x, GLint y, GLsizei width, GLsizei height)
...@@ -1454,10 +1454,10 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1454,10 +1454,10 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
} }
break; break;
case GL_VIEWPORT: case GL_VIEWPORT:
params[0] = mState.viewportX; params[0] = mState.viewport.x;
params[1] = mState.viewportY; params[1] = mState.viewport.y;
params[2] = mState.viewportWidth; params[2] = mState.viewport.width;
params[3] = mState.viewportHeight; params[3] = mState.viewport.height;
break; break;
case GL_SCISSOR_BOX: case GL_SCISSOR_BOX:
params[0] = mState.scissor.x; params[0] = mState.scissor.x;
...@@ -1842,12 +1842,10 @@ bool Context::applyRenderTarget(bool ignoreViewport) ...@@ -1842,12 +1842,10 @@ bool Context::applyRenderTarget(bool ignoreViewport)
} }
else else
{ {
viewport.X = clamp(mState.viewportX, 0L, static_cast<LONG>(mRenderTargetDesc.width)); viewport.X = clamp(mState.viewport.x, 0L, static_cast<LONG>(mRenderTargetDesc.width));
viewport.Y = clamp(mState.viewportY, 0L, static_cast<LONG>(mRenderTargetDesc.height)); viewport.Y = clamp(mState.viewport.y, 0L, static_cast<LONG>(mRenderTargetDesc.height));
viewport.Width = clamp(mState.viewportWidth, 0L, static_cast<LONG>(mRenderTargetDesc.width) - static_cast<LONG>(viewport.X)); viewport.Width = clamp(mState.viewport.width, 0L, static_cast<LONG>(mRenderTargetDesc.width) - static_cast<LONG>(viewport.X));
viewport.Height = clamp(mState.viewportHeight, 0L, static_cast<LONG>(mRenderTargetDesc.height) - static_cast<LONG>(viewport.Y)); viewport.Height = clamp(mState.viewport.height, 0L, static_cast<LONG>(mRenderTargetDesc.height) - static_cast<LONG>(viewport.Y));
viewport.MinZ = zNear;
viewport.MaxZ = zFar;
} }
if (viewport.Width <= 0 || viewport.Height <= 0) if (viewport.Width <= 0 || viewport.Height <= 0)
...@@ -1876,9 +1874,9 @@ bool Context::applyRenderTarget(bool ignoreViewport) ...@@ -1876,9 +1874,9 @@ bool Context::applyRenderTarget(bool ignoreViewport)
// These values are used for computing gl_FragCoord in Program::linkVaryings(). // These values are used for computing gl_FragCoord in Program::linkVaryings().
GLint coord = programBinary->getDxCoordLocation(); GLint coord = programBinary->getDxCoordLocation();
GLfloat whxy[4] = {mState.viewportWidth / 2.0f, mState.viewportHeight / 2.0f, GLfloat whxy[4] = {mState.viewport.width / 2.0f, mState.viewport.height / 2.0f,
(float)mState.viewportX + mState.viewportWidth / 2.0f, (float)mState.viewport.x + mState.viewport.width / 2.0f,
(float)mState.viewportY + mState.viewportHeight / 2.0f}; (float)mState.viewport.y + mState.viewport.height / 2.0f};
programBinary->setUniform4fv(coord, 1, whxy); programBinary->setUniform4fv(coord, 1, whxy);
GLint depth = programBinary->getDxDepthLocation(); GLint depth = programBinary->getDxDepthLocation();
......
...@@ -172,10 +172,7 @@ struct State ...@@ -172,10 +172,7 @@ struct State
GLenum generateMipmapHint; GLenum generateMipmapHint;
GLenum fragmentShaderDerivativeHint; GLenum fragmentShaderDerivativeHint;
GLint viewportX; Rectangle viewport;
GLint viewportY;
GLsizei viewportWidth;
GLsizei viewportHeight;
float zNear; float zNear;
float zFar; float zFar;
......
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