Commit 8234e7b3 by Jamie Madill Committed by Commit Bot

Refactor some errors into ANGLE_TRY macros.

BUG=None Change-Id: I00ff2523995cb49d1af60cae62c2bba0d020eed4 Reviewed-on: https://chromium-review.googlesource.com/395569 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent ef300b15
...@@ -179,11 +179,7 @@ gl::Error BufferD3D::getIndexRange(GLenum type, ...@@ -179,11 +179,7 @@ gl::Error BufferD3D::getIndexRange(GLenum type,
gl::IndexRange *outRange) gl::IndexRange *outRange)
{ {
const uint8_t *data = nullptr; const uint8_t *data = nullptr;
gl::Error error = getData(&data); ANGLE_TRY(getData(&data));
if (error.isError())
{
return error;
}
*outRange = gl::ComputeIndexRange(type, data + offset, count, primitiveRestartEnabled); *outRange = gl::ComputeIndexRange(type, data + offset, count, primitiveRestartEnabled);
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
......
...@@ -46,12 +46,7 @@ gl::Error GetUnpackPointer(const gl::PixelUnpackState &unpack, const uint8_t *pi ...@@ -46,12 +46,7 @@ gl::Error GetUnpackPointer(const gl::PixelUnpackState &unpack, const uint8_t *pi
BufferD3D *bufferD3D = GetImplAs<BufferD3D>(pixelBuffer); BufferD3D *bufferD3D = GetImplAs<BufferD3D>(pixelBuffer);
ASSERT(bufferD3D); ASSERT(bufferD3D);
const uint8_t *bufferData = NULL; const uint8_t *bufferData = NULL;
gl::Error error = bufferD3D->getData(&bufferData); ANGLE_TRY(bufferD3D->getData(&bufferData));
if (error.isError())
{
return error;
}
*pointerOut = bufferData + offset; *pointerOut = bufferData + offset;
} }
else else
...@@ -92,25 +87,17 @@ TextureD3D::~TextureD3D() ...@@ -92,25 +87,17 @@ TextureD3D::~TextureD3D()
gl::Error TextureD3D::getNativeTexture(TextureStorage **outStorage) gl::Error TextureD3D::getNativeTexture(TextureStorage **outStorage)
{ {
// ensure the underlying texture is created // ensure the underlying texture is created
gl::Error error = initializeStorage(false); ANGLE_TRY(initializeStorage(false));
if (error.isError())
{
return error;
}
if (mTexStorage) if (mTexStorage)
{ {
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
} }
ASSERT(outStorage); ASSERT(outStorage);
*outStorage = mTexStorage; *outStorage = mTexStorage;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
GLint TextureD3D::getLevelZeroWidth() const GLint TextureD3D::getLevelZeroWidth() const
...@@ -195,33 +182,24 @@ gl::Error TextureD3D::setImageImpl(const gl::ImageIndex &index, ...@@ -195,33 +182,24 @@ gl::Error TextureD3D::setImageImpl(const gl::ImageIndex &index,
// We no longer need the "GLenum format" parameter to TexImage to determine what data format "pixels" contains. // We no longer need the "GLenum format" parameter to TexImage to determine what data format "pixels" contains.
// From our image internal format we know how many channels to expect, and "type" gives the format of pixel's components. // From our image internal format we know how many channels to expect, and "type" gives the format of pixel's components.
const uint8_t *pixelData = NULL; const uint8_t *pixelData = NULL;
gl::Error error = GetUnpackPointer(unpack, pixels, layerOffset, &pixelData); ANGLE_TRY(GetUnpackPointer(unpack, pixels, layerOffset, &pixelData));
if (error.isError())
{
return error;
}
if (pixelData != nullptr) if (pixelData != nullptr)
{ {
if (shouldUseSetData(image)) if (shouldUseSetData(image))
{ {
error = mTexStorage->setData(index, image, NULL, type, unpack, pixelData); ANGLE_TRY(mTexStorage->setData(index, image, NULL, type, unpack, pixelData));
} }
else else
{ {
gl::Box fullImageArea(0, 0, 0, image->getWidth(), image->getHeight(), image->getDepth()); gl::Box fullImageArea(0, 0, 0, image->getWidth(), image->getHeight(), image->getDepth());
error = image->loadData(fullImageArea, unpack, type, pixelData, index.is3D()); ANGLE_TRY(image->loadData(fullImageArea, unpack, type, pixelData, index.is3D()));
}
if (error.isError())
{
return error;
} }
mDirtyImages = true; mDirtyImages = true;
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D::subImage(const gl::ImageIndex &index, const gl::Box &area, GLenum format, GLenum type, gl::Error TextureD3D::subImage(const gl::ImageIndex &index, const gl::Box &area, GLenum format, GLenum type,
...@@ -229,11 +207,7 @@ gl::Error TextureD3D::subImage(const gl::ImageIndex &index, const gl::Box &area, ...@@ -229,11 +207,7 @@ gl::Error TextureD3D::subImage(const gl::ImageIndex &index, const gl::Box &area,
{ {
// CPU readback & copy where direct GPU copy is not supported // CPU readback & copy where direct GPU copy is not supported
const uint8_t *pixelData = NULL; const uint8_t *pixelData = NULL;
gl::Error error = GetUnpackPointer(unpack, pixels, layerOffset, &pixelData); ANGLE_TRY(GetUnpackPointer(unpack, pixels, layerOffset, &pixelData));
if (error.isError())
{
return error;
}
if (pixelData != NULL) if (pixelData != NULL)
{ {
...@@ -245,18 +219,8 @@ gl::Error TextureD3D::subImage(const gl::ImageIndex &index, const gl::Box &area, ...@@ -245,18 +219,8 @@ gl::Error TextureD3D::subImage(const gl::ImageIndex &index, const gl::Box &area,
return mTexStorage->setData(index, image, &area, type, unpack, pixelData); return mTexStorage->setData(index, image, &area, type, unpack, pixelData);
} }
error = image->loadData(area, unpack, type, pixelData, index.is3D()); ANGLE_TRY(image->loadData(area, unpack, type, pixelData, index.is3D()));
if (error.isError()) ANGLE_TRY(commitRegion(index, area));
{
return error;
}
error = commitRegion(index, area);
if (error.isError())
{
return error;
}
mDirtyImages = true; mDirtyImages = true;
} }
...@@ -279,20 +243,12 @@ gl::Error TextureD3D::setCompressedImageImpl(const gl::ImageIndex &index, ...@@ -279,20 +243,12 @@ gl::Error TextureD3D::setCompressedImageImpl(const gl::ImageIndex &index,
// We no longer need the "GLenum format" parameter to TexImage to determine what data format "pixels" contains. // We no longer need the "GLenum format" parameter to TexImage to determine what data format "pixels" contains.
// From our image internal format we know how many channels to expect, and "type" gives the format of pixel's components. // From our image internal format we know how many channels to expect, and "type" gives the format of pixel's components.
const uint8_t *pixelData = NULL; const uint8_t *pixelData = NULL;
gl::Error error = GetUnpackPointer(unpack, pixels, layerOffset, &pixelData); ANGLE_TRY(GetUnpackPointer(unpack, pixels, layerOffset, &pixelData));
if (error.isError())
{
return error;
}
if (pixelData != NULL) if (pixelData != NULL)
{ {
gl::Box fullImageArea(0, 0, 0, image->getWidth(), image->getHeight(), image->getDepth()); gl::Box fullImageArea(0, 0, 0, image->getWidth(), image->getHeight(), image->getDepth());
error = image->loadCompressedData(fullImageArea, pixelData); ANGLE_TRY(image->loadCompressedData(fullImageArea, pixelData));
if (error.isError())
{
return error;
}
mDirtyImages = true; mDirtyImages = true;
} }
...@@ -305,22 +261,14 @@ gl::Error TextureD3D::subImageCompressed(const gl::ImageIndex &index, const gl:: ...@@ -305,22 +261,14 @@ gl::Error TextureD3D::subImageCompressed(const gl::ImageIndex &index, const gl::
ptrdiff_t layerOffset) ptrdiff_t layerOffset)
{ {
const uint8_t *pixelData = NULL; const uint8_t *pixelData = NULL;
gl::Error error = GetUnpackPointer(unpack, pixels, layerOffset, &pixelData); ANGLE_TRY(GetUnpackPointer(unpack, pixels, layerOffset, &pixelData));
if (error.isError())
{
return error;
}
if (pixelData != NULL) if (pixelData != NULL)
{ {
ImageD3D *image = getImage(index); ImageD3D *image = getImage(index);
ASSERT(image); ASSERT(image);
error = image->loadCompressedData(area, pixelData); ANGLE_TRY(image->loadCompressedData(area, pixelData));
if (error.isError())
{
return error;
}
mDirtyImages = true; mDirtyImages = true;
} }
...@@ -357,13 +305,11 @@ gl::Error TextureD3D::fastUnpackPixels(const gl::PixelUnpackState &unpack, const ...@@ -357,13 +305,11 @@ gl::Error TextureD3D::fastUnpackPixels(const gl::PixelUnpackState &unpack, const
uintptr_t offset = reinterpret_cast<uintptr_t>(pixels); uintptr_t offset = reinterpret_cast<uintptr_t>(pixels);
gl::Error error = mRenderer->fastCopyBufferToTexture(unpack, static_cast<unsigned int>(offset), destRenderTarget, sizedInternalFormat, type, destArea); ANGLE_TRY(mRenderer->fastCopyBufferToTexture(unpack, static_cast<unsigned int>(offset),
if (error.isError()) destRenderTarget, sizedInternalFormat, type,
{ destArea));
return error;
}
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
GLint TextureD3D::creationLevels(GLsizei width, GLsizei height, GLsizei depth) const GLint TextureD3D::creationLevels(GLsizei width, GLsizei height, GLsizei depth) const
...@@ -416,17 +362,8 @@ gl::Error TextureD3D::generateMipmap() ...@@ -416,17 +362,8 @@ gl::Error TextureD3D::generateMipmap()
{ {
// Switch to using the mipmapped texture. // Switch to using the mipmapped texture.
TextureStorage *textureStorage = NULL; TextureStorage *textureStorage = NULL;
gl::Error error = getNativeTexture(&textureStorage); ANGLE_TRY(getNativeTexture(&textureStorage));
if (error.isError()) ANGLE_TRY(textureStorage->useLevelZeroWorkaroundTexture(false));
{
return error;
}
error = textureStorage->useLevelZeroWorkaroundTexture(false);
if (error.isError())
{
return error;
}
} }
// Set up proper mipmap chain in our Image array. // Set up proper mipmap chain in our Image array.
...@@ -434,27 +371,15 @@ gl::Error TextureD3D::generateMipmap() ...@@ -434,27 +371,15 @@ gl::Error TextureD3D::generateMipmap()
if (mTexStorage && mTexStorage->supportsNativeMipmapFunction()) if (mTexStorage && mTexStorage->supportsNativeMipmapFunction())
{ {
gl::Error error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
// Generate the mipmap chain using the ad-hoc DirectX function. // Generate the mipmap chain using the ad-hoc DirectX function.
error = mRenderer->generateMipmapUsingD3D(mTexStorage, mState); ANGLE_TRY(mRenderer->generateMipmapUsingD3D(mTexStorage, mState));
if (error.isError())
{
return error;
}
} }
else else
{ {
// Generate the mipmap chain, one level at a time. // Generate the mipmap chain, one level at a time.
gl::Error error = generateMipmapUsingImages(maxLevel); ANGLE_TRY(generateMipmapUsingImages(maxLevel));
if (error.isError())
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
...@@ -478,20 +403,12 @@ gl::Error TextureD3D::generateMipmapUsingImages(const GLuint maxLevel) ...@@ -478,20 +403,12 @@ gl::Error TextureD3D::generateMipmapUsingImages(const GLuint maxLevel)
gl::ImageIndex srcIndex = getImageIndex(mBaseLevel, layer); gl::ImageIndex srcIndex = getImageIndex(mBaseLevel, layer);
ImageD3D *image = getImage(srcIndex); ImageD3D *image = getImage(srcIndex);
gl::Error error = image->copyFromTexStorage(srcIndex, mTexStorage); ANGLE_TRY(image->copyFromTexStorage(srcIndex, mTexStorage));
if (error.isError())
{
return error;
}
} }
} }
else else
{ {
gl::Error error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
} }
} }
...@@ -514,20 +431,12 @@ gl::Error TextureD3D::generateMipmapUsingImages(const GLuint maxLevel) ...@@ -514,20 +431,12 @@ gl::Error TextureD3D::generateMipmapUsingImages(const GLuint maxLevel)
if (renderableStorage) if (renderableStorage)
{ {
// GPU-side mipmapping // GPU-side mipmapping
gl::Error error = mTexStorage->generateMipmap(sourceIndex, destIndex); ANGLE_TRY(mTexStorage->generateMipmap(sourceIndex, destIndex));
if (error.isError())
{
return error;
}
} }
else else
{ {
// CPU-side mipmapping // CPU-side mipmapping
gl::Error error = mRenderer->generateMipmap(getImage(destIndex), getImage(sourceIndex)); ANGLE_TRY(mRenderer->generateMipmap(getImage(destIndex), getImage(sourceIndex)));
if (error.isError())
{
return error;
}
} }
} }
} }
...@@ -537,7 +446,7 @@ gl::Error TextureD3D::generateMipmapUsingImages(const GLuint maxLevel) ...@@ -537,7 +446,7 @@ gl::Error TextureD3D::generateMipmapUsingImages(const GLuint maxLevel)
updateStorage(); updateStorage();
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool TextureD3D::isBaseImageZeroSize() const bool TextureD3D::isBaseImageZeroSize() const
...@@ -569,11 +478,7 @@ bool TextureD3D::isBaseImageZeroSize() const ...@@ -569,11 +478,7 @@ bool TextureD3D::isBaseImageZeroSize() const
gl::Error TextureD3D::ensureRenderTarget() gl::Error TextureD3D::ensureRenderTarget()
{ {
gl::Error error = initializeStorage(true); ANGLE_TRY(initializeStorage(true));
if (error.isError())
{
return error;
}
if (!isBaseImageZeroSize()) if (!isBaseImageZeroSize())
{ {
...@@ -581,13 +486,9 @@ gl::Error TextureD3D::ensureRenderTarget() ...@@ -581,13 +486,9 @@ gl::Error TextureD3D::ensureRenderTarget()
if (!mTexStorage->isRenderTarget()) if (!mTexStorage->isRenderTarget())
{ {
TextureStorage *newRenderTargetStorage = NULL; TextureStorage *newRenderTargetStorage = NULL;
error = createCompleteStorage(true, &newRenderTargetStorage); ANGLE_TRY(createCompleteStorage(true, &newRenderTargetStorage));
if (error.isError())
{
return error;
}
error = mTexStorage->copyToStorage(newRenderTargetStorage); gl::Error error = mTexStorage->copyToStorage(newRenderTargetStorage);
if (error.isError()) if (error.isError())
{ {
SafeDelete(newRenderTargetStorage); SafeDelete(newRenderTargetStorage);
...@@ -603,7 +504,7 @@ gl::Error TextureD3D::ensureRenderTarget() ...@@ -603,7 +504,7 @@ gl::Error TextureD3D::ensureRenderTarget()
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool TextureD3D::canCreateRenderTargetForImage(const gl::ImageIndex &index) const bool TextureD3D::canCreateRenderTargetForImage(const gl::ImageIndex &index) const
...@@ -619,16 +520,11 @@ gl::Error TextureD3D::commitRegion(const gl::ImageIndex &index, const gl::Box &r ...@@ -619,16 +520,11 @@ gl::Error TextureD3D::commitRegion(const gl::ImageIndex &index, const gl::Box &r
{ {
ASSERT(isValidIndex(index)); ASSERT(isValidIndex(index));
ImageD3D *image = getImage(index); ImageD3D *image = getImage(index);
gl::Error error = image->copyToStorage(mTexStorage, index, region); ANGLE_TRY(image->copyToStorage(mTexStorage, index, region));
if (error.isError())
{
return error;
}
image->markClean(); image->markClean();
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D::getAttachmentRenderTarget(const gl::FramebufferAttachment::Target &target, gl::Error TextureD3D::getAttachmentRenderTarget(const gl::FramebufferAttachment::Target &target,
...@@ -784,7 +680,7 @@ gl::Error TextureD3D_2D::setImage(GLenum target, ...@@ -784,7 +680,7 @@ gl::Error TextureD3D_2D::setImage(GLenum target,
ANGLE_TRY(setImageImpl(index, type, unpack, pixels, 0)); ANGLE_TRY(setImageImpl(index, type, unpack, pixels, 0));
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2D::setSubImage(GLenum target, gl::Error TextureD3D_2D::setSubImage(GLenum target,
...@@ -1022,16 +918,11 @@ gl::Error TextureD3D_2D::setStorage(GLenum target, size_t levels, GLenum interna ...@@ -1022,16 +918,11 @@ gl::Error TextureD3D_2D::setStorage(GLenum target, size_t levels, GLenum interna
return error; return error;
} }
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
mImmutable = true; mImmutable = true;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void TextureD3D_2D::bindTexImage(egl::Surface *surface) void TextureD3D_2D::bindTexImage(egl::Surface *surface)
...@@ -1116,17 +1007,8 @@ gl::Error TextureD3D_2D::getRenderTarget(const gl::ImageIndex &index, RenderTarg ...@@ -1116,17 +1007,8 @@ gl::Error TextureD3D_2D::getRenderTarget(const gl::ImageIndex &index, RenderTarg
ASSERT(!index.hasLayer()); ASSERT(!index.hasLayer());
// ensure the underlying texture is created // ensure the underlying texture is created
gl::Error error = ensureRenderTarget(); ANGLE_TRY(ensureRenderTarget());
if (error.isError()) ANGLE_TRY(updateStorageLevel(index.mipIndex));
{
return error;
}
error = updateStorageLevel(index.mipIndex);
if (error.isError())
{
return error;
}
return mTexStorage->getRenderTarget(index, outRT); return mTexStorage->getRenderTarget(index, outRT);
} }
...@@ -1201,13 +1083,9 @@ gl::Error TextureD3D_2D::initializeStorage(bool renderTarget) ...@@ -1201,13 +1083,9 @@ gl::Error TextureD3D_2D::initializeStorage(bool renderTarget)
bool createRenderTarget = (renderTarget || IsRenderTargetUsage(mState.getUsage())); bool createRenderTarget = (renderTarget || IsRenderTargetUsage(mState.getUsage()));
TextureStorage *storage = NULL; TextureStorage *storage = NULL;
gl::Error error = createCompleteStorage(createRenderTarget, &storage); ANGLE_TRY(createCompleteStorage(createRenderTarget, &storage));
if (error.isError())
{
return error;
}
error = setCompleteTexStorage(storage); gl::Error error = setCompleteTexStorage(storage);
if (error.isError()) if (error.isError())
{ {
SafeDelete(storage); SafeDelete(storage);
...@@ -1217,11 +1095,7 @@ gl::Error TextureD3D_2D::initializeStorage(bool renderTarget) ...@@ -1217,11 +1095,7 @@ gl::Error TextureD3D_2D::initializeStorage(bool renderTarget)
ASSERT(mTexStorage); ASSERT(mTexStorage);
// flush image data to the storage // flush image data to the storage
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
...@@ -1261,11 +1135,7 @@ gl::Error TextureD3D_2D::setCompleteTexStorage(TextureStorage *newCompleteTexSto ...@@ -1261,11 +1135,7 @@ gl::Error TextureD3D_2D::setCompleteTexStorage(TextureStorage *newCompleteTexSto
{ {
for (int level = 0; level < newCompleteTexStorage->getLevelCount(); level++) for (int level = 0; level < newCompleteTexStorage->getLevelCount(); level++)
{ {
gl::Error error = mImageArray[level]->setManagedSurface2D(newCompleteTexStorage, level); ANGLE_TRY(mImageArray[level]->setManagedSurface2D(newCompleteTexStorage, level));
if (error.isError())
{
return error;
}
} }
} }
...@@ -1274,7 +1144,7 @@ gl::Error TextureD3D_2D::setCompleteTexStorage(TextureStorage *newCompleteTexSto ...@@ -1274,7 +1144,7 @@ gl::Error TextureD3D_2D::setCompleteTexStorage(TextureStorage *newCompleteTexSto
mDirtyImages = true; mDirtyImages = true;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2D::updateStorage() gl::Error TextureD3D_2D::updateStorage()
...@@ -1285,15 +1155,11 @@ gl::Error TextureD3D_2D::updateStorage() ...@@ -1285,15 +1155,11 @@ gl::Error TextureD3D_2D::updateStorage()
{ {
if (mImageArray[level]->isDirty() && isLevelComplete(level)) if (mImageArray[level]->isDirty() && isLevelComplete(level))
{ {
gl::Error error = updateStorageLevel(level); ANGLE_TRY(updateStorageLevel(level));
if (error.isError())
{
return error;
}
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2D::updateStorageLevel(int level) gl::Error TextureD3D_2D::updateStorageLevel(int level)
...@@ -1305,14 +1171,10 @@ gl::Error TextureD3D_2D::updateStorageLevel(int level) ...@@ -1305,14 +1171,10 @@ gl::Error TextureD3D_2D::updateStorageLevel(int level)
{ {
gl::ImageIndex index = gl::ImageIndex::Make2D(level); gl::ImageIndex index = gl::ImageIndex::Make2D(level);
gl::Box region(0, 0, 0, getWidth(level), getHeight(level), 1); gl::Box region(0, 0, 0, getWidth(level), getHeight(level), 1);
gl::Error error = commitRegion(index, region); ANGLE_TRY(commitRegion(index, region));
if (error.isError())
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void TextureD3D_2D::redefineImage(size_t level, void TextureD3D_2D::redefineImage(size_t level,
...@@ -1491,12 +1353,7 @@ gl::Error TextureD3D_Cube::setCompressedSubImage(GLenum target, size_t level, co ...@@ -1491,12 +1353,7 @@ gl::Error TextureD3D_Cube::setCompressedSubImage(GLenum target, size_t level, co
gl::ImageIndex index = gl::ImageIndex::MakeCube(target, static_cast<GLint>(level)); gl::ImageIndex index = gl::ImageIndex::MakeCube(target, 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);
} }
...@@ -1521,34 +1378,21 @@ gl::Error TextureD3D_Cube::copyImage(GLenum target, ...@@ -1521,34 +1378,21 @@ gl::Error TextureD3D_Cube::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 = ANGLE_TRY(
mImageArray[faceIndex][level]->copyFromFramebuffer(destOffset, sourceArea, source); mImageArray[faceIndex][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[faceIndex][level]->markClean(); mImageArray[faceIndex][level]->markClean();
ASSERT(size.width == size.height); ASSERT(size.width == size.height);
if (size.width > 0 && isValidFaceLevel(faceIndex, level)) if (size.width > 0 && isValidFaceLevel(faceIndex, level))
{ {
error = mRenderer->copyImageCube(source, sourceArea, internalFormat, destOffset, mTexStorage, target, level); ANGLE_TRY(mRenderer->copyImageCube(source, sourceArea, internalFormat, destOffset,
if (error.isError()) mTexStorage, target, level));
{
return error;
}
} }
} }
...@@ -1581,26 +1425,13 @@ gl::Error TextureD3D_Cube::copySubImage(GLenum target, ...@@ -1581,26 +1425,13 @@ gl::Error TextureD3D_Cube::copySubImage(GLenum target,
} }
else else
{ {
gl::Error error = ensureRenderTarget(); ANGLE_TRY(ensureRenderTarget());
if (error.isError())
{
return error;
}
if (isValidFaceLevel(faceIndex, level)) if (isValidFaceLevel(faceIndex, level))
{ {
error = updateStorageFaceLevel(faceIndex, level); ANGLE_TRY(updateStorageFaceLevel(faceIndex, level));
if (error.isError()) ANGLE_TRY(mRenderer->copyImageCube(
{ source, sourceArea, gl::GetInternalFormatInfo(getBaseLevelInternalFormat()).format,
return error; destOffset, mTexStorage, target, level));
}
error = mRenderer->copyImageCube(source, sourceArea, gl::GetInternalFormatInfo(getBaseLevelInternalFormat()).format,
destOffset, mTexStorage, target, level);
if (error.isError())
{
return error;
}
} }
} }
...@@ -1642,16 +1473,11 @@ gl::Error TextureD3D_Cube::setStorage(GLenum target, size_t levels, GLenum inter ...@@ -1642,16 +1473,11 @@ gl::Error TextureD3D_Cube::setStorage(GLenum target, size_t levels, GLenum inter
return error; return error;
} }
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
mImmutable = true; mImmutable = true;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
// 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.
...@@ -1714,17 +1540,8 @@ gl::Error TextureD3D_Cube::getRenderTarget(const gl::ImageIndex &index, RenderTa ...@@ -1714,17 +1540,8 @@ gl::Error TextureD3D_Cube::getRenderTarget(const gl::ImageIndex &index, RenderTa
ASSERT(gl::IsCubeMapTextureTarget(index.type)); ASSERT(gl::IsCubeMapTextureTarget(index.type));
// ensure the underlying texture is created // ensure the underlying texture is created
gl::Error error = ensureRenderTarget(); ANGLE_TRY(ensureRenderTarget());
if (error.isError()) ANGLE_TRY(updateStorageFaceLevel(index.layerIndex, index.mipIndex));
{
return error;
}
error = updateStorageFaceLevel(index.layerIndex, index.mipIndex);
if (error.isError())
{
return error;
}
return mTexStorage->getRenderTarget(index, outRT); return mTexStorage->getRenderTarget(index, outRT);
} }
...@@ -1734,25 +1551,21 @@ gl::Error TextureD3D_Cube::initializeStorage(bool renderTarget) ...@@ -1734,25 +1551,21 @@ gl::Error TextureD3D_Cube::initializeStorage(bool renderTarget)
// Only initialize the first time this texture is used as a render target or shader resource // Only initialize the first time this texture is used as a render target or shader resource
if (mTexStorage) if (mTexStorage)
{ {
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
// do not attempt to create storage for nonexistant data // do not attempt to create storage for nonexistant data
if (!isFaceLevelComplete(0, getBaseLevel())) if (!isFaceLevelComplete(0, getBaseLevel()))
{ {
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool createRenderTarget = (renderTarget || IsRenderTargetUsage(mState.getUsage())); bool createRenderTarget = (renderTarget || IsRenderTargetUsage(mState.getUsage()));
TextureStorage *storage = NULL; TextureStorage *storage = NULL;
gl::Error error = createCompleteStorage(createRenderTarget, &storage); ANGLE_TRY(createCompleteStorage(createRenderTarget, &storage));
if (error.isError())
{
return error;
}
error = setCompleteTexStorage(storage); gl::Error error = setCompleteTexStorage(storage);
if (error.isError()) if (error.isError())
{ {
SafeDelete(storage); SafeDelete(storage);
...@@ -1762,13 +1575,9 @@ gl::Error TextureD3D_Cube::initializeStorage(bool renderTarget) ...@@ -1762,13 +1575,9 @@ gl::Error TextureD3D_Cube::initializeStorage(bool renderTarget)
ASSERT(mTexStorage); ASSERT(mTexStorage);
// flush image data to the storage // flush image data to the storage
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_Cube::createCompleteStorage(bool renderTarget, TextureStorage **outTexStorage) const gl::Error TextureD3D_Cube::createCompleteStorage(bool renderTarget, TextureStorage **outTexStorage) const
...@@ -1809,11 +1618,8 @@ gl::Error TextureD3D_Cube::setCompleteTexStorage(TextureStorage *newCompleteTexS ...@@ -1809,11 +1618,8 @@ gl::Error TextureD3D_Cube::setCompleteTexStorage(TextureStorage *newCompleteTexS
{ {
for (int level = 0; level < newCompleteTexStorage->getLevelCount(); level++) for (int level = 0; level < newCompleteTexStorage->getLevelCount(); level++)
{ {
gl::Error error = mImageArray[faceIndex][level]->setManagedSurfaceCube(newCompleteTexStorage, faceIndex, level); ANGLE_TRY(mImageArray[faceIndex][level]->setManagedSurfaceCube(
if (error.isError()) newCompleteTexStorage, faceIndex, level));
{
return error;
}
} }
} }
} }
...@@ -1835,16 +1641,12 @@ gl::Error TextureD3D_Cube::updateStorage() ...@@ -1835,16 +1641,12 @@ gl::Error TextureD3D_Cube::updateStorage()
{ {
if (mImageArray[face][level]->isDirty() && isFaceLevelComplete(face, level)) if (mImageArray[face][level]->isDirty() && isFaceLevelComplete(face, level))
{ {
gl::Error error = updateStorageFaceLevel(face, level); ANGLE_TRY(updateStorageFaceLevel(face, level));
if (error.isError())
{
return error;
}
} }
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool TextureD3D_Cube::isValidFaceLevel(int faceIndex, int level) const bool TextureD3D_Cube::isValidFaceLevel(int faceIndex, int level) const
...@@ -1912,14 +1714,10 @@ gl::Error TextureD3D_Cube::updateStorageFaceLevel(int faceIndex, int level) ...@@ -1912,14 +1714,10 @@ gl::Error TextureD3D_Cube::updateStorageFaceLevel(int faceIndex, int level)
GLenum faceTarget = gl::LayerIndexToCubeMapTextureTarget(faceIndex); GLenum faceTarget = gl::LayerIndexToCubeMapTextureTarget(faceIndex);
gl::ImageIndex index = gl::ImageIndex::MakeCube(faceTarget, level); gl::ImageIndex index = gl::ImageIndex::MakeCube(faceTarget, level);
gl::Box region(0, 0, 0, image->getWidth(), image->getHeight(), 1); gl::Box region(0, 0, 0, image->getWidth(), image->getHeight(), 1);
gl::Error error = commitRegion(index, region); ANGLE_TRY(commitRegion(index, region));
if (error.isError())
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void TextureD3D_Cube::redefineImage(int faceIndex, GLint level, GLenum internalformat, const gl::Extents &size) void TextureD3D_Cube::redefineImage(int faceIndex, GLint level, GLenum internalformat, const gl::Extents &size)
...@@ -2085,19 +1883,12 @@ gl::Error TextureD3D_3D::setImage(GLenum target, ...@@ -2085,19 +1883,12 @@ gl::Error TextureD3D_3D::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), getDepth(level)); gl::Box destArea(0, 0, 0, getWidth(level), getHeight(level), getDepth(level));
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();
...@@ -2107,11 +1898,7 @@ gl::Error TextureD3D_3D::setImage(GLenum target, ...@@ -2107,11 +1898,7 @@ gl::Error TextureD3D_3D::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);
...@@ -2134,12 +1921,7 @@ gl::Error TextureD3D_3D::setSubImage(GLenum target, ...@@ -2134,12 +1921,7 @@ gl::Error TextureD3D_3D::setSubImage(GLenum target,
if (isFastUnpackable(unpack, getInternalFormat(level)) && isLevelComplete(level)) if (isFastUnpackable(unpack, getInternalFormat(level)) && isLevelComplete(level))
{ {
RenderTargetD3D *destRenderTarget = NULL; RenderTargetD3D *destRenderTarget = NULL;
gl::Error error = getRenderTarget(index, &destRenderTarget); ANGLE_TRY(getRenderTarget(index, &destRenderTarget));
if (error.isError())
{
return error;
}
ASSERT(!mImageArray[level]->isDirty()); ASSERT(!mImageArray[level]->isDirty());
return fastUnpackPixels(unpack, pixels, area, getInternalFormat(level), type, destRenderTarget); return fastUnpackPixels(unpack, pixels, area, getInternalFormat(level), type, destRenderTarget);
...@@ -2174,12 +1956,7 @@ gl::Error TextureD3D_3D::setCompressedSubImage(GLenum target, size_t level, cons ...@@ -2174,12 +1956,7 @@ gl::Error TextureD3D_3D::setCompressedSubImage(GLenum target, size_t level, cons
ASSERT(target == GL_TEXTURE_3D); ASSERT(target == GL_TEXTURE_3D);
gl::ImageIndex index = gl::ImageIndex::Make3D(static_cast<GLint>(level)); gl::ImageIndex index = gl::ImageIndex::Make3D(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);
} }
...@@ -2203,37 +1980,18 @@ gl::Error TextureD3D_3D::copySubImage(GLenum target, ...@@ -2203,37 +1980,18 @@ gl::Error TextureD3D_3D::copySubImage(GLenum target,
if (canCreateRenderTargetForImage(index)) if (canCreateRenderTargetForImage(index))
{ {
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->copyImage3D(
{ source, sourceArea, gl::GetInternalFormatInfo(getBaseLevelInternalFormat()).format,
return error; destOffset, mTexStorage, level));
}
error = mRenderer->copyImage3D(source, sourceArea,
gl::GetInternalFormatInfo(getBaseLevelInternalFormat()).format,
destOffset, mTexStorage, level);
if (error.isError())
{
return error;
}
} }
} }
...@@ -2270,16 +2028,11 @@ gl::Error TextureD3D_3D::setStorage(GLenum target, size_t levels, GLenum interna ...@@ -2270,16 +2028,11 @@ gl::Error TextureD3D_3D::setStorage(GLenum target, size_t levels, GLenum interna
return error; return error;
} }
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
mImmutable = true; mImmutable = true;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void TextureD3D_3D::bindTexImage(egl::Surface *surface) void TextureD3D_3D::bindTexImage(egl::Surface *surface)
...@@ -2310,27 +2063,15 @@ void TextureD3D_3D::initMipmapImages() ...@@ -2310,27 +2063,15 @@ void TextureD3D_3D::initMipmapImages()
gl::Error TextureD3D_3D::getRenderTarget(const gl::ImageIndex &index, RenderTargetD3D **outRT) gl::Error TextureD3D_3D::getRenderTarget(const gl::ImageIndex &index, RenderTargetD3D **outRT)
{ {
// ensure the underlying texture is created // ensure the underlying texture is created
gl::Error error = ensureRenderTarget(); ANGLE_TRY(ensureRenderTarget());
if (error.isError())
{
return error;
}
if (index.hasLayer()) if (index.hasLayer())
{ {
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
} }
else else
{ {
error = updateStorageLevel(index.mipIndex); ANGLE_TRY(updateStorageLevel(index.mipIndex));
if (error.isError())
{
return error;
}
} }
return mTexStorage->getRenderTarget(index, outRT); return mTexStorage->getRenderTarget(index, outRT);
...@@ -2353,13 +2094,9 @@ gl::Error TextureD3D_3D::initializeStorage(bool renderTarget) ...@@ -2353,13 +2094,9 @@ gl::Error TextureD3D_3D::initializeStorage(bool renderTarget)
bool createRenderTarget = (renderTarget || IsRenderTargetUsage(mState.getUsage())); bool createRenderTarget = (renderTarget || IsRenderTargetUsage(mState.getUsage()));
TextureStorage *storage = NULL; TextureStorage *storage = NULL;
gl::Error error = createCompleteStorage(createRenderTarget, &storage); ANGLE_TRY(createCompleteStorage(createRenderTarget, &storage));
if (error.isError())
{
return error;
}
error = setCompleteTexStorage(storage); gl::Error error = setCompleteTexStorage(storage);
if (error.isError()) if (error.isError())
{ {
SafeDelete(storage); SafeDelete(storage);
...@@ -2369,13 +2106,9 @@ gl::Error TextureD3D_3D::initializeStorage(bool renderTarget) ...@@ -2369,13 +2106,9 @@ gl::Error TextureD3D_3D::initializeStorage(bool renderTarget)
ASSERT(mTexStorage); ASSERT(mTexStorage);
// flush image data to the storage // flush image data to the storage
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_3D::createCompleteStorage(bool renderTarget, TextureStorage **outStorage) const gl::Error TextureD3D_3D::createCompleteStorage(bool renderTarget, TextureStorage **outStorage) const
...@@ -2405,7 +2138,7 @@ gl::Error TextureD3D_3D::setCompleteTexStorage(TextureStorage *newCompleteTexSto ...@@ -2405,7 +2138,7 @@ gl::Error TextureD3D_3D::setCompleteTexStorage(TextureStorage *newCompleteTexSto
// We do not support managed 3D storage, as that is D3D9/ES2-only // We do not support managed 3D storage, as that is D3D9/ES2-only
ASSERT(!mTexStorage->isManaged()); ASSERT(!mTexStorage->isManaged());
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_3D::updateStorage() gl::Error TextureD3D_3D::updateStorage()
...@@ -2416,15 +2149,11 @@ gl::Error TextureD3D_3D::updateStorage() ...@@ -2416,15 +2149,11 @@ gl::Error TextureD3D_3D::updateStorage()
{ {
if (mImageArray[level]->isDirty() && isLevelComplete(level)) if (mImageArray[level]->isDirty() && isLevelComplete(level))
{ {
gl::Error error = updateStorageLevel(level); ANGLE_TRY(updateStorageLevel(level));
if (error.isError())
{
return error;
}
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool TextureD3D_3D::isValidLevel(int level) const bool TextureD3D_3D::isValidLevel(int level) const
...@@ -2494,14 +2223,10 @@ gl::Error TextureD3D_3D::updateStorageLevel(int level) ...@@ -2494,14 +2223,10 @@ gl::Error TextureD3D_3D::updateStorageLevel(int level)
{ {
gl::ImageIndex index = gl::ImageIndex::Make3D(level); gl::ImageIndex index = gl::ImageIndex::Make3D(level);
gl::Box region(0, 0, 0, getWidth(level), getHeight(level), getDepth(level)); gl::Box region(0, 0, 0, getWidth(level), getHeight(level), getDepth(level));
gl::Error error = commitRegion(index, region); ANGLE_TRY(commitRegion(index, region));
if (error.isError())
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void TextureD3D_3D::redefineImage(GLint level, GLenum internalformat, const gl::Extents &size) void TextureD3D_3D::redefineImage(GLint level, GLenum internalformat, const gl::Extents &size)
...@@ -2657,14 +2382,10 @@ gl::Error TextureD3D_2DArray::setImage(GLenum target, ...@@ -2657,14 +2382,10 @@ gl::Error TextureD3D_2DArray::setImage(GLenum target,
{ {
const ptrdiff_t layerOffset = (inputDepthPitch * i); const ptrdiff_t layerOffset = (inputDepthPitch * i);
gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, i); gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, i);
gl::Error error = setImageImpl(index, type, unpack, pixels, layerOffset); ANGLE_TRY(setImageImpl(index, type, unpack, pixels, layerOffset));
if (error.isError())
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2DArray::setSubImage(GLenum target, gl::Error TextureD3D_2DArray::setSubImage(GLenum target,
...@@ -2691,14 +2412,11 @@ gl::Error TextureD3D_2DArray::setSubImage(GLenum target, ...@@ -2691,14 +2412,11 @@ gl::Error TextureD3D_2DArray::setSubImage(GLenum target,
gl::Box layerArea(area.x, area.y, 0, area.width, area.height, 1); gl::Box layerArea(area.x, area.y, 0, area.width, area.height, 1);
gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, layer); gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, layer);
gl::Error error = TextureD3D::subImage(index, layerArea, format, type, unpack, pixels, layerOffset); ANGLE_TRY(
if (error.isError()) TextureD3D::subImage(index, layerArea, format, type, unpack, pixels, layerOffset));
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2DArray::setCompressedImage(GLenum target, gl::Error TextureD3D_2DArray::setCompressedImage(GLenum target,
...@@ -2726,14 +2444,10 @@ gl::Error TextureD3D_2DArray::setCompressedImage(GLenum target, ...@@ -2726,14 +2444,10 @@ gl::Error TextureD3D_2DArray::setCompressedImage(GLenum target,
const ptrdiff_t layerOffset = (inputDepthPitch * i); const ptrdiff_t layerOffset = (inputDepthPitch * i);
gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, i); gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, i);
gl::Error error = setCompressedImageImpl(index, unpack, pixels, layerOffset); ANGLE_TRY(setCompressedImageImpl(index, unpack, pixels, layerOffset));
if (error.isError())
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2DArray::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, gl::Error TextureD3D_2DArray::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
...@@ -2755,17 +2469,9 @@ gl::Error TextureD3D_2DArray::setCompressedSubImage(GLenum target, size_t level, ...@@ -2755,17 +2469,9 @@ gl::Error TextureD3D_2DArray::setCompressedSubImage(GLenum target, size_t level,
gl::Box layerArea(area.x, area.y, 0, area.width, area.height, 1); gl::Box layerArea(area.x, area.y, 0, area.width, area.height, 1);
gl::ImageIndex index = gl::ImageIndex::Make2DArray(static_cast<GLint>(level), layer); gl::ImageIndex index = gl::ImageIndex::Make2DArray(static_cast<GLint>(level), layer);
gl::Error error = TextureD3D::subImageCompressed(index, layerArea, format, unpack, pixels, layerOffset); ANGLE_TRY(
if (error.isError()) TextureD3D::subImageCompressed(index, layerArea, format, unpack, pixels, layerOffset));
{ ANGLE_TRY(commitRegion(index, layerArea));
return error;
}
error = commitRegion(index, layerArea);
if (error.isError())
{
return error;
}
} }
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
...@@ -2792,39 +2498,21 @@ gl::Error TextureD3D_2DArray::copySubImage(GLenum target, ...@@ -2792,39 +2498,21 @@ gl::Error TextureD3D_2DArray::copySubImage(GLenum target,
if (canCreateRenderTargetForImage(index)) if (canCreateRenderTargetForImage(index))
{ {
gl::Offset destLayerOffset(destOffset.x, destOffset.y, 0); gl::Offset destLayerOffset(destOffset.x, destOffset.y, 0);
gl::Error error = mImageArray[level][destOffset.z]->copyFromFramebuffer(destLayerOffset, ANGLE_TRY(mImageArray[level][destOffset.z]->copyFromFramebuffer(destLayerOffset, sourceArea,
sourceArea, source); 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->copyImage2DArray(
{
return error;
}
error = mRenderer->copyImage2DArray(
source, sourceArea, source, sourceArea,
gl::GetInternalFormatInfo(getInternalFormat(getBaseLevel())).format, destOffset, gl::GetInternalFormatInfo(getInternalFormat(getBaseLevel())).format, destOffset,
mTexStorage, level); mTexStorage, level));
if (error.isError())
{
return error;
}
} }
} }
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
...@@ -2870,16 +2558,11 @@ gl::Error TextureD3D_2DArray::setStorage(GLenum target, size_t levels, GLenum in ...@@ -2870,16 +2558,11 @@ gl::Error TextureD3D_2DArray::setStorage(GLenum target, size_t levels, GLenum in
return error; return error;
} }
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
mImmutable = true; mImmutable = true;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void TextureD3D_2DArray::bindTexImage(egl::Surface *surface) void TextureD3D_2DArray::bindTexImage(egl::Surface *surface)
...@@ -2916,18 +2599,8 @@ void TextureD3D_2DArray::initMipmapImages() ...@@ -2916,18 +2599,8 @@ void TextureD3D_2DArray::initMipmapImages()
gl::Error TextureD3D_2DArray::getRenderTarget(const gl::ImageIndex &index, RenderTargetD3D **outRT) gl::Error TextureD3D_2DArray::getRenderTarget(const gl::ImageIndex &index, RenderTargetD3D **outRT)
{ {
// ensure the underlying texture is created // ensure the underlying texture is created
gl::Error error = ensureRenderTarget(); ANGLE_TRY(ensureRenderTarget());
if (error.isError()) ANGLE_TRY(updateStorageLevel(index.mipIndex));
{
return error;
}
error = updateStorageLevel(index.mipIndex);
if (error.isError())
{
return error;
}
return mTexStorage->getRenderTarget(index, outRT); return mTexStorage->getRenderTarget(index, outRT);
} }
...@@ -2936,25 +2609,21 @@ gl::Error TextureD3D_2DArray::initializeStorage(bool renderTarget) ...@@ -2936,25 +2609,21 @@ gl::Error TextureD3D_2DArray::initializeStorage(bool renderTarget)
// Only initialize the first time this texture is used as a render target or shader resource // Only initialize the first time this texture is used as a render target or shader resource
if (mTexStorage) if (mTexStorage)
{ {
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
// do not attempt to create storage for nonexistant data // do not attempt to create storage for nonexistant data
if (!isLevelComplete(getBaseLevel())) if (!isLevelComplete(getBaseLevel()))
{ {
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool createRenderTarget = (renderTarget || IsRenderTargetUsage(mState.getUsage())); bool createRenderTarget = (renderTarget || IsRenderTargetUsage(mState.getUsage()));
TextureStorage *storage = NULL; TextureStorage *storage = nullptr;
gl::Error error = createCompleteStorage(createRenderTarget, &storage); ANGLE_TRY(createCompleteStorage(createRenderTarget, &storage));
if (error.isError())
{
return error;
}
error = setCompleteTexStorage(storage); gl::Error error = setCompleteTexStorage(storage);
if (error.isError()) if (error.isError())
{ {
SafeDelete(storage); SafeDelete(storage);
...@@ -2964,13 +2633,9 @@ gl::Error TextureD3D_2DArray::initializeStorage(bool renderTarget) ...@@ -2964,13 +2633,9 @@ gl::Error TextureD3D_2DArray::initializeStorage(bool renderTarget)
ASSERT(mTexStorage); ASSERT(mTexStorage);
// flush image data to the storage // flush image data to the storage
error = updateStorage(); ANGLE_TRY(updateStorage());
if (error.isError())
{
return error;
}
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2DArray::createCompleteStorage(bool renderTarget, TextureStorage **outStorage) const gl::Error TextureD3D_2DArray::createCompleteStorage(bool renderTarget, TextureStorage **outStorage) const
...@@ -2988,7 +2653,7 @@ gl::Error TextureD3D_2DArray::createCompleteStorage(bool renderTarget, TextureSt ...@@ -2988,7 +2653,7 @@ gl::Error TextureD3D_2DArray::createCompleteStorage(bool renderTarget, TextureSt
// TODO(geofflang): Verify storage creation succeeds // TODO(geofflang): Verify storage creation succeeds
*outStorage = mRenderer->createTextureStorage2DArray(internalFormat, renderTarget, width, height, depth, levels); *outStorage = mRenderer->createTextureStorage2DArray(internalFormat, renderTarget, width, height, depth, levels);
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2DArray::setCompleteTexStorage(TextureStorage *newCompleteTexStorage) gl::Error TextureD3D_2DArray::setCompleteTexStorage(TextureStorage *newCompleteTexStorage)
...@@ -3000,7 +2665,7 @@ gl::Error TextureD3D_2DArray::setCompleteTexStorage(TextureStorage *newCompleteT ...@@ -3000,7 +2665,7 @@ gl::Error TextureD3D_2DArray::setCompleteTexStorage(TextureStorage *newCompleteT
// We do not support managed 2D array storage, as managed storage is ES2/D3D9 only // We do not support managed 2D array storage, as managed storage is ES2/D3D9 only
ASSERT(!mTexStorage->isManaged()); ASSERT(!mTexStorage->isManaged());
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureD3D_2DArray::updateStorage() gl::Error TextureD3D_2DArray::updateStorage()
...@@ -3011,15 +2676,11 @@ gl::Error TextureD3D_2DArray::updateStorage() ...@@ -3011,15 +2676,11 @@ gl::Error TextureD3D_2DArray::updateStorage()
{ {
if (isLevelComplete(level)) if (isLevelComplete(level))
{ {
gl::Error error = updateStorageLevel(level); ANGLE_TRY(updateStorageLevel(level));
if (error.isError())
{
return error;
}
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool TextureD3D_2DArray::isValidLevel(int level) const bool TextureD3D_2DArray::isValidLevel(int level) const
...@@ -3098,11 +2759,7 @@ gl::Error TextureD3D_2DArray::updateStorageLevel(int level) ...@@ -3098,11 +2759,7 @@ gl::Error TextureD3D_2DArray::updateStorageLevel(int level)
{ {
gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, layer); gl::ImageIndex index = gl::ImageIndex::Make2DArray(level, layer);
gl::Box region(0, 0, 0, getWidth(level), getHeight(level), 1); gl::Box region(0, 0, 0, getWidth(level), getHeight(level), 1);
gl::Error error = commitRegion(index, region); ANGLE_TRY(commitRegion(index, region));
if (error.isError())
{
return error;
}
} }
} }
...@@ -3426,4 +3083,4 @@ void TextureD3D_External::markAllImagesDirty() ...@@ -3426,4 +3083,4 @@ void TextureD3D_External::markAllImagesDirty()
{ {
UNREACHABLE(); UNREACHABLE();
} }
} } // namespace rx
...@@ -275,11 +275,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, ...@@ -275,11 +275,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams,
drawBufferStates[colorAttachmentIndex] != GL_NONE) drawBufferStates[colorAttachmentIndex] != GL_NONE)
{ {
RenderTarget11 *renderTarget = nullptr; RenderTarget11 *renderTarget = nullptr;
gl::Error error = attachment.getRenderTarget(&renderTarget); ANGLE_TRY(attachment.getRenderTarget(&renderTarget));
if (error.isError())
{
return error;
}
const gl::InternalFormat &formatInfo = *attachment.getFormat().info; const gl::InternalFormat &formatInfo = *attachment.getFormat().info;
...@@ -385,11 +381,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, ...@@ -385,11 +381,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams,
ASSERT(attachment != nullptr); ASSERT(attachment != nullptr);
RenderTarget11 *renderTarget = nullptr; RenderTarget11 *renderTarget = nullptr;
gl::Error error = attachment->getRenderTarget(&renderTarget); ANGLE_TRY(attachment->getRenderTarget(&renderTarget));
if (error.isError())
{
return error;
}
const auto &nativeFormat = renderTarget->getFormatSet().format; const auto &nativeFormat = renderTarget->getFormatSet().format;
......
...@@ -92,11 +92,7 @@ gl::Error FenceNV11::finish() ...@@ -92,11 +92,7 @@ gl::Error FenceNV11::finish()
while (finished != GL_TRUE) while (finished != GL_TRUE)
{ {
loopCount++; loopCount++;
gl::Error error = FenceTestHelper(this, true, &finished); ANGLE_TRY(FenceTestHelper(this, true, &finished));
if (error.isError())
{
return error;
}
if (loopCount % kDeviceLostCheckPeriod == 0 && mRenderer->testDeviceLost()) if (loopCount % kDeviceLostCheckPeriod == 0 && mRenderer->testDeviceLost())
{ {
...@@ -107,7 +103,7 @@ gl::Error FenceNV11::finish() ...@@ -107,7 +103,7 @@ gl::Error FenceNV11::finish()
ScheduleYield(); ScheduleYield();
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
// //
......
...@@ -50,14 +50,10 @@ gl::Error Image11::generateMipmap(Image11 *dest, ...@@ -50,14 +50,10 @@ gl::Error Image11::generateMipmap(Image11 *dest,
ASSERT(src->getHeight() == 1 || src->getHeight() / 2 == dest->getHeight()); ASSERT(src->getHeight() == 1 || src->getHeight() / 2 == dest->getHeight());
D3D11_MAPPED_SUBRESOURCE destMapped; D3D11_MAPPED_SUBRESOURCE destMapped;
gl::Error error = dest->map(D3D11_MAP_WRITE, &destMapped); ANGLE_TRY(dest->map(D3D11_MAP_WRITE, &destMapped));
if (error.isError())
{
return error;
}
D3D11_MAPPED_SUBRESOURCE srcMapped; D3D11_MAPPED_SUBRESOURCE srcMapped;
error = src->map(D3D11_MAP_READ, &srcMapped); gl::Error error = src->map(D3D11_MAP_READ, &srcMapped);
if (error.isError()) if (error.isError())
{ {
dest->unmap(); dest->unmap();
...@@ -78,7 +74,7 @@ gl::Error Image11::generateMipmap(Image11 *dest, ...@@ -78,7 +74,7 @@ gl::Error Image11::generateMipmap(Image11 *dest,
dest->markDirty(); dest->markDirty();
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool Image11::isDirty() const bool Image11::isDirty() const
...@@ -113,26 +109,14 @@ gl::Error Image11::copyToStorage(TextureStorage *storage, const gl::ImageIndex & ...@@ -113,26 +109,14 @@ gl::Error Image11::copyToStorage(TextureStorage *storage, const gl::ImageIndex &
if (attemptToReleaseStagingTexture) if (attemptToReleaseStagingTexture)
{ {
// If another image is relying on this Storage for its data, then we must let it recover its data before we overwrite it. // If another image is relying on this Storage for its data, then we must let it recover its data before we overwrite it.
gl::Error error = storage11->releaseAssociatedImage(index, this); ANGLE_TRY(storage11->releaseAssociatedImage(index, this));
if (error.isError())
{
return error;
}
} }
ID3D11Resource *stagingTexture = NULL; ID3D11Resource *stagingTexture = NULL;
unsigned int stagingSubresourceIndex = 0; unsigned int stagingSubresourceIndex = 0;
gl::Error error = getStagingTexture(&stagingTexture, &stagingSubresourceIndex); ANGLE_TRY(getStagingTexture(&stagingTexture, &stagingSubresourceIndex));
if (error.isError()) ANGLE_TRY(
{ storage11->updateSubresourceLevel(stagingTexture, stagingSubresourceIndex, index, region));
return error;
}
error = storage11->updateSubresourceLevel(stagingTexture, stagingSubresourceIndex, index, region);
if (error.isError())
{
return error;
}
// Once the image data has been copied into the Storage, we can release it locally. // Once the image data has been copied into the Storage, we can release it locally.
if (attemptToReleaseStagingTexture) if (attemptToReleaseStagingTexture)
...@@ -144,7 +128,7 @@ gl::Error Image11::copyToStorage(TextureStorage *storage, const gl::ImageIndex & ...@@ -144,7 +128,7 @@ gl::Error Image11::copyToStorage(TextureStorage *storage, const gl::ImageIndex &
mAssociatedImageIndex = index; mAssociatedImageIndex = index;
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
bool Image11::isAssociatedStorageValid(TextureStorage11* textureStorage) const bool Image11::isAssociatedStorageValid(TextureStorage11* textureStorage) const
...@@ -156,11 +140,7 @@ gl::Error Image11::recoverFromAssociatedStorage() ...@@ -156,11 +140,7 @@ gl::Error Image11::recoverFromAssociatedStorage()
{ {
if (mRecoverFromStorage) if (mRecoverFromStorage)
{ {
gl::Error error = createStagingTexture(); ANGLE_TRY(createStagingTexture());
if (error.isError())
{
return error;
}
bool textureStorageCorrect = mAssociatedStorage->isAssociatedImageValid(mAssociatedImageIndex, this); bool textureStorageCorrect = mAssociatedStorage->isAssociatedImageValid(mAssociatedImageIndex, this);
...@@ -172,12 +152,8 @@ gl::Error Image11::recoverFromAssociatedStorage() ...@@ -172,12 +152,8 @@ gl::Error Image11::recoverFromAssociatedStorage()
{ {
// CopySubResource from the Storage to the Staging texture // CopySubResource from the Storage to the Staging texture
gl::Box region(0, 0, 0, mWidth, mHeight, mDepth); gl::Box region(0, 0, 0, mWidth, mHeight, mDepth);
error = mAssociatedStorage->copySubresourceLevel(mStagingTexture, mStagingSubresource, mAssociatedImageIndex, region); ANGLE_TRY(mAssociatedStorage->copySubresourceLevel(mStagingTexture, mStagingSubresource,
if (error.isError()) mAssociatedImageIndex, region));
{
return error;
}
mRecoveredFromStorageCount += 1; mRecoveredFromStorageCount += 1;
} }
...@@ -185,7 +161,7 @@ gl::Error Image11::recoverFromAssociatedStorage() ...@@ -185,7 +161,7 @@ gl::Error Image11::recoverFromAssociatedStorage()
disassociateStorage(); disassociateStorage();
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void Image11::disassociateStorage() void Image11::disassociateStorage()
...@@ -272,11 +248,7 @@ gl::Error Image11::loadData(const gl::Box &area, ...@@ -272,11 +248,7 @@ gl::Error Image11::loadData(const gl::Box &area,
LoadImageFunction loadFunction = d3dFormatInfo.loadFunctions(type).loadFunction; LoadImageFunction loadFunction = d3dFormatInfo.loadFunctions(type).loadFunction;
D3D11_MAPPED_SUBRESOURCE mappedImage; D3D11_MAPPED_SUBRESOURCE mappedImage;
gl::Error error = map(D3D11_MAP_WRITE, &mappedImage); ANGLE_TRY(map(D3D11_MAP_WRITE, &mappedImage));
if (error.isError())
{
return error;
}
uint8_t *offsetMappedData = (reinterpret_cast<uint8_t*>(mappedImage.pData) + (area.y * mappedImage.RowPitch + area.x * outputPixelSize + area.z * mappedImage.DepthPitch)); uint8_t *offsetMappedData = (reinterpret_cast<uint8_t*>(mappedImage.pData) + (area.y * mappedImage.RowPitch + area.x * outputPixelSize + area.z * mappedImage.DepthPitch));
loadFunction(area.width, area.height, area.depth, loadFunction(area.width, area.height, area.depth,
...@@ -285,7 +257,7 @@ gl::Error Image11::loadData(const gl::Box &area, ...@@ -285,7 +257,7 @@ gl::Error Image11::loadData(const gl::Box &area,
unmap(); unmap();
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Image11::loadCompressedData(const gl::Box &area, const void *input) gl::Error Image11::loadCompressedData(const gl::Box &area, const void *input)
...@@ -309,11 +281,7 @@ gl::Error Image11::loadCompressedData(const gl::Box &area, const void *input) ...@@ -309,11 +281,7 @@ gl::Error Image11::loadCompressedData(const gl::Box &area, const void *input)
LoadImageFunction loadFunction = d3dFormatInfo.loadFunctions(GL_UNSIGNED_BYTE).loadFunction; LoadImageFunction loadFunction = d3dFormatInfo.loadFunctions(GL_UNSIGNED_BYTE).loadFunction;
D3D11_MAPPED_SUBRESOURCE mappedImage; D3D11_MAPPED_SUBRESOURCE mappedImage;
gl::Error error = map(D3D11_MAP_WRITE, &mappedImage); ANGLE_TRY(map(D3D11_MAP_WRITE, &mappedImage));
if (error.isError())
{
return error;
}
uint8_t* offsetMappedData = reinterpret_cast<uint8_t*>(mappedImage.pData) + ((area.y / outputBlockHeight) * mappedImage.RowPitch + uint8_t* offsetMappedData = reinterpret_cast<uint8_t*>(mappedImage.pData) + ((area.y / outputBlockHeight) * mappedImage.RowPitch +
(area.x / outputBlockWidth) * outputPixelSize + (area.x / outputBlockWidth) * outputPixelSize +
...@@ -325,7 +293,7 @@ gl::Error Image11::loadCompressedData(const gl::Box &area, const void *input) ...@@ -325,7 +293,7 @@ gl::Error Image11::loadCompressedData(const gl::Box &area, const void *input)
unmap(); unmap();
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Image11::copyFromTexStorage(const gl::ImageIndex &imageIndex, TextureStorage *source) gl::Error Image11::copyFromTexStorage(const gl::ImageIndex &imageIndex, TextureStorage *source)
...@@ -333,11 +301,7 @@ gl::Error Image11::copyFromTexStorage(const gl::ImageIndex &imageIndex, TextureS ...@@ -333,11 +301,7 @@ gl::Error Image11::copyFromTexStorage(const gl::ImageIndex &imageIndex, TextureS
TextureStorage11 *storage11 = GetAs<TextureStorage11>(source); TextureStorage11 *storage11 = GetAs<TextureStorage11>(source);
ID3D11Resource *resource = nullptr; ID3D11Resource *resource = nullptr;
gl::Error error = storage11->getResource(&resource); ANGLE_TRY(storage11->getResource(&resource));
if (error.isError())
{
return error;
}
UINT subresourceIndex = storage11->getSubresourceIndex(imageIndex); UINT subresourceIndex = storage11->getSubresourceIndex(imageIndex);
TextureHelper11 textureHelper = TextureHelper11 textureHelper =
...@@ -361,11 +325,7 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset, ...@@ -361,11 +325,7 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset,
if (d3d11Format.texFormat == mDXGIFormat && sourceInternalFormat == mInternalFormat) if (d3d11Format.texFormat == mDXGIFormat && sourceInternalFormat == mInternalFormat)
{ {
RenderTargetD3D *renderTarget = nullptr; RenderTargetD3D *renderTarget = nullptr;
gl::Error error = srcAttachment->getRenderTarget(&renderTarget); ANGLE_TRY(srcAttachment->getRenderTarget(&renderTarget));
if (error.isError())
{
return error;
}
RenderTarget11 *rt11 = GetAs<RenderTarget11>(renderTarget); RenderTarget11 *rt11 = GetAs<RenderTarget11>(renderTarget);
ASSERT(rt11->getTexture()); ASSERT(rt11->getTexture());
...@@ -381,11 +341,7 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset, ...@@ -381,11 +341,7 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset,
// This format requires conversion, so we must copy the texture to staging and manually convert // This format requires conversion, so we must copy the texture to staging and manually convert
// via readPixels // via readPixels
D3D11_MAPPED_SUBRESOURCE mappedImage; D3D11_MAPPED_SUBRESOURCE mappedImage;
gl::Error error = map(D3D11_MAP_WRITE, &mappedImage); ANGLE_TRY(map(D3D11_MAP_WRITE, &mappedImage));
if (error.isError())
{
return error;
}
// determine the offset coordinate into the destination buffer // determine the offset coordinate into the destination buffer
const auto &dxgiFormatInfo = d3d11::GetDXGIFormatSizeInfo(mDXGIFormat); const auto &dxgiFormatInfo = d3d11::GetDXGIFormatSizeInfo(mDXGIFormat);
...@@ -400,6 +356,7 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset, ...@@ -400,6 +356,7 @@ gl::Error Image11::copyFromFramebuffer(const gl::Offset &destOffset,
d3d11::Format::Get(mInternalFormat, mRenderer->getRenderer11DeviceCaps()); d3d11::Format::Get(mInternalFormat, mRenderer->getRenderer11DeviceCaps());
auto loadFunction = destD3D11Format.loadFunctions(destFormatInfo.type); auto loadFunction = destD3D11Format.loadFunctions(destFormatInfo.type);
gl::Error error = gl::NoError();
if (loadFunction.requiresConversion) if (loadFunction.requiresConversion)
{ {
size_t bufferSize = destFormatInfo.pixelBytes * sourceArea.width * sourceArea.height; size_t bufferSize = destFormatInfo.pixelBytes * sourceArea.width * sourceArea.height;
...@@ -436,11 +393,7 @@ gl::Error Image11::copyWithoutConversion(const gl::Offset &destOffset, ...@@ -436,11 +393,7 @@ gl::Error Image11::copyWithoutConversion(const gl::Offset &destOffset,
// No conversion needed-- use copyback fastpath // No conversion needed-- use copyback fastpath
ID3D11Resource *stagingTexture = nullptr; ID3D11Resource *stagingTexture = nullptr;
unsigned int stagingSubresourceIndex = 0; unsigned int stagingSubresourceIndex = 0;
gl::Error error = getStagingTexture(&stagingTexture, &stagingSubresourceIndex); ANGLE_TRY(getStagingTexture(&stagingTexture, &stagingSubresourceIndex));
if (error.isError())
{
return error;
}
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext();
...@@ -505,20 +458,16 @@ gl::Error Image11::copyWithoutConversion(const gl::Offset &destOffset, ...@@ -505,20 +458,16 @@ gl::Error Image11::copyWithoutConversion(const gl::Offset &destOffset,
} }
mDirty = true; mDirty = true;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Image11::getStagingTexture(ID3D11Resource **outStagingTexture, unsigned int *outSubresourceIndex) gl::Error Image11::getStagingTexture(ID3D11Resource **outStagingTexture, unsigned int *outSubresourceIndex)
{ {
gl::Error error = createStagingTexture(); ANGLE_TRY(createStagingTexture());
if (error.isError())
{
return error;
}
*outStagingTexture = mStagingTexture; *outStagingTexture = mStagingTexture;
*outSubresourceIndex = mStagingSubresource; *outSubresourceIndex = mStagingSubresource;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void Image11::releaseStagingTexture() void Image11::releaseStagingTexture()
...@@ -639,19 +588,11 @@ gl::Error Image11::createStagingTexture() ...@@ -639,19 +588,11 @@ gl::Error Image11::createStagingTexture()
gl::Error Image11::map(D3D11_MAP mapType, D3D11_MAPPED_SUBRESOURCE *map) gl::Error Image11::map(D3D11_MAP mapType, D3D11_MAPPED_SUBRESOURCE *map)
{ {
// We must recover from the TextureStorage if necessary, even for D3D11_MAP_WRITE. // We must recover from the TextureStorage if necessary, even for D3D11_MAP_WRITE.
gl::Error error = recoverFromAssociatedStorage(); ANGLE_TRY(recoverFromAssociatedStorage());
if (error.isError())
{
return error;
}
ID3D11Resource *stagingTexture = NULL; ID3D11Resource *stagingTexture = NULL;
unsigned int subresourceIndex = 0; unsigned int subresourceIndex = 0;
error = getStagingTexture(&stagingTexture, &subresourceIndex); ANGLE_TRY(getStagingTexture(&stagingTexture, &subresourceIndex));
if (error.isError())
{
return error;
}
ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext(); ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext();
......
...@@ -96,17 +96,11 @@ template <typename T> ...@@ -96,17 +96,11 @@ template <typename T>
gl::Error Query11::getResultBase(T *params) gl::Error Query11::getResultBase(T *params)
{ {
ASSERT(mActiveQuery->query == nullptr); ASSERT(mActiveQuery->query == nullptr);
ANGLE_TRY(flush(true));
gl::Error error = flush(true);
if (error.isError())
{
return error;
}
ASSERT(mPendingQueries.empty()); ASSERT(mPendingQueries.empty());
*params = static_cast<T>(mResultSum); *params = static_cast<T>(mResultSum);
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Query11::getResult(GLint *params) gl::Error Query11::getResult(GLint *params)
...@@ -131,14 +125,10 @@ gl::Error Query11::getResult(GLuint64 *params) ...@@ -131,14 +125,10 @@ gl::Error Query11::getResult(GLuint64 *params)
gl::Error Query11::isResultAvailable(bool *available) gl::Error Query11::isResultAvailable(bool *available)
{ {
gl::Error error = flush(false); ANGLE_TRY(flush(false));
if (error.isError())
{
return error;
}
*available = mPendingQueries.empty(); *available = mPendingQueries.empty();
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Query11::pause() gl::Error Query11::pause()
...@@ -167,11 +157,7 @@ gl::Error Query11::resume() ...@@ -167,11 +157,7 @@ gl::Error Query11::resume()
{ {
if (mActiveQuery->query == nullptr) if (mActiveQuery->query == nullptr)
{ {
gl::Error error = flush(false); ANGLE_TRY(flush(false));
if (error.isError())
{
return error;
}
GLenum queryType = getType(); GLenum queryType = getType();
D3D11_QUERY d3dQueryType = gl_d3d11::ConvertQueryType(queryType); D3D11_QUERY d3dQueryType = gl_d3d11::ConvertQueryType(queryType);
...@@ -234,11 +220,7 @@ gl::Error Query11::flush(bool force) ...@@ -234,11 +220,7 @@ gl::Error Query11::flush(bool force)
do do
{ {
gl::Error error = testQuery(query); ANGLE_TRY(testQuery(query));
if (error.isError())
{
return error;
}
if (!query->finished && !force) if (!query->finished && !force)
{ {
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
...@@ -249,7 +231,7 @@ gl::Error Query11::flush(bool force) ...@@ -249,7 +231,7 @@ gl::Error Query11::flush(bool force)
mPendingQueries.pop_front(); mPendingQueries.pop_front();
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Query11::testQuery(QueryState *queryState) gl::Error Query11::testQuery(QueryState *queryState)
...@@ -408,7 +390,7 @@ gl::Error Query11::testQuery(QueryState *queryState) ...@@ -408,7 +390,7 @@ gl::Error Query11::testQuery(QueryState *queryState)
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
} } // namespace rx
...@@ -551,11 +551,7 @@ egl::Error Renderer11::initialize() ...@@ -551,11 +551,7 @@ egl::Error Renderer11::initialize()
{ {
HRESULT result = S_OK; HRESULT result = S_OK;
egl::Error error = initializeD3DDevice(); ANGLE_TRY(initializeD3DDevice());
if (error.isError())
{
return error;
}
#if !defined(ANGLE_ENABLE_WINDOWS_STORE) #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
#if !ANGLE_SKIP_DXGI_1_2_CHECK #if !ANGLE_SKIP_DXGI_1_2_CHECK
...@@ -777,11 +773,7 @@ egl::Error Renderer11::initializeD3DDevice() ...@@ -777,11 +773,7 @@ egl::Error Renderer11::initializeD3DDevice()
{ {
// We should use the inputted D3D11 device instead // We should use the inputted D3D11 device instead
void *device = nullptr; void *device = nullptr;
egl::Error error = mEGLDevice->getDevice(&device); ANGLE_TRY(mEGLDevice->getDevice(&device));
if (error.isError())
{
return error;
}
ID3D11Device *d3dDevice = reinterpret_cast<ID3D11Device *>(device); ID3D11Device *d3dDevice = reinterpret_cast<ID3D11Device *>(device);
if (FAILED(d3dDevice->GetDeviceRemovedReason())) if (FAILED(d3dDevice->GetDeviceRemovedReason()))
...@@ -1212,21 +1204,13 @@ gl::Error Renderer11::generateSwizzle(gl::Texture *texture) ...@@ -1212,21 +1204,13 @@ gl::Error Renderer11::generateSwizzle(gl::Texture *texture)
ASSERT(textureD3D); ASSERT(textureD3D);
TextureStorage *texStorage = nullptr; TextureStorage *texStorage = nullptr;
gl::Error error = textureD3D->getNativeTexture(&texStorage); ANGLE_TRY(textureD3D->getNativeTexture(&texStorage));
if (error.isError())
{
return error;
}
if (texStorage) if (texStorage)
{ {
TextureStorage11 *storage11 = GetAs<TextureStorage11>(texStorage); TextureStorage11 *storage11 = GetAs<TextureStorage11>(texStorage);
const gl::TextureState &textureState = texture->getTextureState(); const gl::TextureState &textureState = texture->getTextureState();
error = storage11->generateSwizzles(textureState.getSwizzleState()); ANGLE_TRY(storage11->generateSwizzles(textureState.getSwizzleState()));
if (error.isError())
{
return error;
}
} }
} }
...@@ -1272,11 +1256,7 @@ gl::Error Renderer11::setSamplerState(gl::SamplerType type, ...@@ -1272,11 +1256,7 @@ gl::Error Renderer11::setSamplerState(gl::SamplerType type,
TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture); TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture);
TextureStorage *storage = nullptr; TextureStorage *storage = nullptr;
gl::Error error = textureD3D->getNativeTexture(&storage); ANGLE_TRY(textureD3D->getNativeTexture(&storage));
if (error.isError())
{
return error;
}
// Storage should exist, texture should be complete // Storage should exist, texture should be complete
ASSERT(storage); ASSERT(storage);
...@@ -1294,11 +1274,7 @@ gl::Error Renderer11::setSamplerState(gl::SamplerType type, ...@@ -1294,11 +1274,7 @@ gl::Error Renderer11::setSamplerState(gl::SamplerType type,
memcmp(&samplerState, &mCurPixelSamplerStates[index], sizeof(gl::SamplerState)) != 0) memcmp(&samplerState, &mCurPixelSamplerStates[index], sizeof(gl::SamplerState)) != 0)
{ {
ID3D11SamplerState *dxSamplerState = NULL; ID3D11SamplerState *dxSamplerState = NULL;
error = mStateCache.getSamplerState(samplerState, &dxSamplerState); ANGLE_TRY(mStateCache.getSamplerState(samplerState, &dxSamplerState));
if (error.isError())
{
return error;
}
ASSERT(dxSamplerState != NULL); ASSERT(dxSamplerState != NULL);
mDeviceContext->PSSetSamplers(index, 1, &dxSamplerState); mDeviceContext->PSSetSamplers(index, 1, &dxSamplerState);
...@@ -1318,11 +1294,7 @@ gl::Error Renderer11::setSamplerState(gl::SamplerType type, ...@@ -1318,11 +1294,7 @@ gl::Error Renderer11::setSamplerState(gl::SamplerType type,
memcmp(&samplerState, &mCurVertexSamplerStates[index], sizeof(gl::SamplerState)) != 0) memcmp(&samplerState, &mCurVertexSamplerStates[index], sizeof(gl::SamplerState)) != 0)
{ {
ID3D11SamplerState *dxSamplerState = NULL; ID3D11SamplerState *dxSamplerState = NULL;
error = mStateCache.getSamplerState(samplerState, &dxSamplerState); ANGLE_TRY(mStateCache.getSamplerState(samplerState, &dxSamplerState));
if (error.isError())
{
return error;
}
ASSERT(dxSamplerState != NULL); ASSERT(dxSamplerState != NULL);
mDeviceContext->VSSetSamplers(index, 1, &dxSamplerState); mDeviceContext->VSSetSamplers(index, 1, &dxSamplerState);
...@@ -1339,7 +1311,7 @@ gl::Error Renderer11::setSamplerState(gl::SamplerType type, ...@@ -1339,7 +1311,7 @@ gl::Error Renderer11::setSamplerState(gl::SamplerType type,
ASSERT(metadata != nullptr); ASSERT(metadata != nullptr);
metadata->update(index, *texture); metadata->update(index, *texture);
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *texture) gl::Error Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *texture)
...@@ -1351,11 +1323,7 @@ gl::Error Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *t ...@@ -1351,11 +1323,7 @@ gl::Error Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *t
TextureD3D *textureImpl = GetImplAs<TextureD3D>(texture); TextureD3D *textureImpl = GetImplAs<TextureD3D>(texture);
TextureStorage *texStorage = nullptr; TextureStorage *texStorage = nullptr;
gl::Error error = textureImpl->getNativeTexture(&texStorage); ANGLE_TRY(textureImpl->getNativeTexture(&texStorage));
if (error.isError())
{
return error;
}
// Texture should be complete and have a storage // Texture should be complete and have a storage
ASSERT(texStorage); ASSERT(texStorage);
...@@ -1600,18 +1568,10 @@ gl::Error Renderer11::applyVertexBuffer(const gl::State &state, ...@@ -1600,18 +1568,10 @@ gl::Error Renderer11::applyVertexBuffer(const gl::State &state,
const auto &vertexArray = state.getVertexArray(); const auto &vertexArray = state.getVertexArray();
auto *vertexArray11 = GetImplAs<VertexArray11>(vertexArray); auto *vertexArray11 = GetImplAs<VertexArray11>(vertexArray);
gl::Error error = vertexArray11->updateDirtyAndDynamicAttribs(mVertexDataManager, state, first, ANGLE_TRY(vertexArray11->updateDirtyAndDynamicAttribs(mVertexDataManager, state, first, count,
count, instances); instances));
if (error.isError())
{
return error;
}
error = mStateManager.updateCurrentValueAttribs(state, mVertexDataManager); ANGLE_TRY(mStateManager.updateCurrentValueAttribs(state, mVertexDataManager));
if (error.isError())
{
return error;
}
// If index information is passed, mark it with the current changed status. // If index information is passed, mark it with the current changed status.
if (indexInfo) if (indexInfo)
...@@ -1745,12 +1705,8 @@ gl::Error Renderer11::drawArraysImpl(const gl::ContextState &data, ...@@ -1745,12 +1705,8 @@ gl::Error Renderer11::drawArraysImpl(const gl::ContextState &data,
} }
rx::ShaderExecutableD3D *pixelExe = nullptr; rx::ShaderExecutableD3D *pixelExe = nullptr;
gl::Error error = ANGLE_TRY(
programD3D->getPixelExecutableForFramebuffer(glState.getDrawFramebuffer(), &pixelExe); programD3D->getPixelExecutableForFramebuffer(glState.getDrawFramebuffer(), &pixelExe));
if (error.isError())
{
return error;
}
// Skip the draw call if rasterizer discard is enabled (or no fragment shader). // Skip the draw call if rasterizer discard is enabled (or no fragment shader).
if (!pixelExe || glState.getRasterizerState().rasterizerDiscard) if (!pixelExe || glState.getRasterizerState().rasterizerDiscard)
...@@ -1764,12 +1720,8 @@ gl::Error Renderer11::drawArraysImpl(const gl::ContextState &data, ...@@ -1764,12 +1720,8 @@ gl::Error Renderer11::drawArraysImpl(const gl::ContextState &data,
// Retrieve the geometry shader. // Retrieve the geometry shader.
rx::ShaderExecutableD3D *geometryExe = nullptr; rx::ShaderExecutableD3D *geometryExe = nullptr;
error = ANGLE_TRY(
programD3D->getGeometryExecutableForPrimitiveType(data, mode, &geometryExe, nullptr); programD3D->getGeometryExecutableForPrimitiveType(data, mode, &geometryExe, nullptr));
if (error.isError())
{
return error;
}
ID3D11GeometryShader *geometryShader = ID3D11GeometryShader *geometryShader =
(geometryExe ? GetAs<ShaderExecutable11>(geometryExe)->getGeometryShader() : NULL); (geometryExe ? GetAs<ShaderExecutable11>(geometryExe)->getGeometryShader() : NULL);
...@@ -1931,11 +1883,7 @@ gl::Error Renderer11::drawLineLoop(const gl::ContextState &data, ...@@ -1931,11 +1883,7 @@ gl::Error Renderer11::drawLineLoop(const gl::ContextState &data,
intptr_t offset = reinterpret_cast<intptr_t>(indices); intptr_t offset = reinterpret_cast<intptr_t>(indices);
const uint8_t *bufferData = NULL; const uint8_t *bufferData = NULL;
gl::Error error = storage->getData(&bufferData); ANGLE_TRY(storage->getData(&bufferData));
if (error.isError())
{
return error;
}
indices = bufferData + offset; indices = bufferData + offset;
} }
...@@ -1964,29 +1912,17 @@ gl::Error Renderer11::drawLineLoop(const gl::ContextState &data, ...@@ -1964,29 +1912,17 @@ gl::Error Renderer11::drawLineLoop(const gl::ContextState &data,
unsigned int spaceNeeded = unsigned int spaceNeeded =
static_cast<unsigned int>(sizeof(GLuint) * mScratchIndexDataBuffer.size()); static_cast<unsigned int>(sizeof(GLuint) * mScratchIndexDataBuffer.size());
gl::Error error = mLineLoopIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT); ANGLE_TRY(mLineLoopIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT));
if (error.isError())
{
return error;
}
void* mappedMemory = NULL; void* mappedMemory = NULL;
unsigned int offset; unsigned int offset;
error = mLineLoopIB->mapBuffer(spaceNeeded, &mappedMemory, &offset); ANGLE_TRY(mLineLoopIB->mapBuffer(spaceNeeded, &mappedMemory, &offset));
if (error.isError())
{
return error;
}
// Copy over the converted index data. // Copy over the converted index data.
memcpy(mappedMemory, &mScratchIndexDataBuffer[0], memcpy(mappedMemory, &mScratchIndexDataBuffer[0],
sizeof(GLuint) * mScratchIndexDataBuffer.size()); sizeof(GLuint) * mScratchIndexDataBuffer.size());
error = mLineLoopIB->unmapBuffer(); ANGLE_TRY(mLineLoopIB->unmapBuffer());
if (error.isError())
{
return error;
}
IndexBuffer11 *indexBuffer = GetAs<IndexBuffer11>(mLineLoopIB->getIndexBuffer()); IndexBuffer11 *indexBuffer = GetAs<IndexBuffer11>(mLineLoopIB->getIndexBuffer());
ID3D11Buffer *d3dIndexBuffer = indexBuffer->getBuffer(); ID3D11Buffer *d3dIndexBuffer = indexBuffer->getBuffer();
...@@ -2013,7 +1949,7 @@ gl::Error Renderer11::drawLineLoop(const gl::ContextState &data, ...@@ -2013,7 +1949,7 @@ gl::Error Renderer11::drawLineLoop(const gl::ContextState &data,
mDeviceContext->DrawIndexed(indexCount, 0, baseVertexLocation); mDeviceContext->DrawIndexed(indexCount, 0, baseVertexLocation);
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Renderer11::drawTriangleFan(const gl::ContextState &data, gl::Error Renderer11::drawTriangleFan(const gl::ContextState &data,
...@@ -2035,11 +1971,7 @@ gl::Error Renderer11::drawTriangleFan(const gl::ContextState &data, ...@@ -2035,11 +1971,7 @@ gl::Error Renderer11::drawTriangleFan(const gl::ContextState &data,
intptr_t offset = reinterpret_cast<intptr_t>(indices); intptr_t offset = reinterpret_cast<intptr_t>(indices);
const uint8_t *bufferData = NULL; const uint8_t *bufferData = NULL;
gl::Error error = storage->getData(&bufferData); ANGLE_TRY(storage->getData(&bufferData));
if (error.isError())
{
return error;
}
indexPointer = bufferData + offset; indexPointer = bufferData + offset;
} }
...@@ -2070,27 +2002,15 @@ gl::Error Renderer11::drawTriangleFan(const gl::ContextState &data, ...@@ -2070,27 +2002,15 @@ gl::Error Renderer11::drawTriangleFan(const gl::ContextState &data,
const unsigned int spaceNeeded = const unsigned int spaceNeeded =
static_cast<unsigned int>(mScratchIndexDataBuffer.size() * sizeof(unsigned int)); static_cast<unsigned int>(mScratchIndexDataBuffer.size() * sizeof(unsigned int));
gl::Error error = mTriangleFanIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT); ANGLE_TRY(mTriangleFanIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT));
if (error.isError())
{
return error;
}
void *mappedMemory = nullptr; void *mappedMemory = nullptr;
unsigned int offset; unsigned int offset;
error = mTriangleFanIB->mapBuffer(spaceNeeded, &mappedMemory, &offset); ANGLE_TRY(mTriangleFanIB->mapBuffer(spaceNeeded, &mappedMemory, &offset));
if (error.isError())
{
return error;
}
memcpy(mappedMemory, &mScratchIndexDataBuffer[0], spaceNeeded); memcpy(mappedMemory, &mScratchIndexDataBuffer[0], spaceNeeded);
error = mTriangleFanIB->unmapBuffer(); ANGLE_TRY(mTriangleFanIB->unmapBuffer());
if (error.isError())
{
return error;
}
IndexBuffer11 *indexBuffer = GetAs<IndexBuffer11>(mTriangleFanIB->getIndexBuffer()); IndexBuffer11 *indexBuffer = GetAs<IndexBuffer11>(mTriangleFanIB->getIndexBuffer());
ID3D11Buffer *d3dIndexBuffer = indexBuffer->getBuffer(); ID3D11Buffer *d3dIndexBuffer = indexBuffer->getBuffer();
...@@ -2116,7 +2036,7 @@ gl::Error Renderer11::drawTriangleFan(const gl::ContextState &data, ...@@ -2116,7 +2036,7 @@ gl::Error Renderer11::drawTriangleFan(const gl::ContextState &data,
mDeviceContext->DrawIndexed(indexCount, 0, -minIndex); mDeviceContext->DrawIndexed(indexCount, 0, -minIndex);
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error Renderer11::applyShaders(const gl::ContextState &data, GLenum drawMode) gl::Error Renderer11::applyShaders(const gl::ContextState &data, GLenum drawMode)
...@@ -3313,12 +3233,8 @@ gl::Error Renderer11::createRenderTargetCopy(RenderTargetD3D *source, RenderTarg ...@@ -3313,12 +3233,8 @@ gl::Error Renderer11::createRenderTargetCopy(RenderTargetD3D *source, RenderTarg
ASSERT(source != nullptr); ASSERT(source != nullptr);
RenderTargetD3D *newRT = nullptr; RenderTargetD3D *newRT = nullptr;
gl::Error error = createRenderTarget(source->getWidth(), source->getHeight(), ANGLE_TRY(createRenderTarget(source->getWidth(), source->getHeight(),
source->getInternalFormat(), source->getSamples(), &newRT); source->getInternalFormat(), source->getSamples(), &newRT));
if (error.isError())
{
return error;
}
RenderTarget11 *source11 = GetAs<RenderTarget11>(source); RenderTarget11 *source11 = GetAs<RenderTarget11>(source);
RenderTarget11 *dest11 = GetAs<RenderTarget11>(newRT); RenderTarget11 *dest11 = GetAs<RenderTarget11>(newRT);
...@@ -3480,11 +3396,8 @@ gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog, ...@@ -3480,11 +3396,8 @@ gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog,
ID3DBlob *binary = NULL; ID3DBlob *binary = NULL;
std::string debugInfo; std::string debugInfo;
gl::Error error = mCompiler.compileToBinary(infoLog, shaderHLSL, profile, configs, loopMacros, &binary, &debugInfo); ANGLE_TRY(mCompiler.compileToBinary(infoLog, shaderHLSL, profile, configs, loopMacros, &binary,
if (error.isError()) &debugInfo));
{
return error;
}
// It's possible that binary is NULL if the compiler failed in all configurations. Set the executable to NULL // It's possible that binary is NULL if the compiler failed in all configurations. Set the executable to NULL
// and return GL_NO_ERROR to signify that there was a link error but the internal state is still OK. // and return GL_NO_ERROR to signify that there was a link error but the internal state is still OK.
...@@ -3494,8 +3407,8 @@ gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog, ...@@ -3494,8 +3407,8 @@ gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog,
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
error = loadExecutable(binary->GetBufferPointer(), binary->GetBufferSize(), type, gl::Error error = loadExecutable(binary->GetBufferPointer(), binary->GetBufferSize(), type,
streamOutVaryings, separatedOutputBuffers, outExectuable); streamOutVaryings, separatedOutputBuffers, outExectuable);
SafeRelease(binary); SafeRelease(binary);
if (error.isError()) if (error.isError())
...@@ -3508,7 +3421,7 @@ gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog, ...@@ -3508,7 +3421,7 @@ gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog,
(*outExectuable)->appendDebugInfo(debugInfo); (*outExectuable)->appendDebugInfo(debugInfo);
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
UniformStorageD3D *Renderer11::createUniformStorage(size_t storageSize) UniformStorageD3D *Renderer11::createUniformStorage(size_t storageSize)
......
...@@ -776,6 +776,7 @@ TextureStorage11_2D::~TextureStorage11_2D() ...@@ -776,6 +776,7 @@ TextureStorage11_2D::~TextureStorage11_2D()
if (error.isError()) if (error.isError())
{ {
// TODO: Find a way to report this back to the context // TODO: Find a way to report this back to the context
ERR("Error initialization texture storage: %x", error.getCode());
} }
} }
} }
...@@ -969,11 +970,7 @@ gl::Error TextureStorage11_2D::releaseAssociatedImage(const gl::ImageIndex &inde ...@@ -969,11 +970,7 @@ gl::Error TextureStorage11_2D::releaseAssociatedImage(const gl::ImageIndex &inde
{ {
// Force the image to recover from storage before its data is overwritten. // Force the image to recover from storage before its data is overwritten.
// This will reset mAssociatedImages[level] to nullptr too. // This will reset mAssociatedImages[level] to nullptr too.
gl::Error error = mAssociatedImages[level]->recoverFromAssociatedStorage(); ANGLE_TRY(mAssociatedImages[level]->recoverFromAssociatedStorage());
if (error.isError())
{
return error;
}
} }
} }
} }
...@@ -1284,11 +1281,7 @@ gl::Error TextureStorage11_2D::getSwizzleRenderTarget(int mipLevel, ID3D11Render ...@@ -1284,11 +1281,7 @@ gl::Error TextureStorage11_2D::getSwizzleRenderTarget(int mipLevel, ID3D11Render
if (!mSwizzleRenderTargets[mipLevel]) if (!mSwizzleRenderTargets[mipLevel])
{ {
ID3D11Resource *swizzleTexture = nullptr; ID3D11Resource *swizzleTexture = nullptr;
gl::Error error = getSwizzleTexture(&swizzleTexture); ANGLE_TRY(getSwizzleTexture(&swizzleTexture));
if (error.isError())
{
return error;
}
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
...@@ -1555,11 +1548,7 @@ gl::Error TextureStorage11_EGLImage::getRenderTarget(const gl::ImageIndex &index ...@@ -1555,11 +1548,7 @@ gl::Error TextureStorage11_EGLImage::getRenderTarget(const gl::ImageIndex &index
ASSERT(index.mipIndex == 0); ASSERT(index.mipIndex == 0);
UNUSED_ASSERTION_VARIABLE(index); UNUSED_ASSERTION_VARIABLE(index);
gl::Error error = checkForUpdatedRenderTarget(); ANGLE_TRY(checkForUpdatedRenderTarget());
if (error.isError())
{
return error;
}
return mImage->getRenderTarget(outRT); return mImage->getRenderTarget(outRT);
} }
...@@ -1567,27 +1556,19 @@ gl::Error TextureStorage11_EGLImage::getRenderTarget(const gl::ImageIndex &index ...@@ -1567,27 +1556,19 @@ gl::Error TextureStorage11_EGLImage::getRenderTarget(const gl::ImageIndex &index
gl::Error TextureStorage11_EGLImage::copyToStorage(TextureStorage *destStorage) gl::Error TextureStorage11_EGLImage::copyToStorage(TextureStorage *destStorage)
{ {
ID3D11Resource *sourceResouce = nullptr; ID3D11Resource *sourceResouce = nullptr;
gl::Error error = getResource(&sourceResouce); ANGLE_TRY(getResource(&sourceResouce));
if (error.isError())
{
return error;
}
ASSERT(destStorage); ASSERT(destStorage);
TextureStorage11_2D *dest11 = GetAs<TextureStorage11_2D>(destStorage); TextureStorage11_2D *dest11 = GetAs<TextureStorage11_2D>(destStorage);
ID3D11Resource *destResource = nullptr; ID3D11Resource *destResource = nullptr;
error = dest11->getResource(&destResource); ANGLE_TRY(dest11->getResource(&destResource));
if (error.isError())
{
return error;
}
ID3D11DeviceContext *immediateContext = mRenderer->getDeviceContext(); ID3D11DeviceContext *immediateContext = mRenderer->getDeviceContext();
immediateContext->CopyResource(destResource, sourceResouce); immediateContext->CopyResource(destResource, sourceResouce);
dest11->markDirty(); dest11->markDirty();
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void TextureStorage11_EGLImage::associateImage(Image11 *, const gl::ImageIndex &) void TextureStorage11_EGLImage::associateImage(Image11 *, const gl::ImageIndex &)
...@@ -1660,11 +1641,7 @@ gl::Error TextureStorage11_EGLImage::getSwizzleRenderTarget(int mipLevel, ...@@ -1660,11 +1641,7 @@ gl::Error TextureStorage11_EGLImage::getSwizzleRenderTarget(int mipLevel,
if (!mSwizzleRenderTargets[mipLevel]) if (!mSwizzleRenderTargets[mipLevel])
{ {
ID3D11Resource *swizzleTexture = nullptr; ID3D11Resource *swizzleTexture = nullptr;
gl::Error error = getSwizzleTexture(&swizzleTexture); ANGLE_TRY(getSwizzleTexture(&swizzleTexture));
if (error.isError())
{
return error;
}
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
...@@ -1686,7 +1663,7 @@ gl::Error TextureStorage11_EGLImage::getSwizzleRenderTarget(int mipLevel, ...@@ -1686,7 +1663,7 @@ gl::Error TextureStorage11_EGLImage::getSwizzleRenderTarget(int mipLevel,
} }
*outRTV = mSwizzleRenderTargets[mipLevel]; *outRTV = mSwizzleRenderTargets[mipLevel];
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11_EGLImage::checkForUpdatedRenderTarget() gl::Error TextureStorage11_EGLImage::checkForUpdatedRenderTarget()
...@@ -1739,11 +1716,7 @@ gl::Error TextureStorage11_EGLImage::createSRV(int baseLevel, ...@@ -1739,11 +1716,7 @@ gl::Error TextureStorage11_EGLImage::createSRV(int baseLevel,
else else
{ {
RenderTarget11 *renderTarget = nullptr; RenderTarget11 *renderTarget = nullptr;
gl::Error error = getImageRenderTarget(&renderTarget); ANGLE_TRY(getImageRenderTarget(&renderTarget));
if (error.isError())
{
return error;
}
ASSERT(texture == renderTarget->getTexture()); ASSERT(texture == renderTarget->getTexture());
...@@ -1884,36 +1857,20 @@ gl::Error TextureStorage11_Cube::copyToStorage(TextureStorage *destStorage) ...@@ -1884,36 +1857,20 @@ gl::Error TextureStorage11_Cube::copyToStorage(TextureStorage *destStorage)
// corresponding textures in destStorage. // corresponding textures in destStorage.
if (mTexture) if (mTexture)
{ {
gl::Error error = dest11->useLevelZeroWorkaroundTexture(false); ANGLE_TRY(dest11->useLevelZeroWorkaroundTexture(false));
if (error.isError())
{
return error;
}
ID3D11Resource *destResource = nullptr; ID3D11Resource *destResource = nullptr;
error = dest11->getResource(&destResource); ANGLE_TRY(dest11->getResource(&destResource));
if (error.isError())
{
return error;
}
immediateContext->CopyResource(destResource, mTexture); immediateContext->CopyResource(destResource, mTexture);
} }
if (mLevelZeroTexture) if (mLevelZeroTexture)
{ {
gl::Error error = dest11->useLevelZeroWorkaroundTexture(true); ANGLE_TRY(dest11->useLevelZeroWorkaroundTexture(true));
if (error.isError())
{
return error;
}
ID3D11Resource *destResource = nullptr; ID3D11Resource *destResource = nullptr;
error = dest11->getResource(&destResource); ANGLE_TRY(dest11->getResource(&destResource));
if (error.isError())
{
return error;
}
immediateContext->CopyResource(destResource, mLevelZeroTexture); immediateContext->CopyResource(destResource, mLevelZeroTexture);
} }
...@@ -1921,18 +1878,10 @@ gl::Error TextureStorage11_Cube::copyToStorage(TextureStorage *destStorage) ...@@ -1921,18 +1878,10 @@ gl::Error TextureStorage11_Cube::copyToStorage(TextureStorage *destStorage)
else else
{ {
ID3D11Resource *sourceResouce = nullptr; ID3D11Resource *sourceResouce = nullptr;
gl::Error error = getResource(&sourceResouce); ANGLE_TRY(getResource(&sourceResouce));
if (error.isError())
{
return error;
}
ID3D11Resource *destResource = nullptr; ID3D11Resource *destResource = nullptr;
error = dest11->getResource(&destResource); ANGLE_TRY(dest11->getResource(&destResource));
if (error.isError())
{
return error;
}
ID3D11DeviceContext *immediateContext = mRenderer->getDeviceContext(); ID3D11DeviceContext *immediateContext = mRenderer->getDeviceContext();
immediateContext->CopyResource(destResource, sourceResouce); immediateContext->CopyResource(destResource, sourceResouce);
...@@ -1940,7 +1889,7 @@ gl::Error TextureStorage11_Cube::copyToStorage(TextureStorage *destStorage) ...@@ -1940,7 +1889,7 @@ gl::Error TextureStorage11_Cube::copyToStorage(TextureStorage *destStorage)
dest11->markDirty(); dest11->markDirty();
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11_Cube::useLevelZeroWorkaroundTexture(bool useLevelZeroTexture) gl::Error TextureStorage11_Cube::useLevelZeroWorkaroundTexture(bool useLevelZeroTexture)
...@@ -1949,11 +1898,7 @@ gl::Error TextureStorage11_Cube::useLevelZeroWorkaroundTexture(bool useLevelZero ...@@ -1949,11 +1898,7 @@ gl::Error TextureStorage11_Cube::useLevelZeroWorkaroundTexture(bool useLevelZero
{ {
if (!mUseLevelZeroTexture && mTexture) if (!mUseLevelZeroTexture && mTexture)
{ {
gl::Error error = ensureTextureExists(1); ANGLE_TRY(ensureTextureExists(1));
if (error.isError())
{
return error;
}
// Pull data back from the mipped texture if necessary. // Pull data back from the mipped texture if necessary.
ASSERT(mLevelZeroTexture); ASSERT(mLevelZeroTexture);
...@@ -1972,11 +1917,7 @@ gl::Error TextureStorage11_Cube::useLevelZeroWorkaroundTexture(bool useLevelZero ...@@ -1972,11 +1917,7 @@ gl::Error TextureStorage11_Cube::useLevelZeroWorkaroundTexture(bool useLevelZero
{ {
if (mUseLevelZeroTexture && mLevelZeroTexture) if (mUseLevelZeroTexture && mLevelZeroTexture)
{ {
gl::Error error = ensureTextureExists(mMipLevels); ANGLE_TRY(ensureTextureExists(mMipLevels));
if (error.isError())
{
return error;
}
// Pull data back from the level zero texture if necessary. // Pull data back from the level zero texture if necessary.
ASSERT(mTexture); ASSERT(mTexture);
...@@ -1992,7 +1933,7 @@ gl::Error TextureStorage11_Cube::useLevelZeroWorkaroundTexture(bool useLevelZero ...@@ -1992,7 +1933,7 @@ gl::Error TextureStorage11_Cube::useLevelZeroWorkaroundTexture(bool useLevelZero
mUseLevelZeroTexture = false; mUseLevelZeroTexture = false;
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
void TextureStorage11_Cube::associateImage(Image11 *image, const gl::ImageIndex &index) void TextureStorage11_Cube::associateImage(Image11 *image, const gl::ImageIndex &index)
...@@ -2085,43 +2026,29 @@ gl::Error TextureStorage11_Cube::releaseAssociatedImage(const gl::ImageIndex &in ...@@ -2085,43 +2026,29 @@ gl::Error TextureStorage11_Cube::releaseAssociatedImage(const gl::ImageIndex &in
{ {
// Force the image to recover from storage before its data is overwritten. // Force the image to recover from storage before its data is overwritten.
// This will reset mAssociatedImages[level] to nullptr too. // This will reset mAssociatedImages[level] to nullptr too.
gl::Error error = ANGLE_TRY(
mAssociatedImages[layerTarget][level]->recoverFromAssociatedStorage(); mAssociatedImages[layerTarget][level]->recoverFromAssociatedStorage());
if (error.isError())
{
return error;
}
} }
} }
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11_Cube::getResource(ID3D11Resource **outResource) gl::Error TextureStorage11_Cube::getResource(ID3D11Resource **outResource)
{ {
if (mUseLevelZeroTexture && mMipLevels > 1) if (mUseLevelZeroTexture && mMipLevels > 1)
{ {
gl::Error error = ensureTextureExists(1); ANGLE_TRY(ensureTextureExists(1));
if (error.isError())
{
return error;
}
*outResource = mLevelZeroTexture; *outResource = mLevelZeroTexture;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
else else
{ {
gl::Error error = ensureTextureExists(mMipLevels); ANGLE_TRY(ensureTextureExists(mMipLevels));
if (error.isError())
{
return error;
}
*outResource = mTexture; *outResource = mTexture;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
} }
...@@ -2130,14 +2057,9 @@ gl::Error TextureStorage11_Cube::getMippedResource(ID3D11Resource **outResource) ...@@ -2130,14 +2057,9 @@ gl::Error TextureStorage11_Cube::getMippedResource(ID3D11Resource **outResource)
// This shouldn't be called unless the zero max LOD workaround is active. // This shouldn't be called unless the zero max LOD workaround is active.
ASSERT(mRenderer->getWorkarounds().zeroMaxLodWorkaround); ASSERT(mRenderer->getWorkarounds().zeroMaxLodWorkaround);
gl::Error error = ensureTextureExists(mMipLevels); ANGLE_TRY(ensureTextureExists(mMipLevels));
if (error.isError())
{
return error;
}
*outResource = mTexture; *outResource = mTexture;
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11_Cube::ensureTextureExists(int mipLevels) gl::Error TextureStorage11_Cube::ensureTextureExists(int mipLevels)
...@@ -2188,7 +2110,7 @@ gl::Error TextureStorage11_Cube::ensureTextureExists(int mipLevels) ...@@ -2188,7 +2110,7 @@ gl::Error TextureStorage11_Cube::ensureTextureExists(int mipLevels)
d3d11::SetDebugName(*outputTexture, "TexStorageCube.Texture"); d3d11::SetDebugName(*outputTexture, "TexStorageCube.Texture");
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11_Cube::createRenderTargetSRV(ID3D11Resource *texture, gl::Error TextureStorage11_Cube::createRenderTargetSRV(ID3D11Resource *texture,
...@@ -2242,11 +2164,7 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index, ...@@ -2242,11 +2164,7 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index,
HRESULT result; HRESULT result;
ID3D11Resource *texture = nullptr; ID3D11Resource *texture = nullptr;
gl::Error error = getResource(&texture); ANGLE_TRY(getResource(&texture));
if (error.isError())
{
return error;
}
if (mUseLevelZeroTexture) if (mUseLevelZeroTexture)
{ {
...@@ -2285,15 +2203,12 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index, ...@@ -2285,15 +2203,12 @@ gl::Error TextureStorage11_Cube::getRenderTarget(const gl::ImageIndex &index,
} }
ID3D11ShaderResourceView *srv = nullptr; ID3D11ShaderResourceView *srv = nullptr;
error = createRenderTargetSRV(texture, index, mFormatInfo.srvFormat, &srv); ANGLE_TRY(createRenderTargetSRV(texture, index, mFormatInfo.srvFormat, &srv));
if (error.isError())
{
return error;
}
ID3D11ShaderResourceView *blitSRV = nullptr; ID3D11ShaderResourceView *blitSRV = nullptr;
if (mFormatInfo.blitSRVFormat != mFormatInfo.srvFormat) if (mFormatInfo.blitSRVFormat != mFormatInfo.srvFormat)
{ {
error = createRenderTargetSRV(texture, index, mFormatInfo.blitSRVFormat, &blitSRV); gl::Error error =
createRenderTargetSRV(texture, index, mFormatInfo.blitSRVFormat, &blitSRV);
if (error.isError()) if (error.isError())
{ {
SafeRelease(srv); SafeRelease(srv);
...@@ -2501,11 +2416,7 @@ gl::Error TextureStorage11_Cube::getSwizzleRenderTarget(int mipLevel, ...@@ -2501,11 +2416,7 @@ gl::Error TextureStorage11_Cube::getSwizzleRenderTarget(int mipLevel,
if (!mSwizzleRenderTargets[mipLevel]) if (!mSwizzleRenderTargets[mipLevel])
{ {
ID3D11Resource *swizzleTexture = nullptr; ID3D11Resource *swizzleTexture = nullptr;
gl::Error error = getSwizzleTexture(&swizzleTexture); ANGLE_TRY(getSwizzleTexture(&swizzleTexture));
if (error.isError())
{
return error;
}
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
...@@ -2529,7 +2440,7 @@ gl::Error TextureStorage11_Cube::getSwizzleRenderTarget(int mipLevel, ...@@ -2529,7 +2440,7 @@ gl::Error TextureStorage11_Cube::getSwizzleRenderTarget(int mipLevel,
} }
*outRTV = mSwizzleRenderTargets[mipLevel]; *outRTV = mSwizzleRenderTargets[mipLevel];
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11::initDropStencilTexture(const gl::ImageIndexIterator &it) gl::Error TextureStorage11::initDropStencilTexture(const gl::ImageIndexIterator &it)
...@@ -2732,16 +2643,12 @@ gl::Error TextureStorage11_3D::releaseAssociatedImage(const gl::ImageIndex &inde ...@@ -2732,16 +2643,12 @@ gl::Error TextureStorage11_3D::releaseAssociatedImage(const gl::ImageIndex &inde
{ {
// Force the image to recover from storage before its data is overwritten. // Force the image to recover from storage before its data is overwritten.
// This will reset mAssociatedImages[level] to nullptr too. // This will reset mAssociatedImages[level] to nullptr too.
gl::Error error = mAssociatedImages[level]->recoverFromAssociatedStorage(); ANGLE_TRY(mAssociatedImages[level]->recoverFromAssociatedStorage());
if (error.isError())
{
return error;
}
} }
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11_3D::getResource(ID3D11Resource **outResource) gl::Error TextureStorage11_3D::getResource(ID3D11Resource **outResource)
...@@ -2885,11 +2792,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend ...@@ -2885,11 +2792,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend
HRESULT result; HRESULT result;
ID3D11Resource *texture = nullptr; ID3D11Resource *texture = nullptr;
gl::Error error = getResource(&texture); ANGLE_TRY(getResource(&texture));
if (error.isError())
{
return error;
}
// TODO, what kind of SRV is expected here? // TODO, what kind of SRV is expected here?
ID3D11ShaderResourceView *srv = nullptr; ID3D11ShaderResourceView *srv = nullptr;
...@@ -2929,7 +2832,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend ...@@ -2929,7 +2832,7 @@ gl::Error TextureStorage11_3D::getRenderTarget(const gl::ImageIndex &index, Rend
ASSERT(outRT); ASSERT(outRT);
*outRT = mLevelLayerRenderTargets[key]; *outRT = mLevelLayerRenderTargets[key];
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
} }
...@@ -3144,16 +3047,12 @@ gl::Error TextureStorage11_2DArray::releaseAssociatedImage(const gl::ImageIndex ...@@ -3144,16 +3047,12 @@ gl::Error TextureStorage11_2DArray::releaseAssociatedImage(const gl::ImageIndex
{ {
// Force the image to recover from storage before its data is overwritten. // Force the image to recover from storage before its data is overwritten.
// This will reset mAssociatedImages[level] to nullptr too. // This will reset mAssociatedImages[level] to nullptr too.
gl::Error error = mAssociatedImages[key]->recoverFromAssociatedStorage(); ANGLE_TRY(mAssociatedImages[key]->recoverFromAssociatedStorage());
if (error.isError())
{
return error;
}
} }
} }
} }
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11_2DArray::getResource(ID3D11Resource **outResource) gl::Error TextureStorage11_2DArray::getResource(ID3D11Resource **outResource)
...@@ -3418,11 +3317,7 @@ gl::Error TextureStorage11_2DArray::getSwizzleRenderTarget(int mipLevel, ...@@ -3418,11 +3317,7 @@ gl::Error TextureStorage11_2DArray::getSwizzleRenderTarget(int mipLevel,
if (!mSwizzleRenderTargets[mipLevel]) if (!mSwizzleRenderTargets[mipLevel])
{ {
ID3D11Resource *swizzleTexture = nullptr; ID3D11Resource *swizzleTexture = nullptr;
gl::Error error = getSwizzleTexture(&swizzleTexture); ANGLE_TRY(getSwizzleTexture(&swizzleTexture));
if (error.isError())
{
return error;
}
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
...@@ -3446,7 +3341,7 @@ gl::Error TextureStorage11_2DArray::getSwizzleRenderTarget(int mipLevel, ...@@ -3446,7 +3341,7 @@ gl::Error TextureStorage11_2DArray::getSwizzleRenderTarget(int mipLevel,
} }
*outRTV = mSwizzleRenderTargets[mipLevel]; *outRTV = mSwizzleRenderTargets[mipLevel];
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
gl::Error TextureStorage11_2DArray::createDropStencilTexture() gl::Error TextureStorage11_2DArray::createDropStencilTexture()
......
...@@ -182,12 +182,8 @@ gl::Error VertexArray11::updateDirtyAndDynamicAttribs(VertexDataManager *vertexD ...@@ -182,12 +182,8 @@ gl::Error VertexArray11::updateDirtyAndDynamicAttribs(VertexDataManager *vertexD
break; break;
case VertexStorageType::STATIC: case VertexStorageType::STATIC:
{ {
auto error = ANGLE_TRY(
VertexDataManager::StoreStaticAttrib(translatedAttrib, count, instances); VertexDataManager::StoreStaticAttrib(translatedAttrib, count, instances));
if (error.isError())
{
return error;
}
break; break;
} }
case VertexStorageType::CURRENT_VALUE: case VertexStorageType::CURRENT_VALUE:
......
...@@ -120,11 +120,7 @@ gl::Error VertexBuffer11::storeVertexAttributes(const gl::VertexAttribute &attri ...@@ -120,11 +120,7 @@ gl::Error VertexBuffer11::storeVertexAttributes(const gl::VertexAttribute &attri
int inputStride = static_cast<int>(ComputeVertexAttributeStride(attrib)); int inputStride = static_cast<int>(ComputeVertexAttributeStride(attrib));
// This will map the resource if it isn't already mapped. // This will map the resource if it isn't already mapped.
gl::Error error = mapResource(); ANGLE_TRY(mapResource());
if (error.isError())
{
return error;
}
uint8_t *output = mMappedResourceData + offset; uint8_t *output = mMappedResourceData + offset;
...@@ -141,7 +137,7 @@ gl::Error VertexBuffer11::storeVertexAttributes(const gl::VertexAttribute &attri ...@@ -141,7 +137,7 @@ gl::Error VertexBuffer11::storeVertexAttributes(const gl::VertexAttribute &attri
ASSERT(vertexFormatInfo.copyFunction != NULL); ASSERT(vertexFormatInfo.copyFunction != NULL);
vertexFormatInfo.copyFunction(input, inputStride, count, output); vertexFormatInfo.copyFunction(input, inputStride, count, output);
return gl::Error(GL_NO_ERROR); return gl::NoError();
} }
unsigned int VertexBuffer11::getBufferSize() const unsigned int VertexBuffer11::getBufferSize() const
......
...@@ -145,13 +145,7 @@ gl::Error Blit9::setShader(ShaderId source, const char *profile, ...@@ -145,13 +145,7 @@ gl::Error Blit9::setShader(ShaderId source, const char *profile,
{ {
const BYTE* shaderCode = g_shaderCode[source]; const BYTE* shaderCode = g_shaderCode[source];
size_t shaderSize = g_shaderSize[source]; size_t shaderSize = g_shaderSize[source];
ANGLE_TRY((mRenderer->*createShader)(reinterpret_cast<const DWORD*>(shaderCode), shaderSize, &shader));
gl::Error error = (mRenderer->*createShader)(reinterpret_cast<const DWORD*>(shaderCode), shaderSize, &shader);
if (error.isError())
{
return error;
}
mCompiledShaders[source] = shader; mCompiledShaders[source] = shader;
} }
...@@ -190,18 +184,10 @@ RECT Blit9::getSurfaceRect(IDirect3DSurface9 *surface) const ...@@ -190,18 +184,10 @@ RECT Blit9::getSurfaceRect(IDirect3DSurface9 *surface) const
gl::Error Blit9::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest) gl::Error Blit9::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest)
{ {
gl::Error error = initialize(); ANGLE_TRY(initialize());
if (error.isError())
{
return error;
}
IDirect3DTexture9 *texture = NULL; IDirect3DTexture9 *texture = NULL;
error = copySurfaceToTexture(source, getSurfaceRect(source), &texture); ANGLE_TRY(copySurfaceToTexture(source, getSurfaceRect(source), &texture));
if (error.isError())
{
return error;
}
IDirect3DDevice9 *device = mRenderer->getDevice(); IDirect3DDevice9 *device = mRenderer->getDevice();
...@@ -230,21 +216,13 @@ gl::Error Blit9::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest) ...@@ -230,21 +216,13 @@ gl::Error Blit9::boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest)
gl::Error Blit9::copy2D(const gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, TextureStorage *storage, GLint level) gl::Error Blit9::copy2D(const gl::Framebuffer *framebuffer, const RECT &sourceRect, GLenum destFormat, const gl::Offset &destOffset, TextureStorage *storage, GLint level)
{ {
gl::Error error = initialize(); ANGLE_TRY(initialize());
if (error.isError())
{
return error;
}
const gl::FramebufferAttachment *colorbuffer = framebuffer->getColorbuffer(0); const gl::FramebufferAttachment *colorbuffer = framebuffer->getColorbuffer(0);
ASSERT(colorbuffer); ASSERT(colorbuffer);
RenderTarget9 *renderTarget9 = nullptr; RenderTarget9 *renderTarget9 = nullptr;
error = colorbuffer->getRenderTarget(&renderTarget9); ANGLE_TRY(colorbuffer->getRenderTarget(&renderTarget9));
if (error.isError())
{
return error;
}
ASSERT(renderTarget9); ASSERT(renderTarget9);
IDirect3DSurface9 *source = renderTarget9->getSurface(); IDirect3DSurface9 *source = renderTarget9->getSurface();
...@@ -252,7 +230,7 @@ gl::Error Blit9::copy2D(const gl::Framebuffer *framebuffer, const RECT &sourceRe ...@@ -252,7 +230,7 @@ gl::Error Blit9::copy2D(const gl::Framebuffer *framebuffer, const RECT &sourceRe
IDirect3DSurface9 *destSurface = NULL; IDirect3DSurface9 *destSurface = NULL;
TextureStorage9 *storage9 = GetAs<TextureStorage9>(storage); TextureStorage9 *storage9 = GetAs<TextureStorage9>(storage);
error = storage9->getSurfaceLevel(GL_TEXTURE_2D, level, true, &destSurface); gl::Error error = storage9->getSurfaceLevel(GL_TEXTURE_2D, level, true, &destSurface);
if (error.isError()) if (error.isError())
{ {
SafeRelease(source); SafeRelease(source);
......
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