dzn: When rendering to 3D, don't treat layers as subresources for barriers

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20823>
This commit is contained in:
Jesse Natalie
2023-01-11 15:33:25 -08:00
committed by Marge Bot
parent 232c598e79
commit ceb287a509

View File

@@ -4276,6 +4276,10 @@ dzn_cmd_buffer_resolve_rendering_attachment(struct dzn_cmd_buffer *cmdbuf,
.baseArrayLayer = src->vk.base_array_layer,
.layerCount = MIN2(src->vk.layer_count, dst->vk.layer_count),
};
if (src_img->desc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D) {
src_range.baseArrayLayer = 0;
src_range.layerCount = 1;
}
VkImageSubresourceRange dst_range = {
.aspectMask = (VkImageAspectFlags)aspect,
@@ -4284,6 +4288,10 @@ dzn_cmd_buffer_resolve_rendering_attachment(struct dzn_cmd_buffer *cmdbuf,
.baseArrayLayer = dst->vk.base_array_layer,
.layerCount = MIN2(src->vk.layer_count, dst->vk.layer_count),
};
if (dst_img->desc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D) {
dst_range.baseArrayLayer = 0;
dst_range.layerCount = 1;
}
D3D12_RESOURCE_STATES src_state = dzn_image_layout_to_state(src_img, src_layout, aspect);
D3D12_RESOURCE_STATES dst_state = dzn_image_layout_to_state(dst_img, dst_layout, aspect);
@@ -4368,13 +4376,17 @@ dzn_rendering_attachment_initial_transition(struct dzn_cmd_buffer *cmdbuf,
return;
struct dzn_image *image = container_of(iview->vk.image, struct dzn_image, vk);
const VkImageSubresourceRange range = {
VkImageSubresourceRange range = {
.aspectMask = aspect,
.baseMipLevel = iview->vk.base_mip_level,
.levelCount = iview->vk.level_count,
.baseArrayLayer = iview->vk.base_array_layer,
.layerCount = iview->vk.layer_count,
};
if (image->desc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D) {
range.baseArrayLayer = 0;
range.layerCount = 1;
}
if (cmdbuf->enhanced_barriers) {
D3D12_BARRIER_SYNC sync_before = D3D12_BARRIER_SYNC_ALL;