Use angle::Result in front-end (Part 3)
Handles the gl::Framebuffer class and its implementation.
Bug: angleproject:2491
Change-Id: I3b9c0609e9277264ccdb370596500562df3b7d15
Reviewed-on: https://chromium-review.googlesource.com/c/1280743
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
index 4417ca1..8e91a53 100644
--- a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
+++ b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
@@ -142,32 +142,32 @@
mBlitPixelBuffer.destroy(contextVk->getDevice());
}
-gl::Error FramebufferVk::discard(const gl::Context *context,
- size_t count,
- const GLenum *attachments)
+angle::Result FramebufferVk::discard(const gl::Context *context,
+ size_t count,
+ const GLenum *attachments)
{
- UNIMPLEMENTED();
- return gl::InternalError();
+ ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
+ return angle::Result::Stop();
}
-gl::Error FramebufferVk::invalidate(const gl::Context *context,
- size_t count,
- const GLenum *attachments)
+angle::Result FramebufferVk::invalidate(const gl::Context *context,
+ size_t count,
+ const GLenum *attachments)
{
- UNIMPLEMENTED();
- return gl::InternalError();
+ ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
+ return angle::Result::Stop();
}
-gl::Error FramebufferVk::invalidateSub(const gl::Context *context,
- size_t count,
- const GLenum *attachments,
- const gl::Rectangle &area)
+angle::Result FramebufferVk::invalidateSub(const gl::Context *context,
+ size_t count,
+ const GLenum *attachments,
+ const gl::Rectangle &area)
{
- UNIMPLEMENTED();
- return gl::InternalError();
+ ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
+ return angle::Result::Stop();
}
-gl::Error FramebufferVk::clear(const gl::Context *context, GLbitfield mask)
+angle::Result FramebufferVk::clear(const gl::Context *context, GLbitfield mask)
{
ContextVk *contextVk = vk::GetImpl(context);
@@ -207,7 +207,7 @@
// TODO(jmadill): Masked stencil clear. http://anglebug.com/2540
ANGLE_TRY(clearWithClearAttachments(contextVk, false, clearDepth, clearStencil));
}
- return gl::NoError();
+ return angle::Result::Continue();
}
// If we clear the depth OR the stencil but not both, and we have a packed depth stencil
@@ -226,7 +226,7 @@
// Masked stencil clears are currently not implemented.
// TODO(jmadill): Masked stencil clear. http://anglebug.com/2540
ANGLE_TRY(clearWithClearAttachments(contextVk, clearColor, clearDepth, clearStencil));
- return gl::NoError();
+ return angle::Result::Continue();
}
// Standard Depth/stencil clear without scissor.
@@ -247,7 +247,7 @@
if (!clearColor)
{
- return gl::NoError();
+ return angle::Result::Continue();
}
const auto *attachment = mState.getFirstNonNullAttachment();
@@ -283,44 +283,44 @@
colorRenderTarget->getLayerIndex(), 1, commandBuffer);
}
- return gl::NoError();
+ return angle::Result::Continue();
}
-gl::Error FramebufferVk::clearBufferfv(const gl::Context *context,
- GLenum buffer,
- GLint drawbuffer,
- const GLfloat *values)
+angle::Result FramebufferVk::clearBufferfv(const gl::Context *context,
+ GLenum buffer,
+ GLint drawbuffer,
+ const GLfloat *values)
{
- UNIMPLEMENTED();
- return gl::InternalError();
+ ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
+ return angle::Result::Stop();
}
-gl::Error FramebufferVk::clearBufferuiv(const gl::Context *context,
- GLenum buffer,
- GLint drawbuffer,
- const GLuint *values)
+angle::Result FramebufferVk::clearBufferuiv(const gl::Context *context,
+ GLenum buffer,
+ GLint drawbuffer,
+ const GLuint *values)
{
- UNIMPLEMENTED();
- return gl::InternalError();
+ ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
+ return angle::Result::Stop();
}
-gl::Error FramebufferVk::clearBufferiv(const gl::Context *context,
- GLenum buffer,
- GLint drawbuffer,
- const GLint *values)
+angle::Result FramebufferVk::clearBufferiv(const gl::Context *context,
+ GLenum buffer,
+ GLint drawbuffer,
+ const GLint *values)
{
- UNIMPLEMENTED();
- return gl::InternalError();
+ ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
+ return angle::Result::Stop();
}
-gl::Error FramebufferVk::clearBufferfi(const gl::Context *context,
- GLenum buffer,
- GLint drawbuffer,
- GLfloat depth,
- GLint stencil)
+angle::Result FramebufferVk::clearBufferfi(const gl::Context *context,
+ GLenum buffer,
+ GLint drawbuffer,
+ GLfloat depth,
+ GLint stencil)
{
- UNIMPLEMENTED();
- return gl::InternalError();
+ ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
+ return angle::Result::Stop();
}
GLenum FramebufferVk::getImplementationColorReadFormat(const gl::Context *context) const
@@ -333,11 +333,11 @@
return GetReadAttachmentInfo(context, mRenderTargetCache.getColorRead(mState)).type;
}
-gl::Error FramebufferVk::readPixels(const gl::Context *context,
- const gl::Rectangle &area,
- GLenum format,
- GLenum type,
- void *pixels)
+angle::Result FramebufferVk::readPixels(const gl::Context *context,
+ const gl::Rectangle &area,
+ GLenum format,
+ GLenum type,
+ void *pixels)
{
// Clip read area to framebuffer.
const gl::Extents &fbSize = getState().getReadAttachment()->getSize();
@@ -349,7 +349,7 @@
if (!ClipRectangle(area, fbRect, &clippedArea))
{
// nothing to read
- return gl::NoError();
+ return angle::Result::Continue();
}
gl::Rectangle flippedArea = clippedArea;
if (contextVk->isViewportFlipEnabledForReadFBO())
@@ -386,7 +386,7 @@
getColorReadRenderTarget(),
static_cast<uint8_t *>(pixels) + outputSkipBytes));
mReadPixelBuffer.releaseRetainedBuffers(renderer);
- return gl::NoError();
+ return angle::Result::Continue();
}
RenderTargetVk *FramebufferVk::getDepthStencilRenderTarget() const
@@ -497,11 +497,11 @@
return angle::Result::Continue();
}
-gl::Error FramebufferVk::blit(const gl::Context *context,
- const gl::Rectangle &sourceArea,
- const gl::Rectangle &destArea,
- GLbitfield mask,
- GLenum filter)
+angle::Result FramebufferVk::blit(const gl::Context *context,
+ const gl::Rectangle &sourceArea,
+ const gl::Rectangle &destArea,
+ GLbitfield mask,
+ GLenum filter)
{
ContextVk *contextVk = vk::GetImpl(context);
RendererVk *renderer = contextVk->getRenderer();
@@ -524,12 +524,12 @@
const gl::Rectangle scissorRect = glState.getScissor();
if (!ClipRectangle(sourceArea, scissorRect, &readRect))
{
- return gl::NoError();
+ return angle::Result::Continue();
}
if (!ClipRectangle(destArea, scissorRect, &drawRect))
{
- return gl::NoError();
+ return angle::Result::Continue();
}
}
@@ -542,7 +542,7 @@
gl::Rectangle readRenderTargetRect;
if (!ClipToRenderTarget(readRect, readRenderTarget, &readRenderTargetRect))
{
- return gl::NoError();
+ return angle::Result::Continue();
}
for (size_t colorAttachment : mState.getEnabledDrawBuffers())
@@ -555,7 +555,7 @@
gl::Rectangle drawRenderTargetRect;
if (!ClipToRenderTarget(drawRect, drawRenderTarget, &drawRenderTargetRect))
{
- return gl::NoError();
+ return angle::Result::Continue();
}
ANGLE_TRY(blitWithCommand(contextVk, readRenderTargetRect, drawRenderTargetRect,
@@ -572,7 +572,7 @@
gl::Rectangle readRenderTargetRect;
if (!ClipToRenderTarget(readRect, readRenderTarget, &readRenderTargetRect))
{
- return gl::NoError();
+ return angle::Result::Continue();
}
RenderTargetVk *drawRenderTarget = mRenderTargetCache.getDepthStencil();
@@ -581,7 +581,7 @@
gl::Rectangle drawRenderTargetRect;
if (!ClipToRenderTarget(drawRect, drawRenderTarget, &drawRenderTargetRect))
{
- return gl::NoError();
+ return angle::Result::Continue();
}
ASSERT(readRenderTargetRect == drawRenderTargetRect);
@@ -619,7 +619,7 @@
}
}
- return gl::NoError();
+ return angle::Result::Continue();
}
angle::Result FramebufferVk::blitWithCommand(ContextVk *contextVk,
@@ -1064,12 +1064,12 @@
return angle::Result::Continue();
}
-gl::Error FramebufferVk::getSamplePosition(const gl::Context *context,
- size_t index,
- GLfloat *xy) const
+angle::Result FramebufferVk::getSamplePosition(const gl::Context *context,
+ size_t index,
+ GLfloat *xy) const
{
- UNIMPLEMENTED();
- return gl::InternalError() << "getSamplePosition is unimplemented.";
+ ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
+ return angle::Result::Stop();
}
angle::Result FramebufferVk::getCommandBufferForDraw(ContextVk *contextVk,
diff --git a/src/libANGLE/renderer/vulkan/FramebufferVk.h b/src/libANGLE/renderer/vulkan/FramebufferVk.h
index 627fb21..ca0fbdc 100644
--- a/src/libANGLE/renderer/vulkan/FramebufferVk.h
+++ b/src/libANGLE/renderer/vulkan/FramebufferVk.h
@@ -38,56 +38,58 @@
~FramebufferVk() override;
void destroy(const gl::Context *context) override;
- gl::Error discard(const gl::Context *context, size_t count, const GLenum *attachments) override;
- gl::Error invalidate(const gl::Context *context,
- size_t count,
- const GLenum *attachments) override;
- gl::Error invalidateSub(const gl::Context *context,
- size_t count,
- const GLenum *attachments,
- const gl::Rectangle &area) override;
+ angle::Result discard(const gl::Context *context,
+ size_t count,
+ const GLenum *attachments) override;
+ angle::Result invalidate(const gl::Context *context,
+ size_t count,
+ const GLenum *attachments) override;
+ angle::Result invalidateSub(const gl::Context *context,
+ size_t count,
+ const GLenum *attachments,
+ const gl::Rectangle &area) override;
- gl::Error clear(const gl::Context *context, GLbitfield mask) override;
- gl::Error clearBufferfv(const gl::Context *context,
- GLenum buffer,
- GLint drawbuffer,
- const GLfloat *values) override;
- gl::Error clearBufferuiv(const gl::Context *context,
- GLenum buffer,
- GLint drawbuffer,
- const GLuint *values) override;
- gl::Error clearBufferiv(const gl::Context *context,
- GLenum buffer,
- GLint drawbuffer,
- const GLint *values) override;
- gl::Error clearBufferfi(const gl::Context *context,
- GLenum buffer,
- GLint drawbuffer,
- GLfloat depth,
- GLint stencil) override;
+ angle::Result clear(const gl::Context *context, GLbitfield mask) override;
+ angle::Result clearBufferfv(const gl::Context *context,
+ GLenum buffer,
+ GLint drawbuffer,
+ const GLfloat *values) override;
+ angle::Result clearBufferuiv(const gl::Context *context,
+ GLenum buffer,
+ GLint drawbuffer,
+ const GLuint *values) override;
+ angle::Result clearBufferiv(const gl::Context *context,
+ GLenum buffer,
+ GLint drawbuffer,
+ const GLint *values) override;
+ angle::Result clearBufferfi(const gl::Context *context,
+ GLenum buffer,
+ GLint drawbuffer,
+ GLfloat depth,
+ GLint stencil) override;
GLenum getImplementationColorReadFormat(const gl::Context *context) const override;
GLenum getImplementationColorReadType(const gl::Context *context) const override;
- gl::Error readPixels(const gl::Context *context,
- const gl::Rectangle &area,
- GLenum format,
- GLenum type,
- void *pixels) override;
+ angle::Result readPixels(const gl::Context *context,
+ const gl::Rectangle &area,
+ GLenum format,
+ GLenum type,
+ void *pixels) override;
- gl::Error blit(const gl::Context *context,
- const gl::Rectangle &sourceArea,
- const gl::Rectangle &destArea,
- GLbitfield mask,
- GLenum filter) override;
+ angle::Result blit(const gl::Context *context,
+ const gl::Rectangle &sourceArea,
+ const gl::Rectangle &destArea,
+ GLbitfield mask,
+ GLenum filter) override;
bool checkStatus(const gl::Context *context) const override;
angle::Result syncState(const gl::Context *context,
const gl::Framebuffer::DirtyBits &dirtyBits) override;
- gl::Error getSamplePosition(const gl::Context *context,
- size_t index,
- GLfloat *xy) const override;
+ angle::Result getSamplePosition(const gl::Context *context,
+ size_t index,
+ GLfloat *xy) const override;
RenderTargetVk *getDepthStencilRenderTarget() const;
const vk::RenderPassDesc &getRenderPassDesc();