mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-19 18:36:53 +02:00
renderer: track attachment load clears by image aspect
This commit is contained in:
@@ -14672,7 +14672,7 @@ public:
|
||||
phased_rendering.num_color_attachments == 0 &&
|
||||
phased_rendering.depth_stencil_attachment.has_depth &&
|
||||
phased_rendering.depth_stencil_attachment.depth_clear &&
|
||||
phased_depth.depth_load_clear_enable &&
|
||||
static_cast<bool>(phased_depth.load_clear_aspects & vk::ImageAspectFlagBits::eDepth) &&
|
||||
texture_cache.IsMeta(phased_depth.desc.info.metadata.range.address) &&
|
||||
!texture_cache.IsMetaCleared(
|
||||
phased_depth.desc.info.metadata.range.address,
|
||||
@@ -14853,7 +14853,7 @@ public:
|
||||
bounds_depth.image_id == depth_only.image_id &&
|
||||
bounds_depth.depth_bounds_test_enable &&
|
||||
!bounds_depth.depth_write_enable &&
|
||||
bounds_depth.depth_load_clear_enable == (pass == 0) &&
|
||||
static_cast<bool>(bounds_depth.load_clear_aspects & vk::ImageAspectFlagBits::eDepth) == (pass == 0) &&
|
||||
!texture_cache.IsMetaCleared(depth_only_htile_address, 0) &&
|
||||
bounds_feedback == (pass == 0
|
||||
? vk::ImageAspectFlagBits::eDepth
|
||||
@@ -14932,7 +14932,7 @@ public:
|
||||
executor, scheduler.Current(), &no_color, 0, acquired_high_slice);
|
||||
Require(name, "high HTile slice clear consumption",
|
||||
acquired_high_slice.image_id == high_slice.image_id &&
|
||||
acquired_high_slice.depth_load_clear_enable == (pass == 0) &&
|
||||
static_cast<bool>(acquired_high_slice.load_clear_aspects & vk::ImageAspectFlagBits::eDepth) == (pass == 0) &&
|
||||
rendering.depth_stencil_attachment.depth_clear == (pass == 0) &&
|
||||
!texture_cache.IsMetaCleared(high_slice_target.htile_data_base_addr, 86) &&
|
||||
texture_cache.IsMetaCleared(high_slice_target.htile_data_base_addr, 85),
|
||||
@@ -45703,12 +45703,12 @@ void CheckDepthAttachmentWrites() {
|
||||
|
||||
target.depth_test_enable = false;
|
||||
target.depth_write_enable = false;
|
||||
target.depth_load_clear_enable = true;
|
||||
target.load_clear_aspects = vk::ImageAspectFlagBits::eDepth;
|
||||
Require("DepthAttachmentWrites", "depth clear",
|
||||
target.AttachmentWriteAspects() == vk::ImageAspectFlagBits::eDepth,
|
||||
"depth attachment clear did not claim depth");
|
||||
|
||||
target.depth_load_clear_enable = false;
|
||||
target.load_clear_aspects = {};
|
||||
target.stencil_test_enable = true;
|
||||
target.stencil_front = {vk::StencilOp::eKeep, vk::StencilOp::eKeep,
|
||||
vk::StencilOp::eKeep, vk::CompareOp::eAlways, 0xff, 0xff, 0};
|
||||
@@ -45734,7 +45734,7 @@ void CheckDepthAttachmentWrites() {
|
||||
"masked front write or KEEP-only back face claimed stencil");
|
||||
|
||||
target.stencil_test_enable = false;
|
||||
target.stencil_clear_enable = true;
|
||||
target.load_clear_aspects = vk::ImageAspectFlagBits::eStencil;
|
||||
Require("DepthAttachmentWrites", "stencil clear",
|
||||
target.AttachmentWriteAspects() == vk::ImageAspectFlagBits::eStencil,
|
||||
"stencil attachment clear did not claim stencil");
|
||||
@@ -45808,12 +45808,11 @@ void CheckDepthFeedbackAspects() {
|
||||
feedback(sampled) == vk::ImageAspectFlagBits::eDepth,
|
||||
"overlapping mip and layer boundaries missed depth feedback");
|
||||
target.depth_write_enable = false;
|
||||
target.depth_load_clear_enable = true;
|
||||
target.load_clear_aspects = vk::ImageAspectFlagBits::eDepth;
|
||||
Require("DepthFeedbackAspects", "depth clear only",
|
||||
feedback(sampled) == vk::ImageAspectFlagBits::eDepth,
|
||||
"a sampled depth attachment clear missed feedback");
|
||||
target.depth_load_clear_enable = false;
|
||||
target.stencil_clear_enable = true;
|
||||
target.load_clear_aspects = vk::ImageAspectFlagBits::eStencil;
|
||||
sampled.aspect = vk::ImageAspectFlagBits::eStencil;
|
||||
Require("DepthFeedbackAspects", "stencil clear only",
|
||||
feedback(sampled) == vk::ImageAspectFlagBits::eStencil,
|
||||
@@ -45867,7 +45866,7 @@ void CheckDynamicRenderingState() {
|
||||
depth_attachment_layout(attachment) ==
|
||||
vk::ImageLayout::eDepthStencilReadOnlyOptimal,
|
||||
"fully read-only depth/stencil used a writable layout");
|
||||
attachment.depth_load_clear_enable = true;
|
||||
attachment.load_clear_aspects = vk::ImageAspectFlagBits::eDepth;
|
||||
Require("DynamicRenderingState", "deferred depth clear layout",
|
||||
depth_attachment_layout(attachment) ==
|
||||
vk::ImageLayout::eDepthAttachmentStencilReadOnlyOptimal,
|
||||
@@ -45878,9 +45877,9 @@ void CheckDynamicRenderingState() {
|
||||
depth_attachment_layout(attachment) ==
|
||||
vk::ImageLayout::eDepthAttachmentStencilReadOnlyOptimal,
|
||||
"depth-only writes did not retain read-only stencil");
|
||||
attachment.depth_load_clear_enable = false;
|
||||
attachment.load_clear_aspects = {};
|
||||
attachment.depth_write_enable = false;
|
||||
attachment.stencil_clear_enable = true;
|
||||
attachment.load_clear_aspects = vk::ImageAspectFlagBits::eStencil;
|
||||
Require("DynamicRenderingState", "depth-read stencil-write layout",
|
||||
depth_attachment_layout(attachment) ==
|
||||
vk::ImageLayout::eDepthReadOnlyStencilAttachmentOptimal,
|
||||
|
||||
Reference in New Issue
Block a user