Commit 89aee727 by Nicolas Capens Committed by Nicolas Capens

Track active texture.

BUG=18110152 Change-Id: Ie4da7c33e8b84490e0986a1c505caed17049e9d4 Reviewed-on: https://swiftshader-review.googlesource.com/1283Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 3779221c
...@@ -168,6 +168,7 @@ Context::Context(const egl::Config *config, const Context *shareContext) ...@@ -168,6 +168,7 @@ Context::Context(const egl::Config *config, const Context *shareContext)
matrixMode = GL_MODELVIEW; matrixMode = GL_MODELVIEW;
texture2D = false; texture2D = false;
clientTexture = GL_TEXTURE0;
} }
Context::~Context() Context::~Context()
...@@ -2538,6 +2539,21 @@ void Context::ortho(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GL ...@@ -2538,6 +2539,21 @@ void Context::ortho(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GL
currentMatrixStack().ortho(left, right, bottom, top, zNear, zFar); currentMatrixStack().ortho(left, right, bottom, top, zNear, zFar);
} }
void Context::clientActiveTexture(GLenum texture)
{
clientTexture = texture;
}
GLenum Context::getClientActiveTexture() const
{
return clientTexture;
}
unsigned int Context::getActiveTexture() const
{
return mState.activeSampler;
}
} }
// Exported functions for use by EGL // Exported functions for use by EGL
......
...@@ -314,6 +314,9 @@ public: ...@@ -314,6 +314,9 @@ public:
void setLightAttenuationQuadratic(int index, float quadratic); void setLightAttenuationQuadratic(int index, float quadratic);
void setTexture2D(bool enabled); void setTexture2D(bool enabled);
void clientActiveTexture(GLenum texture);
GLenum getClientActiveTexture() const;
unsigned int getActiveTexture() const;
void setLineWidth(GLfloat width); void setLineWidth(GLfloat width);
...@@ -497,6 +500,7 @@ private: ...@@ -497,6 +500,7 @@ private:
sw::MatrixStack textureStack1; sw::MatrixStack textureStack1;
bool texture2D; bool texture2D;
GLenum clientTexture;
ResourceManager *mResourceManager; ResourceManager *mResourceManager;
......
...@@ -880,7 +880,30 @@ void GL_APIENTRY glClearStencil(GLint s) ...@@ -880,7 +880,30 @@ void GL_APIENTRY glClearStencil(GLint s)
void GL_APIENTRY glClientActiveTexture(GLenum texture) void GL_APIENTRY glClientActiveTexture(GLenum texture)
{ {
UNIMPLEMENTED(); TRACE("(GLenum texture = 0x%X)", texture);
try
{
switch(texture)
{
case GL_TEXTURE0:
case GL_TEXTURE1:
break;
default:
return error(GL_INVALID_ENUM);
}
es1::Context *context = es1::getContext();
if(context)
{
context->clientActiveTexture(texture);
}
}
catch(std::bad_alloc&)
{
return error(GL_OUT_OF_MEMORY);
}
} }
void GL_APIENTRY glClipPlanef(GLenum plane, const GLfloat *equation) void GL_APIENTRY glClipPlanef(GLenum plane, const GLfloat *equation)
...@@ -1734,7 +1757,30 @@ void GL_APIENTRY glEnable(GLenum cap) ...@@ -1734,7 +1757,30 @@ void GL_APIENTRY glEnable(GLenum cap)
void GL_APIENTRY glEnableClientState(GLenum array) void GL_APIENTRY glEnableClientState(GLenum array)
{ {
UNIMPLEMENTED(); TRACE("(GLenum array = 0x%X)", array);
try
{
es1::Context *context = es1::getContext();
if(context)
{
GLenum texture = context->getClientActiveTexture();
switch(array)
{
case GL_VERTEX_ARRAY: context->setEnableVertexAttribArray(sw::Position, true); break;
case GL_COLOR_ARRAY: context->setEnableVertexAttribArray(sw::Color0, true); break;
case GL_TEXTURE_COORD_ARRAY: context->setEnableVertexAttribArray(sw::TexCoord0 + (texture - GL_TEXTURE0), true); break;
case GL_NORMAL_ARRAY: context->setEnableVertexAttribArray(sw::Normal, true); break;
default: UNIMPLEMENTED();
}
}
}
catch(std::bad_alloc&)
{
return error(GL_OUT_OF_MEMORY);
}
} }
void GL_APIENTRY glFinish(void) void GL_APIENTRY glFinish(void)
......
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