microsoft/compiler: Support emitting the SM6.6 wave size tag
authorJesse Natalie <jenatali@microsoft.com>
Thu, 19 Jan 2023 21:26:13 +0000 (13:26 -0800)
committerJesse Natalie <jenatali@microsoft.com>
Tue, 24 Jan 2023 19:00:05 +0000 (11:00 -0800)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20801>

src/microsoft/compiler/dxil_enums.h
src/microsoft/compiler/nir_to_dxil.c

index d8181de..f82e381 100644 (file)
@@ -272,6 +272,7 @@ enum dxil_shader_tag {
    DXIL_SHADER_TAG_DS_STATE    = 2,
    DXIL_SHADER_TAG_HS_STATE    = 3,
    DXIL_SHADER_TAG_NUM_THREADS = 4,
+   DXIL_SHADER_TAG_WAVE_SIZE   = 11,
 };
 
 enum dxil_barrier_mode {
index 96ad74a..3c4c9ae 100644 (file)
@@ -1829,6 +1829,11 @@ emit_metadata(struct ntd_context *ctx)
    } else if (ctx->mod.shader_kind == DXIL_COMPUTE_SHADER) {
       if (!emit_tag(ctx, DXIL_SHADER_TAG_NUM_THREADS, emit_threads(ctx)))
          return false;
+      if (ctx->mod.minor_version >= 6 &&
+          ctx->shader->info.subgroup_size >= SUBGROUP_SIZE_REQUIRE_8 &&
+          !emit_tag(ctx, DXIL_SHADER_TAG_WAVE_SIZE,
+                    dxil_get_metadata_int32(&ctx->mod, ctx->shader->info.subgroup_size)))
+          return false;
    }
 
    uint64_t flags = get_module_flags(ctx);