Vulkan: Crunch RenderPassDesc.
This reduces the size of the RenderPass desc from 64 to 12 bytes.
Bug: angleproject:2522
Change-Id: Iff2df87ba65be0bd976bba81c76c285cb0fa1ceb
Reviewed-on: https://chromium-review.googlesource.com/c/1308459
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@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 39abce1..354ad21 100644
--- a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
+++ b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
@@ -789,6 +789,7 @@
}
vk::RenderPassDesc desc;
+ desc.setSamples(getSamples());
// TODO(jmadill): Support gaps in RenderTargets. http://anglebug.com/2394
const auto &colorRenderTargets = mRenderTargetCache.getColors();
@@ -796,13 +797,13 @@
{
RenderTargetVk *colorRenderTarget = colorRenderTargets[colorIndex];
ASSERT(colorRenderTarget);
- desc.packColorAttachment(colorRenderTarget->getImage());
+ desc.packAttachment(colorRenderTarget->getImage().getFormat());
}
RenderTargetVk *depthStencilRenderTarget = mRenderTargetCache.getDepthStencil();
if (depthStencilRenderTarget)
{
- desc.packDepthStencilAttachment(depthStencilRenderTarget->getImage());
+ desc.packAttachment(depthStencilRenderTarget->getImage().getFormat());
}
mRenderPassDesc = desc;
@@ -1223,4 +1224,24 @@
{
return getColorReadRenderTarget()->getImageExtents();
}
+
+RenderTargetVk *FramebufferVk::getFirstRenderTarget() const
+{
+ for (auto *renderTarget : mRenderTargetCache.getColors())
+ {
+ if (renderTarget)
+ {
+ return renderTarget;
+ }
+ }
+
+ return mRenderTargetCache.getDepthStencil();
+}
+
+GLint FramebufferVk::getSamples() const
+{
+ RenderTargetVk *firstRT = getFirstRenderTarget();
+ return firstRT ? firstRT->getImage().getSamples() : 0;
+}
+
} // namespace rx