Only allow renderable d3dformats to be flagged as rendertarget texstorage
Trac #19356
Issue=273
Signed-off-by: Nicolas Capens
git-svn-id: http://angleproject.googlecode.com/svn/trunk@928 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/common/version.h b/src/common/version.h
index 69f6c07..399cdc6 100644
--- a/src/common/version.h
+++ b/src/common/version.h
@@ -1,7 +1,7 @@
#define MAJOR_VERSION 1
#define MINOR_VERSION 0
#define BUILD_VERSION 0
-#define BUILD_REVISION 927
+#define BUILD_REVISION 928
#define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x)
diff --git a/src/libGLESv2/Texture.cpp b/src/libGLESv2/Texture.cpp
index 7404b2a..1d4aa2a 100644
--- a/src/libGLESv2/Texture.cpp
+++ b/src/libGLESv2/Texture.cpp
@@ -1996,10 +1996,10 @@
GLenum format = gl::ExtractFormat(internalformat);
GLenum type = gl::ExtractType(internalformat);
D3DFORMAT d3dfmt = ConvertTextureFormatType(format, type);
- const bool renderable = (mUsage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
+ const bool renderTarget = IsTextureFormatRenderable(d3dfmt) && (mUsage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
delete mTexStorage;
- mTexStorage = new TextureStorage2D(levels, d3dfmt, width, height, renderable);
+ mTexStorage = new TextureStorage2D(levels, d3dfmt, width, height, renderTarget);
mImmutable = true;
for (int level = 0; level < levels; level++)
@@ -2154,10 +2154,10 @@
GLsizei height = mImageArray[0].getHeight();
GLint levels = creationLevels(width, height);
D3DFORMAT format = mImageArray[0].getD3DFormat();
- const bool renderable = (mUsage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
+ const bool renderTarget = IsTextureFormatRenderable(format) && (mUsage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
delete mTexStorage;
- mTexStorage = new TextureStorage2D(levels, format, width, height, renderable);
+ mTexStorage = new TextureStorage2D(levels, format, width, height, renderTarget);
if (mTexStorage->isManaged())
{
@@ -2631,10 +2631,10 @@
GLsizei size = mImageArray[0][0].getWidth();
GLint levels = creationLevels(size, 0);
D3DFORMAT format = mImageArray[0][0].getD3DFormat();
- const bool renderable = (mUsage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
+ const bool renderTarget = IsTextureFormatRenderable(format) && (mUsage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
delete mTexStorage;
- mTexStorage = new TextureStorageCubeMap(levels, format, size, renderable);
+ mTexStorage = new TextureStorageCubeMap(levels, format, size, renderTarget);
if (mTexStorage->isManaged())
{
@@ -2868,10 +2868,10 @@
GLenum format = gl::ExtractFormat(internalformat);
GLenum type = gl::ExtractType(internalformat);
D3DFORMAT d3dfmt = ConvertTextureFormatType(format, type);
- const bool renderable = (mUsage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
+ const bool renderTarget = IsTextureFormatRenderable(d3dfmt) && (mUsage == GL_FRAMEBUFFER_ATTACHMENT_ANGLE);
delete mTexStorage;
- mTexStorage = new TextureStorageCubeMap(levels, d3dfmt, size, renderable);
+ mTexStorage = new TextureStorageCubeMap(levels, d3dfmt, size, renderTarget);
mImmutable = true;
for (int level = 0; level < levels; level++)