Commit 1f8532bd by Geoff Lang

Refactor Texture::storage methods to use gl::Error objects.

BUG=angle:520 Change-Id: I33bc8479815a587749bddc722ac9fe5a85f554cb Reviewed-on: https://chromium-review.googlesource.com/216648Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent ef7b016a
...@@ -282,11 +282,17 @@ Error Texture2D::copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei ...@@ -282,11 +282,17 @@ Error Texture2D::copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei
return mTexture->copyImage(GL_TEXTURE_2D, level, format, x, y, width, height, source); return mTexture->copyImage(GL_TEXTURE_2D, level, format, x, y, width, height, source);
} }
void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) Error Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
{ {
Error error = mTexture->storage(GL_TEXTURE_2D, levels, internalformat, width, height, 1);
if (error.isError())
{
return error;
}
mImmutable = true; mImmutable = true;
mTexture->storage(GL_TEXTURE_2D, levels, internalformat, width, height, 1); return Error(GL_NO_ERROR);
} }
// Tests for 2D texture sampling completeness. [OpenGL ES 2.0.24] section 3.8.2 page 85. // Tests for 2D texture sampling completeness. [OpenGL ES 2.0.24] section 3.8.2 page 85.
...@@ -537,11 +543,17 @@ Error TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint ...@@ -537,11 +543,17 @@ Error TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint
return mTexture->copyImage(target, level, format, x, y, width, height, source); return mTexture->copyImage(target, level, format, x, y, width, height, source);
} }
void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size) Error TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size)
{ {
Error error = mTexture->storage(GL_TEXTURE_CUBE_MAP, levels, internalformat, size, size, 1);
if (error.isError())
{
return error;
}
mImmutable = true; mImmutable = true;
mTexture->storage(GL_TEXTURE_CUBE_MAP, levels, internalformat, size, size, 1); return Error(GL_NO_ERROR);
} }
// Tests for texture sampling completeness // Tests for texture sampling completeness
...@@ -740,11 +752,17 @@ Error Texture3D::subImageCompressed(GLint level, GLint xoffset, GLint yoffset, G ...@@ -740,11 +752,17 @@ Error Texture3D::subImageCompressed(GLint level, GLint xoffset, GLint yoffset, G
return mTexture->subImageCompressed(GL_TEXTURE_3D, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, pixels); return mTexture->subImageCompressed(GL_TEXTURE_3D, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, pixels);
} }
void Texture3D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) Error Texture3D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{ {
Error error = mTexture->storage(GL_TEXTURE_3D, levels, internalformat, width, height, depth);
if (error.isError())
{
return error;
}
mImmutable = true; mImmutable = true;
mTexture->storage(GL_TEXTURE_3D, levels, internalformat, width, height, depth); return Error(GL_NO_ERROR);
} }
bool Texture3D::isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const bool Texture3D::isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const
...@@ -901,11 +919,17 @@ Error Texture2DArray::subImageCompressed(GLint level, GLint xoffset, GLint yoffs ...@@ -901,11 +919,17 @@ Error Texture2DArray::subImageCompressed(GLint level, GLint xoffset, GLint yoffs
return mTexture->subImageCompressed(GL_TEXTURE_2D_ARRAY, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, pixels); return mTexture->subImageCompressed(GL_TEXTURE_2D_ARRAY, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, pixels);
} }
void Texture2DArray::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) Error Texture2DArray::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{ {
Error error = mTexture->storage(GL_TEXTURE_2D_ARRAY, levels, internalformat, width, height, depth);
if (error.isError())
{
return error;
}
mImmutable = true; mImmutable = true;
mTexture->storage(GL_TEXTURE_2D_ARRAY, levels, internalformat, width, height, depth); return Error(GL_NO_ERROR);
} }
bool Texture2DArray::isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const bool Texture2DArray::isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const
......
...@@ -121,7 +121,7 @@ class Texture2D : public Texture ...@@ -121,7 +121,7 @@ class Texture2D : public Texture
Error subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels); Error subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels);
Error subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels); Error subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels);
Error copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source); Error copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
void storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); Error storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
virtual bool isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const; virtual bool isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const;
virtual void bindTexImage(egl::Surface *surface); virtual void bindTexImage(egl::Surface *surface);
...@@ -157,7 +157,7 @@ class TextureCubeMap : public Texture ...@@ -157,7 +157,7 @@ class TextureCubeMap : public Texture
Error subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels); Error subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels);
Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels); Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels);
Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source); Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
void storage(GLsizei levels, GLenum internalformat, GLsizei size); Error storage(GLsizei levels, GLenum internalformat, GLsizei size);
virtual bool isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const; virtual bool isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const;
...@@ -192,7 +192,7 @@ class Texture3D : public Texture ...@@ -192,7 +192,7 @@ class Texture3D : public Texture
Error setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, const void *pixels); Error setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, const void *pixels);
Error subImage(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels); Error subImage(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels);
Error subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels); Error subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels);
void storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); Error storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
virtual bool isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const; virtual bool isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const;
...@@ -222,7 +222,7 @@ class Texture2DArray : public Texture ...@@ -222,7 +222,7 @@ class Texture2DArray : public Texture
Error setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, const void *pixels); Error setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, const void *pixels);
Error subImage(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels); Error subImage(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const PixelUnpackState &unpack, const void *pixels);
Error subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels); Error subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels);
void storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); Error storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
virtual bool isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const; virtual bool isSamplerComplete(const SamplerState &samplerState, const TextureCapsMap &textureCaps, const Extensions &extensions, int clientVersion) const;
......
...@@ -4378,14 +4378,24 @@ void GL_APIENTRY glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum interna ...@@ -4378,14 +4378,24 @@ void GL_APIENTRY glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum interna
case GL_TEXTURE_2D: case GL_TEXTURE_2D:
{ {
gl::Texture2D *texture2d = context->getTexture2D(); gl::Texture2D *texture2d = context->getTexture2D();
texture2d->storage(levels, internalformat, width, height); gl::Error error = texture2d->storage(levels, internalformat, width, height);
if (error.isError())
{
context->recordError(error);
return;
}
} }
break; break;
case GL_TEXTURE_CUBE_MAP: case GL_TEXTURE_CUBE_MAP:
{ {
gl::TextureCubeMap *textureCube = context->getTextureCubeMap(); gl::TextureCubeMap *textureCube = context->getTextureCubeMap();
textureCube->storage(levels, internalformat, width); gl::Error error = textureCube->storage(levels, internalformat, width);
if (error.isError())
{
context->recordError(error);
return;
}
} }
break; break;
...@@ -8313,14 +8323,24 @@ void GL_APIENTRY glTexStorage2D(GLenum target, GLsizei levels, GLenum internalfo ...@@ -8313,14 +8323,24 @@ void GL_APIENTRY glTexStorage2D(GLenum target, GLsizei levels, GLenum internalfo
case GL_TEXTURE_2D: case GL_TEXTURE_2D:
{ {
gl::Texture2D *texture2d = context->getTexture2D(); gl::Texture2D *texture2d = context->getTexture2D();
texture2d->storage(levels, internalformat, width, height); gl::Error error = texture2d->storage(levels, internalformat, width, height);
if (error.isError())
{
context->recordError(error);
return;
}
} }
break; break;
case GL_TEXTURE_CUBE_MAP: case GL_TEXTURE_CUBE_MAP:
{ {
gl::TextureCubeMap *textureCube = context->getTextureCubeMap(); gl::TextureCubeMap *textureCube = context->getTextureCubeMap();
textureCube->storage(levels, internalformat, width); gl::Error error = textureCube->storage(levels, internalformat, width);
if (error.isError())
{
context->recordError(error);
return;
}
} }
break; break;
...@@ -8356,14 +8376,24 @@ void GL_APIENTRY glTexStorage3D(GLenum target, GLsizei levels, GLenum internalfo ...@@ -8356,14 +8376,24 @@ void GL_APIENTRY glTexStorage3D(GLenum target, GLsizei levels, GLenum internalfo
case GL_TEXTURE_3D: case GL_TEXTURE_3D:
{ {
gl::Texture3D *texture3d = context->getTexture3D(); gl::Texture3D *texture3d = context->getTexture3D();
texture3d->storage(levels, internalformat, width, height, depth); gl::Error error = texture3d->storage(levels, internalformat, width, height, depth);
if (error.isError())
{
context->recordError(error);
return;
}
} }
break; break;
case GL_TEXTURE_2D_ARRAY: case GL_TEXTURE_2D_ARRAY:
{ {
gl::Texture2DArray *texture2darray = context->getTexture2DArray(); gl::Texture2DArray *texture2darray = context->getTexture2DArray();
texture2darray->storage(levels, internalformat, width, height, depth); gl::Error error = texture2darray->storage(levels, internalformat, width, height, depth);
if (error.isError())
{
context->recordError(error);
return;
}
} }
break; break;
......
...@@ -58,7 +58,7 @@ class TextureImpl ...@@ -58,7 +58,7 @@ class TextureImpl
virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels) = 0; virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels) = 0;
virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source) = 0; virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source) = 0;
virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source) = 0; virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source) = 0;
virtual void storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) = 0; virtual gl::Error storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) = 0;
virtual void generateMipmaps() = 0; virtual void generateMipmaps() = 0;
......
...@@ -705,7 +705,7 @@ gl::Error TextureD3D_2D::copySubImage(GLenum target, GLint level, GLint xoffset, ...@@ -705,7 +705,7 @@ gl::Error TextureD3D_2D::copySubImage(GLenum target, GLint level, GLint xoffset,
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
void TextureD3D_2D::storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) gl::Error TextureD3D_2D::storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{ {
ASSERT(target == GL_TEXTURE_2D && depth == 1); ASSERT(target == GL_TEXTURE_2D && depth == 1);
...@@ -721,11 +721,20 @@ void TextureD3D_2D::storage(GLenum target, GLsizei levels, GLenum internalformat ...@@ -721,11 +721,20 @@ void TextureD3D_2D::storage(GLenum target, GLsizei levels, GLenum internalformat
mImageArray[level]->redefine(mRenderer, GL_TEXTURE_2D, GL_NONE, 0, 0, 0, true); mImageArray[level]->redefine(mRenderer, GL_TEXTURE_2D, GL_NONE, 0, 0, 0, true);
} }
mImmutable = true; // TODO(geofflang): Verify storage creation had no errors
bool renderTarget = IsRenderTargetUsage(mUsage); bool renderTarget = IsRenderTargetUsage(mUsage);
TextureStorage *storage = mRenderer->createTextureStorage2D(internalformat, renderTarget, width, height, levels); TextureStorage *storage = mRenderer->createTextureStorage2D(internalformat, renderTarget, width, height, levels);
setCompleteTexStorage(storage);
gl::Error error = setCompleteTexStorage(storage);
if (error.isError())
{
SafeDelete(storage);
return error;
}
mImmutable = true;
return gl::Error(GL_NO_ERROR);
} }
void TextureD3D_2D::bindTexImage(egl::Surface *surface) void TextureD3D_2D::bindTexImage(egl::Surface *surface)
...@@ -1235,7 +1244,7 @@ gl::Error TextureD3D_Cube::copySubImage(GLenum target, GLint level, GLint xoffse ...@@ -1235,7 +1244,7 @@ gl::Error TextureD3D_Cube::copySubImage(GLenum target, GLint level, GLint xoffse
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
void TextureD3D_Cube::storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) gl::Error TextureD3D_Cube::storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{ {
ASSERT(width == height); ASSERT(width == height);
ASSERT(depth == 1); ASSERT(depth == 1);
...@@ -1257,11 +1266,20 @@ void TextureD3D_Cube::storage(GLenum target, GLsizei levels, GLenum internalform ...@@ -1257,11 +1266,20 @@ void TextureD3D_Cube::storage(GLenum target, GLsizei levels, GLenum internalform
} }
} }
mImmutable = true; // TODO(geofflang): Verify storage creation had no errors
bool renderTarget = IsRenderTargetUsage(mUsage); bool renderTarget = IsRenderTargetUsage(mUsage);
TextureStorage *storage = mRenderer->createTextureStorageCube(internalformat, renderTarget, width, levels); TextureStorage *storage = mRenderer->createTextureStorageCube(internalformat, renderTarget, width, levels);
setCompleteTexStorage(storage);
gl::Error error = setCompleteTexStorage(storage);
if (error.isError())
{
SafeDelete(storage);
return error;
}
mImmutable = true;
return gl::Error(GL_NO_ERROR);
} }
// Tests for cube texture completeness. [OpenGL ES 2.0.24] section 3.7.10 page 81. // Tests for cube texture completeness. [OpenGL ES 2.0.24] section 3.7.10 page 81.
...@@ -1829,7 +1847,7 @@ gl::Error TextureD3D_3D::copySubImage(GLenum target, GLint level, GLint xoffset, ...@@ -1829,7 +1847,7 @@ gl::Error TextureD3D_3D::copySubImage(GLenum target, GLint level, GLint xoffset,
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
void TextureD3D_3D::storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) gl::Error TextureD3D_3D::storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{ {
ASSERT(target == GL_TEXTURE_3D); ASSERT(target == GL_TEXTURE_3D);
...@@ -1846,11 +1864,20 @@ void TextureD3D_3D::storage(GLenum target, GLsizei levels, GLenum internalformat ...@@ -1846,11 +1864,20 @@ void TextureD3D_3D::storage(GLenum target, GLsizei levels, GLenum internalformat
mImageArray[level]->redefine(mRenderer, GL_TEXTURE_3D, GL_NONE, 0, 0, 0, true); mImageArray[level]->redefine(mRenderer, GL_TEXTURE_3D, GL_NONE, 0, 0, 0, true);
} }
mImmutable = true; // TODO(geofflang): Verify storage creation had no errors
bool renderTarget = IsRenderTargetUsage(mUsage); bool renderTarget = IsRenderTargetUsage(mUsage);
TextureStorage *storage = mRenderer->createTextureStorage3D(internalformat, renderTarget, width, height, depth, levels); TextureStorage *storage = mRenderer->createTextureStorage3D(internalformat, renderTarget, width, height, depth, levels);
setCompleteTexStorage(storage);
gl::Error error = setCompleteTexStorage(storage);
if (error.isError())
{
SafeDelete(storage);
return error;
}
mImmutable = true;
return gl::Error(GL_NO_ERROR);
} }
void TextureD3D_3D::bindTexImage(egl::Surface *surface) void TextureD3D_3D::bindTexImage(egl::Surface *surface)
...@@ -2360,7 +2387,7 @@ gl::Error TextureD3D_2DArray::copySubImage(GLenum target, GLint level, GLint xof ...@@ -2360,7 +2387,7 @@ gl::Error TextureD3D_2DArray::copySubImage(GLenum target, GLint level, GLint xof
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
void TextureD3D_2DArray::storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) gl::Error TextureD3D_2DArray::storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
{ {
ASSERT(target == GL_TEXTURE_2D_ARRAY); ASSERT(target == GL_TEXTURE_2D_ARRAY);
...@@ -2387,11 +2414,20 @@ void TextureD3D_2DArray::storage(GLenum target, GLsizei levels, GLenum internalf ...@@ -2387,11 +2414,20 @@ void TextureD3D_2DArray::storage(GLenum target, GLsizei levels, GLenum internalf
} }
} }
mImmutable = true; // TODO(geofflang): Verify storage creation had no errors
bool renderTarget = IsRenderTargetUsage(mUsage); bool renderTarget = IsRenderTargetUsage(mUsage);
TextureStorage *storage = mRenderer->createTextureStorage2DArray(internalformat, renderTarget, width, height, depth, levels); TextureStorage *storage = mRenderer->createTextureStorage2DArray(internalformat, renderTarget, width, height, depth, levels);
setCompleteTexStorage(storage);
gl::Error error = setCompleteTexStorage(storage);
if (error.isError())
{
SafeDelete(storage);
return error;
}
mImmutable = true;
return gl::Error(GL_NO_ERROR);
} }
void TextureD3D_2DArray::bindTexImage(egl::Surface *surface) void TextureD3D_2DArray::bindTexImage(egl::Surface *surface)
......
...@@ -123,7 +123,7 @@ class TextureD3D_2D : public TextureD3D ...@@ -123,7 +123,7 @@ class TextureD3D_2D : public TextureD3D
virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels); virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels);
virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
virtual void storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); virtual gl::Error storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
virtual void bindTexImage(egl::Surface *surface); virtual void bindTexImage(egl::Surface *surface);
virtual void releaseTexImage(); virtual void releaseTexImage();
...@@ -178,7 +178,7 @@ class TextureD3D_Cube : public TextureD3D ...@@ -178,7 +178,7 @@ class TextureD3D_Cube : public TextureD3D
virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels); virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels);
virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
virtual void storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); virtual gl::Error storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
virtual void bindTexImage(egl::Surface *surface); virtual void bindTexImage(egl::Surface *surface);
virtual void releaseTexImage(); virtual void releaseTexImage();
...@@ -232,7 +232,7 @@ class TextureD3D_3D : public TextureD3D ...@@ -232,7 +232,7 @@ class TextureD3D_3D : public TextureD3D
virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels); virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels);
virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
virtual void storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); virtual gl::Error storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
virtual void bindTexImage(egl::Surface *surface); virtual void bindTexImage(egl::Surface *surface);
virtual void releaseTexImage(); virtual void releaseTexImage();
...@@ -284,7 +284,7 @@ class TextureD3D_2DArray : public TextureD3D ...@@ -284,7 +284,7 @@ class TextureD3D_2DArray : public TextureD3D
virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels); virtual gl::Error subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels);
virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); virtual gl::Error copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source); virtual gl::Error copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source);
virtual void storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); virtual gl::Error storage(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
virtual void bindTexImage(egl::Surface *surface); virtual void bindTexImage(egl::Surface *surface);
virtual void releaseTexImage(); virtual void releaseTexImage();
......
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