Added the texture usage parameter.

TRAC #18732 Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@860 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent ff941aa9
......@@ -222,6 +222,12 @@ typedef void* GLeglImageOES;
#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
#endif
/* GL_ANGLE_texture_usage */
#ifndef GL_ANGLE_texture_usage
#define GL_TEXTURE_USAGE_ANGLE 0x93A2
#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3
#endif
/*------------------------------------------------------------------------*
* APPLE extension tokens
*------------------------------------------------------------------------*/
......@@ -860,6 +866,11 @@ GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLs
typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
#endif
/* GL_ANGLE_texture_usage */
#ifndef GL_ANGLE_texture_usage
#define GL_ANGLE_texture_usage 1
#endif
/*------------------------------------------------------------------------*
* APPLE extension functions
*------------------------------------------------------------------------*/
......
......@@ -1230,6 +1230,7 @@ Texture::Texture(GLuint id) : RefCountObject(id)
mWrapS = GL_REPEAT;
mWrapT = GL_REPEAT;
mDirtyParameters = true;
mUsage = GL_NONE;
mDirtyImages = true;
......@@ -1332,6 +1333,20 @@ bool Texture::setWrapT(GLenum wrap)
}
}
// Returns true on successful usage state update (valid enum parameter)
bool Texture::setUsage(GLenum usage)
{
switch (usage)
{
case GL_NONE:
case GL_FRAMEBUFFER_ATTACHMENT_ANGLE:
mUsage = usage;
return true;
default:
return false;
}
}
GLenum Texture::getMinFilter() const
{
return mMinFilter;
......@@ -1352,6 +1367,11 @@ GLenum Texture::getWrapT() const
return mWrapT;
}
GLenum Texture::getUsage() const
{
return mUsage;
}
void Texture::setImage(GLint unpackAlignment, const void *pixels, Image *image)
{
if (pixels != NULL)
......
......@@ -170,11 +170,13 @@ class Texture : public RefCountObject
bool setMagFilter(GLenum filter);
bool setWrapS(GLenum wrap);
bool setWrapT(GLenum wrap);
bool setUsage(GLenum usage);
GLenum getMinFilter() const;
GLenum getMagFilter() const;
GLenum getWrapS() const;
GLenum getWrapT() const;
GLenum getUsage() const;
virtual GLsizei getWidth() const = 0;
virtual GLsizei getHeight() const = 0;
......@@ -227,6 +229,7 @@ class Texture : public RefCountObject
GLenum mWrapS;
GLenum mWrapT;
bool mDirtyParameters;
GLenum mUsage;
bool mDirtyImages;
......
......@@ -3361,6 +3361,9 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
case GL_TEXTURE_IMMUTABLE_FORMAT_EXT:
*params = (GLfloat)(texture->isImmutable() ? GL_TRUE : GL_FALSE);
break;
case GL_TEXTURE_USAGE_ANGLE:
*params = (GLfloat)texture->getUsage();
break;
default:
return error(GL_INVALID_ENUM);
}
......@@ -3413,6 +3416,9 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
case GL_TEXTURE_IMMUTABLE_FORMAT_EXT:
*params = texture->isImmutable() ? GL_TRUE : GL_FALSE;
break;
case GL_TEXTURE_USAGE_ANGLE:
*params = texture->getUsage();
break;
default:
return error(GL_INVALID_ENUM);
}
......@@ -4832,6 +4838,12 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param)
return error(GL_INVALID_ENUM);
}
break;
case GL_TEXTURE_USAGE_ANGLE:
if (!texture->setUsage((GLenum)param))
{
return error(GL_INVALID_ENUM);
}
break;
default:
return error(GL_INVALID_ENUM);
}
......
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