radeonsi: remove redundant si_shader_info::shader_buffers_declared
authorMarek Olšák <marek.olsak@amd.com>
Sun, 6 Sep 2020 06:15:51 +0000 (02:15 -0400)
committerVivek Pandya <vivekvpandya@gmail.com>
Mon, 7 Sep 2020 15:55:17 +0000 (21:25 +0530)
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6624>

src/gallium/drivers/radeonsi/si_compute.c
src/gallium/drivers/radeonsi/si_compute_prim_discard.c
src/gallium/drivers/radeonsi/si_debug.c
src/gallium/drivers/radeonsi/si_shader.c
src/gallium/drivers/radeonsi/si_shader.h
src/gallium/drivers/radeonsi/si_shader_llvm_resources.c
src/gallium/drivers/radeonsi/si_shader_nir.c
src/gallium/drivers/radeonsi/si_state_shaders.c

index 7bb24a0df67c1a30ea163993e5ffced6a045d5f6..8dc7360066199ca587de3e0c16b8c8646d7f8d02 100644 (file)
@@ -143,7 +143,7 @@ static void si_create_compute_state_async(void *job, int thread_index)
 
    /* Fast path for compute shaders - some descriptors passed via user SGPRs. */
    /* Shader buffers in user SGPRs. */
 
    /* Fast path for compute shaders - some descriptors passed via user SGPRs. */
    /* Shader buffers in user SGPRs. */
