Only allow renderable d3dformats to be flagged as rendertarget texstorage

Trac #19356 Issue=273 Signed-off-by: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@928 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 2e566dc3
#define MAJOR_VERSION 1 #define MAJOR_VERSION 1
#define MINOR_VERSION 0 #define MINOR_VERSION 0
#define BUILD_VERSION 0 #define BUILD_VERSION 0
#define BUILD_REVISION 927 #define BUILD_REVISION 928
#define STRINGIFY(x) #x #define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x) #define MACRO_STRINGIFY(x) STRINGIFY(x)
......
...@@ -1996,10 +1996,10 @@ void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL ...@@ -1996,10 +1996,10 @@ void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL
GLenum format = gl::ExtractFormat(internalformat); GLenum format = gl::ExtractFormat(internalformat);
GLenum type = gl::ExtractType(internalformat); GLenum type = gl::ExtractType(internalformat);
D3DFORMAT d3dfmt = ConvertTextureFormatType(format, type); 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; delete mTexStorage;
mTexStorage = new TextureStorage2D(levels, d3dfmt, width, height, renderable); mTexStorage = new TextureStorage2D(levels, d3dfmt, width, height, renderTarget);
mImmutable = true; mImmutable = true;
for (int level = 0; level < levels; level++) for (int level = 0; level < levels; level++)
...@@ -2154,10 +2154,10 @@ void Texture2D::createTexture() ...@@ -2154,10 +2154,10 @@ void Texture2D::createTexture()
GLsizei height = mImageArray[0].getHeight(); GLsizei height = mImageArray[0].getHeight();
GLint levels = creationLevels(width, height); GLint levels = creationLevels(width, height);
D3DFORMAT format = mImageArray[0].getD3DFormat(); 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; delete mTexStorage;
mTexStorage = new TextureStorage2D(levels, format, width, height, renderable); mTexStorage = new TextureStorage2D(levels, format, width, height, renderTarget);
if (mTexStorage->isManaged()) if (mTexStorage->isManaged())
{ {
...@@ -2631,10 +2631,10 @@ void TextureCubeMap::createTexture() ...@@ -2631,10 +2631,10 @@ void TextureCubeMap::createTexture()
GLsizei size = mImageArray[0][0].getWidth(); GLsizei size = mImageArray[0][0].getWidth();
GLint levels = creationLevels(size, 0); GLint levels = creationLevels(size, 0);
D3DFORMAT format = mImageArray[0][0].getD3DFormat(); 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; delete mTexStorage;
mTexStorage = new TextureStorageCubeMap(levels, format, size, renderable); mTexStorage = new TextureStorageCubeMap(levels, format, size, renderTarget);
if (mTexStorage->isManaged()) if (mTexStorage->isManaged())
{ {
...@@ -2868,10 +2868,10 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size ...@@ -2868,10 +2868,10 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
GLenum format = gl::ExtractFormat(internalformat); GLenum format = gl::ExtractFormat(internalformat);
GLenum type = gl::ExtractType(internalformat); GLenum type = gl::ExtractType(internalformat);
D3DFORMAT d3dfmt = ConvertTextureFormatType(format, type); 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; delete mTexStorage;
mTexStorage = new TextureStorageCubeMap(levels, d3dfmt, size, renderable); mTexStorage = new TextureStorageCubeMap(levels, d3dfmt, size, renderTarget);
mImmutable = true; mImmutable = true;
for (int level = 0; level < levels; level++) for (int level = 0; level < levels; level++)
......
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