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 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)
......
......@@ -1996,10 +1996,10 @@ void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GL
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 @@ void Texture2D::createTexture()
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 @@ void TextureCubeMap::createTexture()
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 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
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++)
......
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