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)
markAllStateDirty();
matrixMode = GL_MODELVIEW;
texture2D = false;
}
Context::~Context()
......@@ -178,7 +179,7 @@ Context::~Context()
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);
}
......@@ -571,6 +572,11 @@ void Context::setLightAttenuationQuadratic(int index, float quadratic)
light[index].attenuation.quadratic = quadratic;
}
void Context::setTexture2D(bool enable)
{
texture2D = enable;
}
void Context::setLineWidth(GLfloat width)
{
mState.lineWidth = width;
......@@ -1135,7 +1141,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
break;
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);
return false;
......@@ -1146,7 +1152,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
break;
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);
return false;
......@@ -1157,7 +1163,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
break;
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);
return false;
......@@ -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_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_UNITS: *params = MAX_TEXTURE_UNITS; break;
default:
return false;
}
......@@ -1232,7 +1239,6 @@ int Context::getQueryParameterNum(GLenum pname)
case GL_TEXTURE_BINDING_2D:
case GL_TEXTURE_BINDING_CUBE_MAP_OES:
case GL_TEXTURE_BINDING_EXTERNAL_OES:
case GL_MAX_TEXTURE_UNITS:
return 1;
case GL_MAX_VIEWPORT_DIMS:
return 2;
......@@ -1270,6 +1276,7 @@ int Context::getQueryParameterNum(GLenum pname)
case GL_MAX_MODELVIEW_STACK_DEPTH:
case GL_MAX_PROJECTION_STACK_DEPTH:
case GL_MAX_TEXTURE_STACK_DEPTH:
case GL_MAX_TEXTURE_UNITS:
return 1;
default:
UNREACHABLE();
......@@ -1339,6 +1346,7 @@ bool Context::isQueryParameterInt(GLenum pname)
case GL_MAX_MODELVIEW_STACK_DEPTH:
case GL_MAX_PROJECTION_STACK_DEPTH:
case GL_MAX_TEXTURE_STACK_DEPTH:
case GL_MAX_TEXTURE_UNITS:
return true;
default:
ASSERT(isQueryParameterFloat(pname) || isQueryParameterBool(pname));
......@@ -1711,7 +1719,7 @@ GLenum Context::applyIndexBuffer(const void *indices, GLsizei count, GLenum mode
void Context::applyTextures()
{
for(int samplerIndex = 0; samplerIndex < MAX_TEXTURE_IMAGE_UNITS; samplerIndex++)
for(int samplerIndex = 0; samplerIndex < MAX_TEXTURE_UNITS; samplerIndex++)
{
UNIMPLEMENTED();
TextureType textureType = TEXTURE_2D;
......@@ -2259,7 +2267,7 @@ void Context::detachTexture(GLuint texture)
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)
{
......
......@@ -63,7 +63,7 @@ enum
{
MAX_VERTEX_ATTRIBS = 16,
MAX_VARYING_VECTORS = 10,
MAX_TEXTURE_IMAGE_UNITS = 16,
MAX_TEXTURE_UNITS = 2,
MAX_DRAW_BUFFERS = 1,
MAX_LIGHTS = 8,
......@@ -247,7 +247,7 @@ struct State
BindingPointer<Renderbuffer> renderbuffer;
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 packAlignment;
......@@ -313,6 +313,8 @@ public:
void setLightAttenuationLinear(int index, float linear);
void setLightAttenuationQuadratic(int index, float quadratic);
void setTexture2D(bool enabled);
void setLineWidth(GLfloat width);
void setGenerateMipmapHint(GLenum hint);
......@@ -494,6 +496,8 @@ private:
sw::MatrixStack textureStack0;
sw::MatrixStack textureStack1;
bool texture2D;
ResourceManager *mResourceManager;
static Device *device;
......
......@@ -351,7 +351,7 @@ void GL_APIENTRY glActiveTexture(GLenum texture)
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);
}
......@@ -1587,7 +1587,7 @@ void GL_APIENTRY glDisable(GLenum cap)
case GL_LIGHT6: context->setLight(6, false); break;
case GL_LIGHT7: context->setLight(7, false); 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_COLOR_LOGIC_OP: UNIMPLEMENTED(); break;
case GL_POINT_SMOOTH: UNIMPLEMENTED(); break;
......@@ -1707,7 +1707,7 @@ void GL_APIENTRY glEnable(GLenum cap)
case GL_LIGHT6: context->setLight(6, true); break;
case GL_LIGHT7: context->setLight(7, true); 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_COLOR_LOGIC_OP: 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