Revert "microsoft/compiler: Use SRVs for read-only images"
authorPedro J. Estébanez <pedrojrulez@gmail.com>
Tue, 4 Apr 2023 18:27:09 +0000 (20:27 +0200)
committerMarge Bot <emma+marge@anholt.net>
Tue, 4 Apr 2023 22:50:05 +0000 (22:50 +0000)
This reverts commit 54c32aeba6300f5cafc2bae18020398645925969.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22289>

src/microsoft/compiler/nir_to_dxil.c

index 5ddc4a7..245c514 100644 (file)
@@ -5180,17 +5180,12 @@ emit_deref(struct ntd_context* ctx, nir_deref_instr* instr)
 
    assert(glsl_type_is_sampler(type) || glsl_type_is_image(type) || glsl_type_is_texture(type));
    enum dxil_resource_class res_class;
-   if (glsl_type_is_image(type)) {
-      if (ctx->opts->environment == DXIL_ENVIRONMENT_VULKAN &&
-          (var->data.access & ACCESS_NON_WRITEABLE))
-         res_class = DXIL_RESOURCE_CLASS_SRV;
-      else
-         res_class = DXIL_RESOURCE_CLASS_UAV;
-   } else if (glsl_type_is_sampler(type)) {
+   if (glsl_type_is_image(type))
+      res_class = DXIL_RESOURCE_CLASS_UAV;
+   else if (glsl_type_is_sampler(type))
       res_class = DXIL_RESOURCE_CLASS_SAMPLER;
-   } else {
+   else
       res_class = DXIL_RESOURCE_CLASS_SRV;
-   }
    
    unsigned descriptor_set = ctx->opts->environment == DXIL_ENVIRONMENT_VULKAN ?
       var->data.descriptor_set : (glsl_type_is_image(type) ? 1 : 0);
@@ -6167,19 +6162,12 @@ emit_module(struct ntd_context *ctx, const struct nir_to_dxil_options *opts)
 
    /* SRVs */
    nir_foreach_variable_with_modes(var, ctx->shader, nir_var_uniform) {
-      if (glsl_type_is_texture(glsl_without_array(var->type)) &&
-          !emit_srv(ctx, var, glsl_type_get_texture_count(var->type)))
+      unsigned count = glsl_type_get_texture_count(var->type);
+      assert(count == 0 || glsl_type_is_texture(glsl_without_array(var->type)));
+      if (count > 0 && !emit_srv(ctx, var, count))
          return false;
    }
 
-   if (ctx->opts->environment == DXIL_ENVIRONMENT_VULKAN) {
-      nir_foreach_image_variable(var, ctx->shader) {
-         if ((var->data.access & ACCESS_NON_WRITEABLE) &&
-             !emit_srv(ctx, var, glsl_type_get_image_count(var->type)))
-            return false;
-      }
-   }
-
    /* Handle read-only SSBOs as SRVs */
    if (ctx->opts->environment == DXIL_ENVIRONMENT_VULKAN) {
       nir_foreach_variable_with_modes(var, ctx->shader, nir_var_mem_ssbo) {
@@ -6261,10 +6249,6 @@ emit_module(struct ntd_context *ctx, const struct nir_to_dxil_options *opts)
    }
 
    nir_foreach_image_variable(var, ctx->shader) {
-      if (ctx->opts->environment == DXIL_ENVIRONMENT_VULKAN &&
-          var && (var->data.access & ACCESS_NON_WRITEABLE))
-         continue; // already handled in SRV
-
       if (!emit_uav_var(ctx, var, glsl_type_get_image_count(var->type)))
          return false;
    }