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; ...@@ -222,6 +222,12 @@ typedef void* GLeglImageOES;
#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 #define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
#endif #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 * APPLE extension tokens
*------------------------------------------------------------------------*/ *------------------------------------------------------------------------*/
...@@ -860,6 +866,11 @@ GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLs ...@@ -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); typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
#endif #endif
/* GL_ANGLE_texture_usage */
#ifndef GL_ANGLE_texture_usage
#define GL_ANGLE_texture_usage 1
#endif
/*------------------------------------------------------------------------* /*------------------------------------------------------------------------*
* APPLE extension functions * APPLE extension functions
*------------------------------------------------------------------------*/ *------------------------------------------------------------------------*/
......
...@@ -1230,6 +1230,7 @@ Texture::Texture(GLuint id) : RefCountObject(id) ...@@ -1230,6 +1230,7 @@ Texture::Texture(GLuint id) : RefCountObject(id)
mWrapS = GL_REPEAT; mWrapS = GL_REPEAT;
mWrapT = GL_REPEAT; mWrapT = GL_REPEAT;
mDirtyParameters = true; mDirtyParameters = true;
mUsage = GL_NONE;
mDirtyImages = true; mDirtyImages = true;
...@@ -1332,6 +1333,20 @@ bool Texture::setWrapT(GLenum wrap) ...@@ -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 GLenum Texture::getMinFilter() const
{ {
return mMinFilter; return mMinFilter;
...@@ -1352,6 +1367,11 @@ GLenum Texture::getWrapT() const ...@@ -1352,6 +1367,11 @@ GLenum Texture::getWrapT() const
return mWrapT; return mWrapT;
} }
GLenum Texture::getUsage() const
{
return mUsage;
}
void Texture::setImage(GLint unpackAlignment, const void *pixels, Image *image) void Texture::setImage(GLint unpackAlignment, const void *pixels, Image *image)
{ {
if (pixels != NULL) if (pixels != NULL)
......
...@@ -170,11 +170,13 @@ class Texture : public RefCountObject ...@@ -170,11 +170,13 @@ class Texture : public RefCountObject
bool setMagFilter(GLenum filter); bool setMagFilter(GLenum filter);
bool setWrapS(GLenum wrap); bool setWrapS(GLenum wrap);
bool setWrapT(GLenum wrap); bool setWrapT(GLenum wrap);
bool setUsage(GLenum usage);
GLenum getMinFilter() const; GLenum getMinFilter() const;
GLenum getMagFilter() const; GLenum getMagFilter() const;
GLenum getWrapS() const; GLenum getWrapS() const;
GLenum getWrapT() const; GLenum getWrapT() const;
GLenum getUsage() const;
virtual GLsizei getWidth() const = 0; virtual GLsizei getWidth() const = 0;
virtual GLsizei getHeight() const = 0; virtual GLsizei getHeight() const = 0;
...@@ -227,6 +229,7 @@ class Texture : public RefCountObject ...@@ -227,6 +229,7 @@ class Texture : public RefCountObject
GLenum mWrapS; GLenum mWrapS;
GLenum mWrapT; GLenum mWrapT;
bool mDirtyParameters; bool mDirtyParameters;
GLenum mUsage;
bool mDirtyImages; bool mDirtyImages;
......
...@@ -3361,6 +3361,9 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) ...@@ -3361,6 +3361,9 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
case GL_TEXTURE_IMMUTABLE_FORMAT_EXT: case GL_TEXTURE_IMMUTABLE_FORMAT_EXT:
*params = (GLfloat)(texture->isImmutable() ? GL_TRUE : GL_FALSE); *params = (GLfloat)(texture->isImmutable() ? GL_TRUE : GL_FALSE);
break; break;
case GL_TEXTURE_USAGE_ANGLE:
*params = (GLfloat)texture->getUsage();
break;
default: default:
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
} }
...@@ -3413,6 +3416,9 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) ...@@ -3413,6 +3416,9 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
case GL_TEXTURE_IMMUTABLE_FORMAT_EXT: case GL_TEXTURE_IMMUTABLE_FORMAT_EXT:
*params = texture->isImmutable() ? GL_TRUE : GL_FALSE; *params = texture->isImmutable() ? GL_TRUE : GL_FALSE;
break; break;
case GL_TEXTURE_USAGE_ANGLE:
*params = texture->getUsage();
break;
default: default:
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
} }
...@@ -4832,6 +4838,12 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param) ...@@ -4832,6 +4838,12 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param)
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
} }
break; break;
case GL_TEXTURE_USAGE_ANGLE:
if (!texture->setUsage((GLenum)param))
{
return error(GL_INVALID_ENUM);
}
break;
default: default:
return error(GL_INVALID_ENUM); 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