Correct the sizes of the (combined) texture unit arrays for VTF.

Issue=95 TRAC #16568 Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@640 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent d4a35179
#define MAJOR_VERSION 0 #define MAJOR_VERSION 0
#define MINOR_VERSION 0 #define MINOR_VERSION 0
#define BUILD_VERSION 0 #define BUILD_VERSION 0
#define BUILD_REVISION 639 #define BUILD_REVISION 640
#define STRINGIFY(x) #x #define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x) #define MACRO_STRINGIFY(x) STRINGIFY(x)
......
...@@ -193,7 +193,7 @@ Context::~Context() ...@@ -193,7 +193,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_COMBINED_TEXTURE_IMAGE_UNITS_VTF; sampler++)
{ {
mState.samplerTexture[type][sampler].set(NULL); mState.samplerTexture[type][sampler].set(NULL);
} }
...@@ -1383,7 +1383,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1383,7 +1383,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 > gl::MAX_TEXTURE_IMAGE_UNITS - 1) if (mState.activeSampler < 0 || mState.activeSampler > getMaximumCombinedTextureImageUnits() - 1)
{ {
error(GL_INVALID_OPERATION); error(GL_INVALID_OPERATION);
return false; return false;
...@@ -1394,7 +1394,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1394,7 +1394,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
break; break;
case GL_TEXTURE_BINDING_CUBE_MAP: case GL_TEXTURE_BINDING_CUBE_MAP:
{ {
if (mState.activeSampler < 0 || mState.activeSampler > gl::MAX_TEXTURE_IMAGE_UNITS - 1) if (mState.activeSampler < 0 || mState.activeSampler > getMaximumCombinedTextureImageUnits() - 1)
{ {
error(GL_INVALID_OPERATION); error(GL_INVALID_OPERATION);
return false; return false;
...@@ -3092,7 +3092,7 @@ void Context::detachTexture(GLuint texture) ...@@ -3092,7 +3092,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_COMBINED_TEXTURE_IMAGE_UNITS_VTF; sampler++)
{ {
if (mState.samplerTexture[type][sampler].id() == texture) if (mState.samplerTexture[type][sampler].id() == texture)
{ {
......
...@@ -215,7 +215,7 @@ struct State ...@@ -215,7 +215,7 @@ struct State
GLuint currentProgram; GLuint currentProgram;
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_COMBINED_TEXTURE_IMAGE_UNITS_VTF];
GLint unpackAlignment; GLint unpackAlignment;
GLint packAlignment; GLint packAlignment;
......
// //
// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. // Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// //
...@@ -218,7 +218,7 @@ GLint Program::getSamplerMapping(SamplerType type, unsigned int samplerIndex) ...@@ -218,7 +218,7 @@ GLint Program::getSamplerMapping(SamplerType type, unsigned int samplerIndex)
default: UNREACHABLE(); default: UNREACHABLE();
} }
if (logicalTextureUnit >= 0 && logicalTextureUnit < MAX_TEXTURE_IMAGE_UNITS) if (logicalTextureUnit >= 0 && logicalTextureUnit < getContext()->getMaximumCombinedTextureImageUnits())
{ {
return logicalTextureUnit; return logicalTextureUnit;
} }
......
// //
// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. // Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// //
...@@ -37,15 +37,15 @@ void __stdcall glActiveTexture(GLenum texture) ...@@ -37,15 +37,15 @@ void __stdcall glActiveTexture(GLenum texture)
try try
{ {
if (texture < GL_TEXTURE0 || texture > GL_TEXTURE0 + gl::MAX_TEXTURE_IMAGE_UNITS - 1)
{
return error(GL_INVALID_ENUM);
}
gl::Context *context = gl::getContext(); gl::Context *context = gl::getContext();
if (context) if (context)
{ {
if (texture < GL_TEXTURE0 || texture > GL_TEXTURE0 + context->getMaximumCombinedTextureImageUnits() - 1)
{
return error(GL_INVALID_ENUM);
}
context->setActiveSampler(texture - GL_TEXTURE0); context->setActiveSampler(texture - GL_TEXTURE0);
} }
} }
......
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