anv/formats: Return proper error code for unsupported formats
[mesa.git] / src / intel / vulkan / anv_meta_blit.c
index 7bddc6b2d4267b59d494ed491d52926f2c65a144..3c54ef4bafbef5dc6881e2d0e2a7ab5270937923 100644 (file)
@@ -100,7 +100,7 @@ build_nir_copy_fragment_shader(enum glsl_sampler_dim tex_dim)
    tex->texture = nir_deref_var_create(tex, sampler);
    tex->sampler = nir_deref_var_create(tex, sampler);
 
-   nir_ssa_dest_init(&tex->instr, &tex->dest, 4, "tex");
+   nir_ssa_dest_init(&tex->instr, &tex->dest, 4, 32, "tex");
    nir_builder_instr_insert(&b, &tex->instr);
 
    nir_variable *color_out = nir_variable_create(b.shader, nir_var_shader_out,
@@ -115,11 +115,10 @@ static void
 meta_prepare_blit(struct anv_cmd_buffer *cmd_buffer,
                   struct anv_meta_saved_state *saved_state)
 {
-   anv_meta_save(saved_state, cmd_buffer,
-                 (1 << VK_DYNAMIC_STATE_VIEWPORT));
+   anv_meta_save(saved_state, cmd_buffer, 0);
 }
 
-void
+static void
 meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
                struct anv_image *src_image,
                struct anv_image_view *src_iview,
@@ -186,7 +185,8 @@ meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
       },
    };
 
-   anv_state_clflush(vb_state);
+   if (!device->info.has_llc)
+      anv_state_clflush(vb_state);
 
    struct anv_buffer vertex_buffer = {
       .device = device,
@@ -305,16 +305,6 @@ meta_emit_blit(struct anv_cmd_buffer *cmd_buffer,
                           VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline);
    }
 
-   anv_CmdSetViewport(anv_cmd_buffer_to_handle(cmd_buffer), 0, 1,
-                      &(VkViewport) {
-                        .x = 0.0f,
-                        .y = 0.0f,
-                        .width = dest_iview->extent.width,
-                        .height = dest_iview->extent.height,
-                        .minDepth = 0.0f,
-                        .maxDepth = 1.0f,
-                      });
-
    anv_CmdBindDescriptorSets(anv_cmd_buffer_to_handle(cmd_buffer),
                              VK_PIPELINE_BIND_POINT_GRAPHICS,
                              device->meta_state.blit.pipeline_layout, 0, 1,
@@ -366,8 +356,6 @@ void anv_CmdBlitImage(
    assert(src_image->samples == 1);
    assert(dest_image->samples == 1);
 
-   anv_finishme("respect VkFilter");
-
    meta_prepare_blit(cmd_buffer, &saved_state);
 
    for (unsigned r = 0; r < regionCount; r++) {
@@ -386,7 +374,7 @@ void anv_CmdBlitImage(
                .layerCount = 1
             },
          },
-         cmd_buffer, 0, VK_IMAGE_USAGE_SAMPLED_BIT);
+         cmd_buffer, VK_IMAGE_USAGE_SAMPLED_BIT);
 
       const VkOffset3D dest_offset = {
          .x = pRegions[r].dstOffsets[0].x,
@@ -436,7 +424,7 @@ void anv_CmdBlitImage(
                .layerCount = 1
             },
          },
-         cmd_buffer, 0, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
+         cmd_buffer, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
 
       meta_emit_blit(cmd_buffer,
                      src_image, &src_iview,
@@ -538,7 +526,7 @@ anv_device_init_meta_blit_state(struct anv_device *device)
          {
             .binding = 0,
             .stride = 0,
-            .inputRate = VK_VERTEX_INPUT_RATE_VERTEX
+            .inputRate = VK_VERTEX_INPUT_RATE_INSTANCE
          },
          {
             .binding = 1,
@@ -681,8 +669,6 @@ anv_device_init_meta_blit_state(struct anv_device *device)
    const struct anv_graphics_pipeline_create_info anv_pipeline_info = {
       .color_attachment_count = -1,
       .use_repclear = false,
-      .disable_viewport = true,
-      .disable_scissor = true,
       .disable_vs = true,
       .use_rectlist = true
    };