Commit 3779221c by Nicolas Capens Committed by Nicolas Capens

Implement texture enable.

BUG=18110152 Change-Id: I47b38cb10ea0b73c522817f9dbe5a5d118f3c599 Reviewed-on: https://swiftshader-review.googlesource.com/1282Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 6b537b7a
...@@ -167,6 +167,7 @@ Context::Context(const egl::Config *config, const Context *shareContext) ...@@ -167,6 +167,7 @@ Context::Context(const egl::Config *config, const Context *shareContext)
markAllStateDirty(); markAllStateDirty();
matrixMode = GL_MODELVIEW; matrixMode = GL_MODELVIEW;
texture2D = false;
} }
Context::~Context() Context::~Context()
...@@ -178,7 +179,7 @@ Context::~Context() ...@@ -178,7 +179,7 @@ Context::~Context()
for(int type = 0; type < TEXTURE_TYPE_COUNT; type++) for(int type = 0; type < TEXTURE_TYPE_COUNT; type++)
{ {
for(int sampler = 0; sampler < MAX_TEXTURE_IMAGE_UNITS; sampler++) for(int sampler = 0; sampler < MAX_TEXTURE_UNITS; sampler++)
{ {
mState.samplerTexture[type][sampler].set(NULL); mState.samplerTexture[type][sampler].set(NULL);
} }
...@@ -571,6 +572,11 @@ void Context::setLightAttenuationQuadratic(int index, float quadratic) ...@@ -571,6 +572,11 @@ void Context::setLightAttenuationQuadratic(int index, float quadratic)
light[index].attenuation.quadratic = quadratic; light[index].attenuation.quadratic = quadratic;
} }
void Context::setTexture2D(bool enable)
{
texture2D = enable;
}
void Context::setLineWidth(GLfloat width) void Context::setLineWidth(GLfloat width)
{ {
mState.lineWidth = width; mState.lineWidth = width;
...@@ -1135,7 +1141,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1135,7 +1141,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
break; break;
case GL_TEXTURE_BINDING_2D: case GL_TEXTURE_BINDING_2D:
{ {
if(mState.activeSampler < 0 || mState.activeSampler > MAX_TEXTURE_IMAGE_UNITS - 1) if(mState.activeSampler < 0 || mState.activeSampler > MAX_TEXTURE_UNITS - 1)
{ {
error(GL_INVALID_OPERATION); error(GL_INVALID_OPERATION);
return false; return false;
...@@ -1146,7 +1152,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1146,7 +1152,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
break; break;
case GL_TEXTURE_BINDING_CUBE_MAP_OES: case GL_TEXTURE_BINDING_CUBE_MAP_OES:
{ {
if(mState.activeSampler < 0 || mState.activeSampler > MAX_TEXTURE_IMAGE_UNITS - 1) if(mState.activeSampler < 0 || mState.activeSampler > MAX_TEXTURE_UNITS - 1)
{ {
error(GL_INVALID_OPERATION); error(GL_INVALID_OPERATION);
return false; return false;
...@@ -1157,7 +1163,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1157,7 +1163,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
break; break;
case GL_TEXTURE_BINDING_EXTERNAL_OES: case GL_TEXTURE_BINDING_EXTERNAL_OES:
{ {
if(mState.activeSampler < 0 || mState.activeSampler > MAX_TEXTURE_IMAGE_UNITS - 1) if(mState.activeSampler < 0 || mState.activeSampler > MAX_TEXTURE_UNITS - 1)
{ {
error(GL_INVALID_OPERATION); error(GL_INVALID_OPERATION);
return false; return false;
...@@ -1170,6 +1176,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1170,6 +1176,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
case GL_MAX_MODELVIEW_STACK_DEPTH: *params = MAX_MODELVIEW_STACK_DEPTH; break; case GL_MAX_MODELVIEW_STACK_DEPTH: *params = MAX_MODELVIEW_STACK_DEPTH; break;
case GL_MAX_PROJECTION_STACK_DEPTH: *params = MAX_PROJECTION_STACK_DEPTH; break; case GL_MAX_PROJECTION_STACK_DEPTH: *params = MAX_PROJECTION_STACK_DEPTH; break;
case GL_MAX_TEXTURE_STACK_DEPTH: *params = MAX_TEXTURE_STACK_DEPTH; break; case GL_MAX_TEXTURE_STACK_DEPTH: *params = MAX_TEXTURE_STACK_DEPTH; break;
case GL_MAX_TEXTURE_UNITS: *params = MAX_TEXTURE_UNITS; break;
default: default:
return false; return false;
} }
...@@ -1232,7 +1239,6 @@ int Context::getQueryParameterNum(GLenum pname) ...@@ -1232,7 +1239,6 @@ int Context::getQueryParameterNum(GLenum pname)
case GL_TEXTURE_BINDING_2D: case GL_TEXTURE_BINDING_2D:
case GL_TEXTURE_BINDING_CUBE_MAP_OES: case GL_TEXTURE_BINDING_CUBE_MAP_OES:
case GL_TEXTURE_BINDING_EXTERNAL_OES: case GL_TEXTURE_BINDING_EXTERNAL_OES:
case GL_MAX_TEXTURE_UNITS:
return 1; return 1;
case GL_MAX_VIEWPORT_DIMS: case GL_MAX_VIEWPORT_DIMS:
return 2; return 2;
...@@ -1270,6 +1276,7 @@ int Context::getQueryParameterNum(GLenum pname) ...@@ -1270,6 +1276,7 @@ int Context::getQueryParameterNum(GLenum pname)
case GL_MAX_MODELVIEW_STACK_DEPTH: case GL_MAX_MODELVIEW_STACK_DEPTH:
case GL_MAX_PROJECTION_STACK_DEPTH: case GL_MAX_PROJECTION_STACK_DEPTH:
case GL_MAX_TEXTURE_STACK_DEPTH: case GL_MAX_TEXTURE_STACK_DEPTH:
case GL_MAX_TEXTURE_UNITS:
return 1; return 1;
default: default:
UNREACHABLE(); UNREACHABLE();
...@@ -1339,6 +1346,7 @@ bool Context::isQueryParameterInt(GLenum pname) ...@@ -1339,6 +1346,7 @@ bool Context::isQueryParameterInt(GLenum pname)
case GL_MAX_MODELVIEW_STACK_DEPTH: case GL_MAX_MODELVIEW_STACK_DEPTH:
case GL_MAX_PROJECTION_STACK_DEPTH: case GL_MAX_PROJECTION_STACK_DEPTH:
case GL_MAX_TEXTURE_STACK_DEPTH: case GL_MAX_TEXTURE_STACK_DEPTH:
case GL_MAX_TEXTURE_UNITS:
return true; return true;
default: default:
ASSERT(isQueryParameterFloat(pname) || isQueryParameterBool(pname)); ASSERT(isQueryParameterFloat(pname) || isQueryParameterBool(pname));
...@@ -1711,7 +1719,7 @@ GLenum Context::applyIndexBuffer(const void *indices, GLsizei count, GLenum mode ...@@ -1711,7 +1719,7 @@ GLenum Context::applyIndexBuffer(const void *indices, GLsizei count, GLenum mode
void Context::applyTextures() void Context::applyTextures()
{ {
for(int samplerIndex = 0; samplerIndex < MAX_TEXTURE_IMAGE_UNITS; samplerIndex++) for(int samplerIndex = 0; samplerIndex < MAX_TEXTURE_UNITS; samplerIndex++)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
TextureType textureType = TEXTURE_2D; TextureType textureType = TEXTURE_2D;
...@@ -2259,7 +2267,7 @@ void Context::detachTexture(GLuint texture) ...@@ -2259,7 +2267,7 @@ void Context::detachTexture(GLuint texture)
for(int type = 0; type < TEXTURE_TYPE_COUNT; type++) for(int type = 0; type < TEXTURE_TYPE_COUNT; type++)
{ {
for(int sampler = 0; sampler < MAX_TEXTURE_IMAGE_UNITS; sampler++) for(int sampler = 0; sampler < MAX_TEXTURE_UNITS; sampler++)
{ {
if(mState.samplerTexture[type][sampler].id() == texture) if(mState.samplerTexture[type][sampler].id() == texture)
{ {
......
...@@ -63,7 +63,7 @@ enum ...@@ -63,7 +63,7 @@ enum
{ {
MAX_VERTEX_ATTRIBS = 16, MAX_VERTEX_ATTRIBS = 16,
MAX_VARYING_VECTORS = 10, MAX_VARYING_VECTORS = 10,
MAX_TEXTURE_IMAGE_UNITS = 16, MAX_TEXTURE_UNITS = 2,
MAX_DRAW_BUFFERS = 1, MAX_DRAW_BUFFERS = 1,
MAX_LIGHTS = 8, MAX_LIGHTS = 8,
...@@ -247,7 +247,7 @@ struct State ...@@ -247,7 +247,7 @@ struct State
BindingPointer<Renderbuffer> renderbuffer; BindingPointer<Renderbuffer> renderbuffer;
VertexAttribute vertexAttribute[MAX_VERTEX_ATTRIBS]; VertexAttribute vertexAttribute[MAX_VERTEX_ATTRIBS];
BindingPointer<Texture> samplerTexture[TEXTURE_TYPE_COUNT][MAX_TEXTURE_IMAGE_UNITS]; BindingPointer<Texture> samplerTexture[TEXTURE_TYPE_COUNT][MAX_TEXTURE_UNITS];
GLint unpackAlignment; GLint unpackAlignment;
GLint packAlignment; GLint packAlignment;
...@@ -313,6 +313,8 @@ public: ...@@ -313,6 +313,8 @@ public:
void setLightAttenuationLinear(int index, float linear); void setLightAttenuationLinear(int index, float linear);
void setLightAttenuationQuadratic(int index, float quadratic); void setLightAttenuationQuadratic(int index, float quadratic);
void setTexture2D(bool enabled);
void setLineWidth(GLfloat width); void setLineWidth(GLfloat width);
void setGenerateMipmapHint(GLenum hint); void setGenerateMipmapHint(GLenum hint);
...@@ -494,6 +496,8 @@ private: ...@@ -494,6 +496,8 @@ private:
sw::MatrixStack textureStack0; sw::MatrixStack textureStack0;
sw::MatrixStack textureStack1; sw::MatrixStack textureStack1;
bool texture2D;
ResourceManager *mResourceManager; ResourceManager *mResourceManager;
static Device *device; static Device *device;
......
...@@ -351,7 +351,7 @@ void GL_APIENTRY glActiveTexture(GLenum texture) ...@@ -351,7 +351,7 @@ void GL_APIENTRY glActiveTexture(GLenum texture)
if(context) if(context)
{ {
if(texture < GL_TEXTURE0 || texture > GL_TEXTURE0 + es1::MAX_TEXTURE_IMAGE_UNITS - 1) if(texture < GL_TEXTURE0 || texture > GL_TEXTURE0 + es1::MAX_TEXTURE_UNITS - 1)
{ {
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
} }
...@@ -1587,7 +1587,7 @@ void GL_APIENTRY glDisable(GLenum cap) ...@@ -1587,7 +1587,7 @@ void GL_APIENTRY glDisable(GLenum cap)
case GL_LIGHT6: context->setLight(6, false); break; case GL_LIGHT6: context->setLight(6, false); break;
case GL_LIGHT7: context->setLight(7, false); break; case GL_LIGHT7: context->setLight(7, false); break;
case GL_FOG: UNIMPLEMENTED(); break; case GL_FOG: UNIMPLEMENTED(); break;
case GL_TEXTURE_2D: UNIMPLEMENTED(); break; case GL_TEXTURE_2D: context->setTexture2D(false); break;
case GL_ALPHA_TEST: UNIMPLEMENTED(); break; case GL_ALPHA_TEST: UNIMPLEMENTED(); break;
case GL_COLOR_LOGIC_OP: UNIMPLEMENTED(); break; case GL_COLOR_LOGIC_OP: UNIMPLEMENTED(); break;
case GL_POINT_SMOOTH: UNIMPLEMENTED(); break; case GL_POINT_SMOOTH: UNIMPLEMENTED(); break;
...@@ -1707,7 +1707,7 @@ void GL_APIENTRY glEnable(GLenum cap) ...@@ -1707,7 +1707,7 @@ void GL_APIENTRY glEnable(GLenum cap)
case GL_LIGHT6: context->setLight(6, true); break; case GL_LIGHT6: context->setLight(6, true); break;
case GL_LIGHT7: context->setLight(7, true); break; case GL_LIGHT7: context->setLight(7, true); break;
case GL_FOG: UNIMPLEMENTED(); break; case GL_FOG: UNIMPLEMENTED(); break;
case GL_TEXTURE_2D: UNIMPLEMENTED(); break; case GL_TEXTURE_2D: context->setTexture2D(true); break;
case GL_ALPHA_TEST: UNIMPLEMENTED(); break; case GL_ALPHA_TEST: UNIMPLEMENTED(); break;
case GL_COLOR_LOGIC_OP: UNIMPLEMENTED(); break; case GL_COLOR_LOGIC_OP: UNIMPLEMENTED(); break;
case GL_POINT_SMOOTH: UNIMPLEMENTED(); break; case GL_POINT_SMOOTH: UNIMPLEMENTED(); 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