mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-12-03 22:24:13 +01:00
[dxvk] Use new barrier helpers in clearImageViewCs
And ensure we're in GENERAL layout. We generally (pun intended) should be, but there may be a universe where that is not the case.
This commit is contained in:
parent
793f9b3d38
commit
2864a5e474
@ -3415,17 +3415,17 @@ namespace dxvk {
|
||||
VkClearValue value) {
|
||||
this->spillRenderPass(false);
|
||||
this->invalidateState();
|
||||
|
||||
if (m_execBarriers.isImageDirty(
|
||||
imageView->image(),
|
||||
imageView->imageSubresources(),
|
||||
DxvkAccess::Write))
|
||||
m_execBarriers.recordCommands(m_cmd);
|
||||
|
||||
|
||||
flushPendingAccesses(*imageView->image(), imageView->imageSubresources(), DxvkAccess::Write);
|
||||
|
||||
addImageLayoutTransition(*imageView->image(), imageView->imageSubresources(),
|
||||
VK_IMAGE_LAYOUT_GENERAL, VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, VK_ACCESS_2_SHADER_WRITE_BIT,
|
||||
imageView->image()->isFullSubresource(vk::pickSubresourceLayers(imageView->imageSubresources(), 0), extent));
|
||||
|
||||
// Query pipeline objects to use for this clear operation
|
||||
DxvkMetaClearPipeline pipeInfo = m_common->metaClear().getClearImagePipeline(
|
||||
imageView->type(), lookupFormatInfo(imageView->info().format)->flags);
|
||||
|
||||
|
||||
// Create a descriptor set pointing to the view
|
||||
VkDescriptorSet descriptorSet = m_descriptorPool->alloc(pipeInfo.dsetLayout);
|
||||
|
||||
@ -3467,17 +3467,12 @@ namespace dxvk {
|
||||
0, sizeof(pushArgs), &pushArgs);
|
||||
m_cmd->cmdDispatch(DxvkCmdBuffer::ExecBuffer,
|
||||
workgroups.width, workgroups.height, workgroups.depth);
|
||||
|
||||
m_execBarriers.accessImage(
|
||||
imageView->image(),
|
||||
imageView->imageSubresources(),
|
||||
imageView->image()->info().layout,
|
||||
VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
|
||||
VK_ACCESS_SHADER_WRITE_BIT,
|
||||
imageView->image()->info().layout,
|
||||
imageView->image()->info().stages,
|
||||
imageView->image()->info().access);
|
||||
|
||||
|
||||
accessImage(DxvkCmdBuffer::ExecBuffer,
|
||||
*imageView->image(), imageView->imageSubresources(),
|
||||
VK_IMAGE_LAYOUT_GENERAL, VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,
|
||||
VK_ACCESS_2_SHADER_WRITE_BIT);
|
||||
|
||||
m_cmd->trackResource<DxvkAccess::Write>(imageView->image());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user