radv: remove the LLVM version string when ACO is used
[mesa.git] / src / amd / vulkan / radv_meta_resolve_cs.c
index b5d6ae12d0f098c79ec5fb6eb2647457224e627f..c40c61929d2915fbc80329a7881f888130c774ee 100644 (file)
@@ -135,6 +135,7 @@ build_resolve_compute_shader(struct radv_device *dev, bool is_integer, bool is_s
        store->src[1] = nir_src_for_ssa(coord);
        store->src[2] = nir_src_for_ssa(nir_ssa_undef(&b, 1, 32));
        store->src[3] = nir_src_for_ssa(outval);
+       store->src[4] = nir_src_for_ssa(nir_imm_int(&b, 0));
        nir_builder_instr_insert(&b, &store->instr);
        return b.shader;
 }
@@ -145,7 +146,7 @@ enum {
 };
 
 static const char *
-get_resolve_mode_str(VkResolveModeFlagBitsKHR resolve_mode)
+get_resolve_mode_str(VkResolveModeFlagBits resolve_mode)
 {
        switch (resolve_mode) {
        case VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR:
@@ -164,7 +165,7 @@ get_resolve_mode_str(VkResolveModeFlagBitsKHR resolve_mode)
 static nir_shader *
 build_depth_stencil_resolve_compute_shader(struct radv_device *dev, int samples,
                                           int index,
-                                          VkResolveModeFlagBitsKHR resolve_mode)
+                                          VkResolveModeFlagBits resolve_mode)
 {
        nir_builder b;
        char name[64];
@@ -295,6 +296,7 @@ build_depth_stencil_resolve_compute_shader(struct radv_device *dev, int samples,
        store->src[1] = nir_src_for_ssa(coord);
        store->src[2] = nir_src_for_ssa(nir_ssa_undef(&b, 1, 32));
        store->src[3] = nir_src_for_ssa(outval);
+       store->src[4] = nir_src_for_ssa(nir_imm_int(&b, 0));
        nir_builder_instr_insert(&b, &store->instr);
        return b.shader;
 }
@@ -411,7 +413,7 @@ static VkResult
 create_depth_stencil_resolve_pipeline(struct radv_device *device,
                                      int samples,
                                      int index,
-                                     VkResolveModeFlagBitsKHR resolve_mode,
+                                     VkResolveModeFlagBits resolve_mode,
                                      VkPipeline *pipeline)
 {
        VkResult result;
@@ -705,7 +707,7 @@ emit_depth_stencil_resolve(struct radv_cmd_buffer *cmd_buffer,
                           const VkOffset2D *dest_offset,
                           const VkExtent2D *resolve_extent,
                           VkImageAspectFlags aspects,
-                          VkResolveModeFlagBitsKHR resolve_mode)
+                          VkResolveModeFlagBits resolve_mode)
 {
        struct radv_device *device = cmd_buffer->device;
        const uint32_t samples = src_iview->image->info.samples;
@@ -863,7 +865,7 @@ void radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer,
                                                             .baseArrayLayer = src_base_layer + layer,
                                                             .layerCount = 1,
                                                     },
-                                            });
+                                            }, NULL);
 
                        struct radv_image_view dest_iview;
                        radv_image_view_init(&dest_iview, cmd_buffer->device,
@@ -879,7 +881,7 @@ void radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer,
                                                             .baseArrayLayer = dest_base_layer + layer,
                                                             .layerCount = 1,
                                                     },
-                                            });
+                                            }, NULL);
 
                        emit_resolve(cmd_buffer,
                                     &src_iview,
@@ -921,8 +923,8 @@ radv_cmd_buffer_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer)
                if (dst_att.attachment == VK_ATTACHMENT_UNUSED)
                        continue;
 
-               struct radv_image_view *src_iview = fb->attachments[src_att.attachment];
-               struct radv_image_view *dst_iview = fb->attachments[dst_att.attachment];
+               struct radv_image_view *src_iview = cmd_buffer->state.attachments[src_att.attachment].iview;
+               struct radv_image_view *dst_iview = cmd_buffer->state.attachments[dst_att.attachment].iview;
 
                VkImageResolve region = {
                        .extent = (VkExtent3D){ fb->width, fb->height, 0 },
@@ -959,7 +961,7 @@ radv_cmd_buffer_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer)
 void
 radv_depth_stencil_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer,
                                      VkImageAspectFlags aspects,
-                                     VkResolveModeFlagBitsKHR resolve_mode)
+                                     VkResolveModeFlagBits resolve_mode)
 {
        struct radv_framebuffer *fb = cmd_buffer->state.framebuffer;
        const struct radv_subpass *subpass = cmd_buffer->state.subpass;
@@ -989,9 +991,9 @@ radv_depth_stencil_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer,
        struct radv_subpass_attachment dest_att = *subpass->ds_resolve_attachment;
 
        struct radv_image_view *src_iview =
-               cmd_buffer->state.framebuffer->attachments[src_att.attachment];
+               cmd_buffer->state.attachments[src_att.attachment].iview;
        struct radv_image_view *dst_iview =
-               cmd_buffer->state.framebuffer->attachments[dest_att.attachment];
+               cmd_buffer->state.attachments[dest_att.attachment].iview;
 
        struct radv_image *src_image = src_iview->image;
        struct radv_image *dst_image = dst_iview->image;
@@ -1011,7 +1013,7 @@ radv_depth_stencil_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer,
                                                .baseArrayLayer = src_iview->base_layer + layer,
                                                .layerCount = 1,
                                        },
-                                    });
+                                    }, NULL);
 
                struct radv_image_view tdst_iview;
                radv_image_view_init(&tdst_iview, cmd_buffer->device,
@@ -1027,7 +1029,7 @@ radv_depth_stencil_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer,
                                                .baseArrayLayer = dst_iview->base_layer + layer,
                                                .layerCount = 1,
                                        },
-                                    });
+                                    }, NULL);
 
                emit_depth_stencil_resolve(cmd_buffer, &tsrc_iview, &tdst_iview,
                                           &(VkOffset2D) { 0, 0 },
@@ -1043,7 +1045,7 @@ radv_depth_stencil_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer,
        if (radv_image_has_htile(dst_image)) {
                if (aspects == VK_IMAGE_ASPECT_DEPTH_BIT) {
                        VkImageSubresourceRange range = {};
-                       range.aspectMask = aspects;
+                       range.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
                        range.baseMipLevel = dst_iview->base_mip;
                        range.levelCount = 1;
                        range.baseArrayLayer = dst_iview->base_layer;