-   for (unsigned i = 0; i < 3 && user_sgprs <= 12 && sel->info.shader_buffers_declared & (1 << i); i++) {
+   for (unsigned i = 0; i < MIN2(3, sel->info.base.num_ssbos) && user_sgprs <= 12; i++) {
       user_sgprs = align(user_sgprs, 4);
       if (i == 0)
          sel->cs_shaderbufs_sgpr_index = user_sgprs;
       user_sgprs = align(user_sgprs, 4);
       if (i == 0)
          sel->cs_shaderbufs_sgpr_index = user_sgprs;
index dd764b8dee15a64c57535d6327a419feec5dc7b1..d91a1e5db262402673cbb048fe541d8c942b48eb 100644 (file)
@@ -309,7 +309,7 @@ void si_build_prim_discard_compute_shader(struct si_shader_context *ctx)
 
    enum ac_arg_type const_desc_type;
    if (ctx->shader->selector->info.const_buffers_declared == 1 &&
 
    enum ac_arg_type const_desc_type;
    if (ctx->shader->selector->info.const_buffers_declared == 1 &&
-       ctx->shader->selector->info.shader_buffers_declared == 0)
+       ctx->shader->selector->info.base.num_ssbos == 0)
       const_desc_type = AC_ARG_CONST_FLOAT_PTR;
    else
       const_desc_type = AC_ARG_CONST_DESC_PTR;
       const_desc_type = AC_ARG_CONST_FLOAT_PTR;
    else
       const_desc_type = AC_ARG_CONST_DESC_PTR;
index 14f3305093ae9fddb5560c4dcf160e416d7a324e..e39ce2f584d15a6ccc277b6d3f56185c7cd41d6a 100644 (file)
@@ -790,7 +790,7 @@ static void si_dump_descriptors(struct si_context *sctx, gl_shader_stage stage,
 
    if (info) {
       enabled_constbuf = info->const_buffers_declared;
 
    if (info) {
       enabled_constbuf = info->const_buffers_declared;
-      enabled_shaderbuf = info->shader_buffers_declared;
+      enabled_shaderbuf = u_bit_consecutive(0, info->base.num_ssbos);
       enabled_samplers = info->base.textures_used;
       enabled_images = info->images_declared;
    } else {
       enabled_samplers = info->base.textures_used;
       enabled_images = info->images_declared;
    } else {
index 057829599af4d94523c0f19747020a10e027410e..ca5e485f2c4240cdb43ad3689ae729d620927777 100644 (file)
@@ -230,7 +230,7 @@ static void declare_const_and_shader_buffers(struct si_shader_context *ctx, bool
    enum ac_arg_type const_shader_buf_type;
 
    if (ctx->shader->selector->info.const_buffers_declared == 1 &&
    enum ac_arg_type const_shader_buf_type;
 
    if (ctx->shader->selector->info.const_buffers_declared == 1 &&
-       ctx->shader->selector->info.shader_buffers_declared == 0)
+       ctx->shader->selector->info.base.num_ssbos == 0)
       const_shader_buf_type = AC_ARG_CONST_FLOAT_PTR;
    else
       const_shader_buf_type = AC_ARG_CONST_DESC_PTR;
       const_shader_buf_type = AC_ARG_CONST_FLOAT_PTR;
    else
       const_shader_buf_type = AC_ARG_CONST_DESC_PTR;
@@ -1343,7 +1343,7 @@ static bool si_build_main_function(struct si_shader_context *ctx, struct si_shad
    ctx->stage = sel->info.stage;
 
    ctx->num_const_buffers = util_last_bit(info->const_buffers_declared);
    ctx->stage = sel->info.stage;
 
    ctx->num_const_buffers = util_last_bit(info->const_buffers_declared);
-   ctx->num_shader_buffers = util_last_bit(info->shader_buffers_declared);
+   ctx->num_shader_buffers = info->base.num_ssbos;
 
    ctx->num_samplers = util_last_bit(info->base.textures_used);
    ctx->num_images = util_last_bit(info->images_declared);
 
    ctx->num_samplers = util_last_bit(info->base.textures_used);
    ctx->num_images = util_last_bit(info->images_declared);
index 5def41a3593596e5ee602396af0a2dd6941d438e..9465729dc64dd6d71017b5391d0e87cf984fafcf 100644 (file)
@@ -388,7 +388,6 @@ struct si_shader_info {
    unsigned num_written_clipdistance;
 
    unsigned images_declared;         /**< bitmask of declared images */
    unsigned num_written_clipdistance;
 
    unsigned images_declared;         /**< bitmask of declared images */
-   unsigned shader_buffers_declared; /**< bitmask of declared shader buffers */
 
    /** Whether all codepaths write tess factors in all invocations. */
    bool tessfactors_are_def_in_all_invocs;
 
    /** Whether all codepaths write tess factors in all invocations. */
    bool tessfactors_are_def_in_all_invocs;
index ebde256c9b0754f882015c6fb8968ce437a70017..c78e77b187dfa28b2f5fbfac3b6c992d249d7ea7 100644 (file)
@@ -93,7 +93,7 @@ static LLVMValueRef load_ubo(struct ac_shader_abi *abi, LLVMValueRef index)
 
    LLVMValueRef ptr = ac_get_arg(&ctx->ac, ctx->const_and_shader_buffers);
 
 
    LLVMValueRef ptr = ac_get_arg(&ctx->ac, ctx->const_and_shader_buffers);
 
-   if (sel->info.const_buffers_declared == 1 && sel->info.shader_buffers_declared == 0) {
+   if (sel->info.const_buffers_declared == 1 && sel->info.base.num_ssbos == 0) {
       return load_const_buffer_desc_fast_path(ctx);
    }
 
       return load_const_buffer_desc_fast_path(ctx);
    }
 
index 067c7768ddedbe3b060b1cef8468d9e6142a6e4a..76c6becd2718a6f7ab33bd54350c907fcf25b686 100644 (file)
@@ -479,7 +479,6 @@ void si_nir_scan_shader(const struct nir_shader *nir, struct si_shader_info *inf
    }
 
    info->constbuf0_num_slots = nir->num_uniforms;
    }
 
    info->constbuf0_num_slots = nir->num_uniforms;
-   info->shader_buffers_declared = u_bit_consecutive(0, nir->info.num_ssbos);
    info->const_buffers_declared = u_bit_consecutive(0, nir->info.num_ubos);
    info->images_declared = u_bit_consecutive(0, nir->info.num_images);
 
    info->const_buffers_declared = u_bit_consecutive(0, nir->info.num_ubos);
    info->images_declared = u_bit_consecutive(0, nir->info.num_images);
 
index e601e9f577df02b19e664f9a83e74769bcd98113..0d41c9726d1e0a14a8773c15e501d4934714ccb3 100644 (file)
@@ -2543,7 +2543,7 @@ void si_get_active_slot_masks(const struct si_shader_info *info, uint64_t *const
 {
    unsigned start, num_shaderbufs, num_constbufs, num_images, num_msaa_images, num_samplers;
 
 {
    unsigned start, num_shaderbufs, num_constbufs, num_images, num_msaa_images, num_samplers;
 
-   num_shaderbufs = util_last_bit(info->shader_buffers_declared);
+   num_shaderbufs = info->base.num_ssbos;
    num_constbufs = util_last_bit(info->const_buffers_declared);
    /* two 8-byte images share one 16-byte slot */
    num_images = align(util_last_bit(info->images_declared), 2);
    num_constbufs = util_last_bit(info->const_buffers_declared);
    /* two 8-byte images share one 16-byte slot */
    num_images = align(util_last_bit(info->images_declared), 2);