Commit d787e50b by Jamie Madill Committed by Commit Bot

Try more to use ANGLE_TRY.

Also refactor the Renderer11::copyImage functions to share code. BUG=angleproject:1384 Change-Id: I95f4266c0c9b67a13cba17797989fcc0b0d50c1d Reviewed-on: https://chromium-review.googlesource.com/347248Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 093a4c3c
...@@ -755,19 +755,12 @@ gl::Error TextureD3D_2D::setImage(GLenum target, ...@@ -755,19 +755,12 @@ gl::Error TextureD3D_2D::setImage(GLenum target,
{ {
// Will try to create RT storage if it does not exist // Will try to create RT storage if it does not exist
RenderTargetD3D *destRenderTarget = NULL; RenderTargetD3D *destRenderTarget = NULL;
gl::Error error = getRenderTarget(index, &destRenderTarget); ANGLE_TRY(getRenderTarget(index, &destRenderTarget));
if (error.isError())
{
return error;
}
gl::Box destArea(0, 0, 0, getWidth(level), getHeight(level), 1); gl::Box destArea(0, 0, 0, getWidth(level), getHeight(level), 1);
error = fastUnpackPixels(unpack, pixels, destArea, sizedInternalFormat, type, destRenderTarget); ANGLE_TRY(fastUnpackPixels(unpack, pixels, destArea, sizedInternalFormat, type,
if (error.isError()) destRenderTarget));
{
return error;
}
// Ensure we don't overwrite our newly initialized data // Ensure we don't overwrite our newly initialized data
mImageArray[level]->markClean(); mImageArray[level]->markClean();
...@@ -777,11 +770,7 @@ gl::Error TextureD3D_2D::setImage(GLenum target, ...@@ -777,11 +770,7 @@ gl::Error TextureD3D_2D::setImage(GLenum target,
if (!fastUnpacked) if (!fastUnpacked)
{ {
gl::Error error = setImageImpl(index, type, unpack, pixels, 0); ANGLE_TRY(setImageImpl(index, type, unpack, pixels, 0));
if (error.isError())
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
...@@ -802,12 +791,7 @@ gl::Error TextureD3D_2D::setSubImage(GLenum target, ...@@ -802,12 +791,7 @@ gl::Error TextureD3D_2D::setSubImage(GLenum target,
if (isFastUnpackable(unpack, getInternalFormat(level)) && isLevelComplete(level)) if (isFastUnpackable(unpack, getInternalFormat(level)) && isLevelComplete(level))
{ {
RenderTargetD3D *renderTarget = NULL; RenderTargetD3D *renderTarget = NULL;
gl::Error error = getRenderTarget(index, &renderTarget); ANGLE_TRY(getRenderTarget(index, &renderTarget));
if (error.isError())
{
return error;
}
ASSERT(!mImageArray[level]->isDirty()); ASSERT(!mImageArray[level]->isDirty());
return fastUnpackPixels(unpack, pixels, area, getInternalFormat(level), type, renderTarget); return fastUnpackPixels(unpack, pixels, area, getInternalFormat(level), type, renderTarget);
...@@ -841,11 +825,7 @@ gl::Error TextureD3D_2D::setCompressedSubImage(GLenum target, size_t level, cons ...@@ -841,11 +825,7 @@ gl::Error TextureD3D_2D::setCompressedSubImage(GLenum target, size_t level, cons
ASSERT(target == GL_TEXTURE_2D && area.depth == 1 && area.z == 0); ASSERT(target == GL_TEXTURE_2D && area.depth == 1 && area.z == 0);
gl::ImageIndex index = gl::ImageIndex::Make2D(static_cast<GLint>(level)); gl::ImageIndex index = gl::ImageIndex::Make2D(static_cast<GLint>(level));
gl::Error error = TextureD3D::subImageCompressed(index, area, format, unpack, pixels, 0); ANGLE_TRY(TextureD3D::subImageCompressed(index, area, format, unpack, pixels, 0));
if (error.isError())
{
return error;
}
return commitRegion(index, area); return commitRegion(index, area);
} }
...@@ -870,31 +850,18 @@ gl::Error TextureD3D_2D::copyImage(GLenum target, ...@@ -870,31 +850,18 @@ gl::Error TextureD3D_2D::copyImage(GLenum target,
// so we should use the non-rendering copy path. // so we should use the non-rendering copy path.
if (!canCreateRenderTargetForImage(index) || mRenderer->getWorkarounds().zeroMaxLodWorkaround) if (!canCreateRenderTargetForImage(index) || mRenderer->getWorkarounds().zeroMaxLodWorkaround)
{ {
gl::Error error = mImageArray[level]->copyFromFramebuffer(destOffset, sourceArea, source); ANGLE_TRY(mImageArray[level]->copyFromFramebuffer(destOffset, sourceArea, source));
if (error.isError())
{
return error;
}
mDirtyImages = true; mDirtyImages = true;
} }
else else
{ {
gl::Error error = ensureRenderTarget(); ANGLE_TRY(ensureRenderTarget());
if (error.isError())
{
return error;
}
mImageArray[level]->markClean(); mImageArray[level]->markClean();
if (sourceArea.width != 0 && sourceArea.height != 0 && isValidLevel(level)) if (sourceArea.width != 0 && sourceArea.height != 0 && isValidLevel(level))
{ {
error = mRenderer->copyImage2D(source, sourceArea, internalFormat, destOffset, mTexStorage, level); ANGLE_TRY(mRenderer->copyImage2D(source, sourceArea, internalFormat, destOffset,
if (error.isError()) mTexStorage, level));
{
return error;
}
} }
} }
...@@ -919,37 +886,19 @@ gl::Error TextureD3D_2D::copySubImage(GLenum target, ...@@ -919,37 +886,19 @@ gl::Error TextureD3D_2D::copySubImage(GLenum target,
// so we should use the non-rendering copy path. // so we should use the non-rendering copy path.
if (!canCreateRenderTargetForImage(index) || mRenderer->getWorkarounds().zeroMaxLodWorkaround) if (!canCreateRenderTargetForImage(index) || mRenderer->getWorkarounds().zeroMaxLodWorkaround)
{ {
gl::Error error = mImageArray[level]->copyFromFramebuffer(destOffset, sourceArea, source); ANGLE_TRY(mImageArray[level]->copyFromFramebuffer(destOffset, sourceArea, source));
if (error.isError())
{
return error;
}
mDirtyImages = true; mDirtyImages = true;
} }
else else
{ {
gl::Error error = ensureRenderTarget(); ANGLE_TRY(ensureRenderTarget());
if (error.isError())
{
return error;
}
if (isValidLevel(level)) if (isValidLevel(level))
{ {
error = updateStorageLevel(level); ANGLE_TRY(updateStorageLevel(level));
if (error.isError()) ANGLE_TRY(mRenderer->copyImage2D(
{ source, sourceArea, gl::GetInternalFormatInfo(getBaseLevelInternalFormat()).format,
return error; destOffset, mTexStorage, level));
}
error = mRenderer->copyImage2D(source, sourceArea,
gl::GetInternalFormatInfo(getBaseLevelInternalFormat()).format,
destOffset, mTexStorage, level);
if (error.isError())
{
return error;
}
} }
} }
......
...@@ -770,11 +770,7 @@ gl::Error Blit11::copyTexture(ID3D11ShaderResourceView *source, ...@@ -770,11 +770,7 @@ gl::Error Blit11::copyTexture(ID3D11ShaderResourceView *source,
GLenum filter, GLenum filter,
bool maskOffAlpha) bool maskOffAlpha)
{ {
gl::Error error = initResources(); ANGLE_TRY(initResources());
if (error.isError())
{
return error;
}
HRESULT result; HRESULT result;
ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext();
...@@ -794,12 +790,7 @@ gl::Error Blit11::copyTexture(ID3D11ShaderResourceView *source, ...@@ -794,12 +790,7 @@ gl::Error Blit11::copyTexture(ID3D11ShaderResourceView *source,
ShaderDimension dimension = (sourceSRVDesc.ViewDimension == D3D11_SRV_DIMENSION_TEXTURE3D) ? SHADER_3D : SHADER_2D; ShaderDimension dimension = (sourceSRVDesc.ViewDimension == D3D11_SRV_DIMENSION_TEXTURE3D) ? SHADER_3D : SHADER_2D;
const Shader *shader = nullptr; const Shader *shader = nullptr;
error = getBlitShader(destFormat, isSigned, dimension, &shader); ANGLE_TRY(getBlitShader(destFormat, isSigned, dimension, &shader));
if (error.isError())
{
return error;
}
const ShaderSupport &support = getShaderSupport(*shader); const ShaderSupport &support = getShaderSupport(*shader);
// Set vertices // Set vertices
...@@ -905,7 +896,7 @@ gl::Error Blit11::copyTexture(ID3D11ShaderResourceView *source, ...@@ -905,7 +896,7 @@ gl::Error Blit11::copyTexture(ID3D11ShaderResourceView *source,
mRenderer->markAllStateDirty(); mRenderer->markAllStateDirty();
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Blit11::copyStencil(ID3D11Resource *source, unsigned int sourceSubresource, const gl::Box &sourceArea, const gl::Extents &sourceSize, gl::Error Blit11::copyStencil(ID3D11Resource *source, unsigned int sourceSubresource, const gl::Box &sourceArea, const gl::Extents &sourceSize,
......
...@@ -424,6 +424,12 @@ class Renderer11 : public RendererD3D ...@@ -424,6 +424,12 @@ class Renderer11 : public RendererD3D
size_t samplerMetadataReferencedBytes, size_t samplerMetadataReferencedBytes,
ID3D11Buffer *driverConstantBuffer); ID3D11Buffer *driverConstantBuffer);
gl::Error copyImageInternal(const gl::Framebuffer *framebuffer,
const gl::Rectangle &sourceRect,
GLenum destFormat,
const gl::Offset &destOffset,
RenderTargetD3D *destRenderTarget);
HMODULE mD3d11Module; HMODULE mD3d11Module;
HMODULE mDxgiModule; HMODULE mDxgiModule;
HMODULE mDCompModule; HMODULE mDCompModule;
......
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