Commit 9d812d35 by Jamie Madill Committed by Commit Bot

Vulkan: Remove public FramebufferVk::getFramebuffer.

Goal: enable rendering feedback loop detection for Manhattan. Making getFramebuffer private prevents direct access to the Framebuffer internals. Hiding access lets the FramebufferVk class switch up its implementation to support different VkFramebuffers for feedback loop cases. Also this is a general code cleanup. Bug: angleproject:4490 Change-Id: Ib4f5e34d476ccd8fc43a1adb031933ab347ca7b7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2109333Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com> Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent bff3b200
......@@ -1221,7 +1221,6 @@ angle::Result ContextVk::handleDirtyComputePipeline(const gl::Context *context,
ANGLE_INLINE angle::Result ContextVk::handleDirtyTexturesImpl(
const gl::Context *context,
vk::CommandBuffer *commandBuffer,
vk::Resource *recorder,
CommandBufferHelper *commandBufferHelper)
{
const gl::ActiveTextureMask &activeTextures = mProgram->getState().getActiveSamplersMask();
......@@ -1277,15 +1276,13 @@ ANGLE_INLINE angle::Result ContextVk::handleDirtyTexturesImpl(
angle::Result ContextVk::handleDirtyGraphicsTextures(const gl::Context *context,
vk::CommandBuffer *commandBuffer)
{
return handleDirtyTexturesImpl(context, commandBuffer, mDrawFramebuffer->getFramebuffer(),
&mRenderPassCommands);
return handleDirtyTexturesImpl(context, commandBuffer, &mRenderPassCommands);
}
angle::Result ContextVk::handleDirtyComputeTextures(const gl::Context *context,
vk::CommandBuffer *commandBuffer)
{
return handleDirtyTexturesImpl(context, commandBuffer, &mDispatcher,
&mOutsideRenderPassCommands);
return handleDirtyTexturesImpl(context, commandBuffer, &mOutsideRenderPassCommands);
}
angle::Result ContextVk::handleDirtyGraphicsVertexBuffers(const gl::Context *context,
......@@ -1334,19 +1331,18 @@ angle::Result ContextVk::handleDirtyGraphicsIndexBuffer(const gl::Context *conte
ANGLE_INLINE angle::Result ContextVk::handleDirtyShaderResourcesImpl(
const gl::Context *context,
vk::CommandBuffer *commandBuffer,
vk::Resource *recorder,
CommandBufferHelper *commandBufferHelper)
{
if (mProgram->hasImages())
{
ANGLE_TRY(updateActiveImages(context, recorder, commandBufferHelper));
ANGLE_TRY(updateActiveImages(context, commandBufferHelper));
}
if (mProgram->hasUniformBuffers() || mProgram->hasStorageBuffers() ||
mProgram->hasAtomicCounterBuffers() || mProgram->hasImages())
{
ANGLE_TRY(mProgram->updateShaderResourcesDescriptorSet(this, &mResourceUseList,
commandBufferHelper, recorder));
commandBufferHelper));
}
return angle::Result::Continue;
}
......@@ -1354,15 +1350,13 @@ ANGLE_INLINE angle::Result ContextVk::handleDirtyShaderResourcesImpl(
angle::Result ContextVk::handleDirtyGraphicsShaderResources(const gl::Context *context,
vk::CommandBuffer *commandBuffer)
{
return handleDirtyShaderResourcesImpl(context, commandBuffer,
mDrawFramebuffer->getFramebuffer(), &mRenderPassCommands);
return handleDirtyShaderResourcesImpl(context, commandBuffer, &mRenderPassCommands);
}
angle::Result ContextVk::handleDirtyComputeShaderResources(const gl::Context *context,
vk::CommandBuffer *commandBuffer)
{
return handleDirtyShaderResourcesImpl(context, commandBuffer, &mDispatcher,
&mOutsideRenderPassCommands);
return handleDirtyShaderResourcesImpl(context, commandBuffer, &mOutsideRenderPassCommands);
}
angle::Result ContextVk::handleDirtyGraphicsTransformFeedbackBuffersEmulation(
......@@ -1387,8 +1381,7 @@ angle::Result ContextVk::handleDirtyGraphicsTransformFeedbackBuffersEmulation(
&mResourceUseList, VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, &bufferHelper);
}
ANGLE_TRY(mProgram->updateTransformFeedbackDescriptorSet(
this, mDrawFramebuffer->getFramebuffer()));
ANGLE_TRY(mProgram->updateTransformFeedbackDescriptorSet(this));
}
return angle::Result::Continue;
}
......@@ -3568,7 +3561,6 @@ angle::Result ContextVk::updateActiveTextures(const gl::Context *context)
}
angle::Result ContextVk::updateActiveImages(const gl::Context *context,
vk::Resource *recorder,
CommandBufferHelper *commandBufferHelper)
{
const gl::State &glState = mState;
......
......@@ -808,7 +808,6 @@ class ContextVk : public ContextImpl, public vk::Context
angle::Result updateActiveTextures(const gl::Context *context);
angle::Result updateActiveImages(const gl::Context *context,
vk::Resource *recorder,
CommandBufferHelper *commandBufferHelper);
angle::Result updateDefaultAttribute(size_t attribIndex);
......@@ -869,11 +868,9 @@ class ContextVk : public ContextImpl, public vk::Context
// Common parts of the common dirty bit handlers.
angle::Result handleDirtyTexturesImpl(const gl::Context *context,
vk::CommandBuffer *commandBuffer,
vk::Resource *recorder,
CommandBufferHelper *commandBufferHelper);
angle::Result handleDirtyShaderResourcesImpl(const gl::Context *context,
vk::CommandBuffer *commandBuffer,
vk::Resource *recorder,
CommandBufferHelper *commandBufferHelper);
void handleDirtyDriverUniformsBindingImpl(vk::CommandBuffer *commandBuffer,
VkPipelineBindPoint bindPoint,
......
......@@ -109,8 +109,6 @@ class FramebufferVk : public FramebufferImpl
RenderTargetVk *getColorDrawRenderTarget(size_t colorIndex) const;
RenderTargetVk *getColorReadRenderTarget() const;
vk::FramebufferHelper *getFramebuffer() { return mFramebuffer; }
angle::Result startNewRenderPass(ContextVk *context,
const gl::Rectangle &renderArea,
vk::CommandBuffer **commandBufferOut);
......
......@@ -1326,7 +1326,6 @@ void ProgramVk::updateDefaultUniformsDescriptorSet(ContextVk *contextVk)
void ProgramVk::updateBuffersDescriptorSet(ContextVk *contextVk,
vk::ResourceUseList *resourceUseList,
CommandBufferHelper *commandBufferHelper,
vk::Resource *recorder,
const std::vector<gl::InterfaceBlock> &blocks,
VkDescriptorType descriptorType)
{
......@@ -1411,8 +1410,7 @@ void ProgramVk::updateBuffersDescriptorSet(ContextVk *contextVk,
void ProgramVk::updateAtomicCounterBuffersDescriptorSet(ContextVk *contextVk,
vk::ResourceUseList *resourceUseList,
CommandBufferHelper *commandBufferHelper,
vk::Resource *recorder)
CommandBufferHelper *commandBufferHelper)
{
const gl::State &glState = contextVk->getState();
const std::vector<gl::AtomicCounterBuffer> &atomicCounterBuffers =
......@@ -1494,7 +1492,7 @@ void ProgramVk::updateAtomicCounterBuffersDescriptorSet(ContextVk *contextVk,
writeDescriptorInfo.data(), 0, nullptr);
}
angle::Result ProgramVk::updateImagesDescriptorSet(ContextVk *contextVk, vk::Resource *recorder)
angle::Result ProgramVk::updateImagesDescriptorSet(ContextVk *contextVk)
{
const gl::State &glState = contextVk->getState();
const std::vector<gl::ImageBinding> &imageBindings = mState.getImageBindings();
......@@ -1571,22 +1569,19 @@ angle::Result ProgramVk::updateImagesDescriptorSet(ContextVk *contextVk, vk::Res
angle::Result ProgramVk::updateShaderResourcesDescriptorSet(
ContextVk *contextVk,
vk::ResourceUseList *resourceUseList,
CommandBufferHelper *commandBufferHelper,
vk::Resource *recorder)
CommandBufferHelper *commandBufferHelper)
{
ANGLE_TRY(allocateDescriptorSet(contextVk, kShaderResourceDescriptorSetIndex));
updateBuffersDescriptorSet(contextVk, resourceUseList, commandBufferHelper, recorder,
updateBuffersDescriptorSet(contextVk, resourceUseList, commandBufferHelper,
mState.getUniformBlocks(), VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
updateBuffersDescriptorSet(contextVk, resourceUseList, commandBufferHelper, recorder,
updateBuffersDescriptorSet(contextVk, resourceUseList, commandBufferHelper,
mState.getShaderStorageBlocks(), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER);
updateAtomicCounterBuffersDescriptorSet(contextVk, resourceUseList, commandBufferHelper,
recorder);
return updateImagesDescriptorSet(contextVk, recorder);
updateAtomicCounterBuffersDescriptorSet(contextVk, resourceUseList, commandBufferHelper);
return updateImagesDescriptorSet(contextVk);
}
angle::Result ProgramVk::updateTransformFeedbackDescriptorSet(ContextVk *contextVk,
vk::FramebufferHelper *framebuffer)
angle::Result ProgramVk::updateTransformFeedbackDescriptorSet(ContextVk *contextVk)
{
ASSERT(hasTransformFeedbackOutput());
......
......@@ -110,10 +110,8 @@ class ProgramVk : public ProgramImpl
angle::Result updateTexturesDescriptorSet(ContextVk *contextVk);
angle::Result updateShaderResourcesDescriptorSet(ContextVk *contextVk,
vk::ResourceUseList *resourceUseList,
CommandBufferHelper *commandBufferHelper,
vk::Resource *recorder);
angle::Result updateTransformFeedbackDescriptorSet(ContextVk *contextVk,
vk::FramebufferHelper *framebuffer);
CommandBufferHelper *commandBufferHelper);
angle::Result updateTransformFeedbackDescriptorSet(ContextVk *contextVk);
angle::Result updateDescriptorSets(ContextVk *contextVk, vk::CommandBuffer *commandBuffer);
......@@ -192,14 +190,12 @@ class ProgramVk : public ProgramImpl
void updateBuffersDescriptorSet(ContextVk *contextVk,
vk::ResourceUseList *resourceUseList,
CommandBufferHelper *commandBufferHelper,
vk::Resource *recorder,
const std::vector<gl::InterfaceBlock> &blocks,
VkDescriptorType descriptorType);
void updateAtomicCounterBuffersDescriptorSet(ContextVk *contextVk,
vk::ResourceUseList *resourceUseList,
CommandBufferHelper *commandBufferHelper,
vk::Resource *recorder);
angle::Result updateImagesDescriptorSet(ContextVk *contextVk, vk::Resource *recorder);
CommandBufferHelper *commandBufferHelper);
angle::Result updateImagesDescriptorSet(ContextVk *contextVk);
template <class T>
void getUniformImpl(GLint location, T *v, GLenum entryPointType) const;
......
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