From: Nicolai Hähnle <nicolai.haeh...@amd.com>

We didn't really use error codes anyway.
---
 src/gallium/drivers/radeonsi/si_compute.c      |  2 +-
 src/gallium/drivers/radeonsi/si_shader.c       | 18 +++++++++---------
 src/gallium/drivers/radeonsi/si_shader.h       |  2 +-
 .../drivers/radeonsi/si_state_shaders.c        |  8 +++-----
 4 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_compute.c 
b/src/gallium/drivers/radeonsi/si_compute.c
index 02d7bac406a..2acd96545aa 100644
--- a/src/gallium/drivers/radeonsi/si_compute.c
+++ b/src/gallium/drivers/radeonsi/si_compute.c
@@ -142,21 +142,21 @@ static void si_create_compute_state_async(void *job, int 
thread_index)
 
                si_shader_dump_stats_for_shader_db(shader, debug);
                si_shader_dump(sscreen, shader, debug, PIPE_SHADER_COMPUTE,
                               stderr, true);
 
                if (si_shader_binary_upload(sscreen, shader))
                        program->shader.compilation_failed = true;
        } else {
                mtx_unlock(&sscreen->shader_cache_mutex);
 
-               if (si_shader_create(sscreen, compiler, &program->shader, 
debug)) {
+               if (!si_shader_create(sscreen, compiler, &program->shader, 
debug)) {
                        program->shader.compilation_failed = true;
 
                        if (program->ir_type == PIPE_SHADER_IR_TGSI)
                                FREE(program->ir.tgsi);
                        program->shader.selector = NULL;
                        return;
                }
 
                bool scratch_enabled = shader->config.scratch_bytes_per_wave > 
0;
                unsigned user_sgprs = SI_NUM_RESOURCE_SGPRS +
diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index da43447013d..4d08ab88f4a 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -7769,94 +7769,94 @@ static void si_fix_resource_usage(struct si_screen 
*sscreen,
 
        shader->config.num_sgprs = MAX2(shader->config.num_sgprs, min_sgprs);
 
        if (shader->selector->type == PIPE_SHADER_COMPUTE &&
            si_get_max_workgroup_size(shader) > 64) {
                si_multiwave_lds_size_workaround(sscreen,
                                                 &shader->config.lds_size);
        }
 }
 
-int si_shader_create(struct si_screen *sscreen, struct ac_llvm_compiler 
*compiler,
+bool si_shader_create(struct si_screen *sscreen, struct ac_llvm_compiler 
*compiler,
                     struct si_shader *shader,
                     struct pipe_debug_callback *debug)
 {
        struct si_shader_selector *sel = shader->selector;
        struct si_shader *mainp = *si_get_main_shader_part(sel, &shader->key);
        int r;
 
        /* LS, ES, VS are compiled on demand if the main part hasn't been
         * compiled for that stage.
         *
         * Vertex shaders are compiled on demand when a vertex fetch
         * workaround must be applied.
         */
        if (shader->is_monolithic) {
                /* Monolithic shader (compiled as a whole, has many variants,
                 * may take a long time to compile).
                 */
                r = si_compile_tgsi_shader(sscreen, compiler, shader, debug);
                if (r)
-                       return r;
+                       return false;
        } else {
                /* The shader consists of several parts:
                 *
                 * - the middle part is the user shader, it has 1 variant only
                 *   and it was compiled during the creation of the shader
                 *   selector
                 * - the prolog part is inserted at the beginning
                 * - the epilog part is inserted at the end
                 *
                 * The prolog and epilog have many (but simple) variants.
                 *
                 * Starting with gfx9, geometry and tessellation control
                 * shaders also contain the prolog and user shader parts of
                 * the previous shader stage.
                 */
 
                if (!mainp)
-                       return -1;
+                       return false;
 
                /* Copy the compiled TGSI shader data over. */
                shader->is_binary_shared = true;
                shader->binary = mainp->binary;
                shader->config = mainp->config;
                shader->info.num_input_sgprs = mainp->info.num_input_sgprs;
                shader->info.num_input_vgprs = mainp->info.num_input_vgprs;
                shader->info.face_vgpr_index = mainp->info.face_vgpr_index;
                shader->info.ancillary_vgpr_index = 
mainp->info.ancillary_vgpr_index;
                memcpy(shader->info.vs_output_param_offset,
                       mainp->info.vs_output_param_offset,
                       sizeof(mainp->info.vs_output_param_offset));
                shader->info.uses_instanceid = mainp->info.uses_instanceid;
                shader->info.nr_pos_exports = mainp->info.nr_pos_exports;
                shader->info.nr_param_exports = mainp->info.nr_param_exports;
 
                /* Select prologs and/or epilogs. */
                switch (sel->type) {
                case PIPE_SHADER_VERTEX:
                        if (!si_shader_select_vs_parts(sscreen, compiler, 
shader, debug))
-                               return -1;
+                               return false;
                        break;
                case PIPE_SHADER_TESS_CTRL:
                        if (!si_shader_select_tcs_parts(sscreen, compiler, 
shader, debug))
-                               return -1;
+                               return false;
                        break;
                case PIPE_SHADER_TESS_EVAL:
                        break;
                case PIPE_SHADER_GEOMETRY:
                        if (!si_shader_select_gs_parts(sscreen, compiler, 
shader, debug))
-                               return -1;
+                               return false;
                        break;
                case PIPE_SHADER_FRAGMENT:
                        if (!si_shader_select_ps_parts(sscreen, compiler, 
shader, debug))
-                               return -1;
+                               return false;
 
                        /* Make sure we have at least as many VGPRs as there
                         * are allocated inputs.
                         */
                        shader->config.num_vgprs = 
MAX2(shader->config.num_vgprs,
                                                        
shader->info.num_input_vgprs);
                        break;
                }
 
                /* Update SGPR and VGPR counts. */
@@ -7902,24 +7902,24 @@ int si_shader_create(struct si_screen *sscreen, struct 
ac_llvm_compiler *compile
        }
 
        si_fix_resource_usage(sscreen, shader);
        si_shader_dump(sscreen, shader, debug, sel->info.processor,
                       stderr, true);
 
        /* Upload. */
        r = si_shader_binary_upload(sscreen, shader);
        if (r) {
                fprintf(stderr, "LLVM failed to upload shader\n");
-               return r;
+               return false;
        }
 
-       return 0;
+       return true;
 }
 
 void si_shader_destroy(struct si_shader *shader)
 {
        if (shader->scratch_bo)
                si_resource_reference(&shader->scratch_bo, NULL);
 
        si_resource_reference(&shader->bo, NULL);
 
        if (!shader->is_binary_shared)
diff --git a/src/gallium/drivers/radeonsi/si_shader.h 
b/src/gallium/drivers/radeonsi/si_shader.h
index 6c8f70dc94b..9a007a9c62c 100644
--- a/src/gallium/drivers/radeonsi/si_shader.h
+++ b/src/gallium/drivers/radeonsi/si_shader.h
@@ -661,21 +661,21 @@ struct si_shader_part {
 /* si_shader.c */
 struct si_shader *
 si_generate_gs_copy_shader(struct si_screen *sscreen,
                           struct ac_llvm_compiler *compiler,
                           struct si_shader_selector *gs_selector,
                           struct pipe_debug_callback *debug);
 int si_compile_tgsi_shader(struct si_screen *sscreen,
                           struct ac_llvm_compiler *compiler,
                           struct si_shader *shader,
                           struct pipe_debug_callback *debug);
-int si_shader_create(struct si_screen *sscreen, struct ac_llvm_compiler 
*compiler,
+bool si_shader_create(struct si_screen *sscreen, struct ac_llvm_compiler 
*compiler,
                     struct si_shader *shader,
                     struct pipe_debug_callback *debug);
 void si_shader_destroy(struct si_shader *shader);
 unsigned si_shader_io_get_unique_index_patch(unsigned semantic_name, unsigned 
index);
 unsigned si_shader_io_get_unique_index(unsigned semantic_name, unsigned index,
                                       unsigned is_varying);
 int si_shader_binary_upload(struct si_screen *sscreen, struct si_shader 
*shader);
 void si_shader_dump(struct si_screen *sscreen, const struct si_shader *shader,
                    struct pipe_debug_callback *debug, unsigned processor,
                    FILE *f, bool check_debug_option);
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
b/src/gallium/drivers/radeonsi/si_state_shaders.c
index a4ddb65e304..b419a6f5bf5 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1706,41 +1706,39 @@ static inline void si_shader_selector_key(struct 
pipe_context *ctx,
 }
 
 static void si_build_shader_variant(struct si_shader *shader,
                                    int thread_index,
                                    bool low_priority)
 {
        struct si_shader_selector *sel = shader->selector;
        struct si_screen *sscreen = sel->screen;
        struct ac_llvm_compiler *compiler;
        struct pipe_debug_callback *debug = &shader->compiler_ctx_state.debug;
-       int r;
 
        if (thread_index >= 0) {
                if (low_priority) {
                        assert(thread_index < 
ARRAY_SIZE(sscreen->compiler_lowp));
                        compiler = &sscreen->compiler_lowp[thread_index];
                } else {
                        assert(thread_index < ARRAY_SIZE(sscreen->compiler));
                        compiler = &sscreen->compiler[thread_index];
                }
                if (!debug->async)
                        debug = NULL;
        } else {
                assert(!low_priority);
                compiler = shader->compiler_ctx_state.compiler;
        }
 
-       r = si_shader_create(sscreen, compiler, shader, debug);
-       if (unlikely(r)) {
-               PRINT_ERR("Failed to build shader variant (type=%u) %d\n",
-                        sel->type, r);
+       if (unlikely(!si_shader_create(sscreen, compiler, shader, debug))) {
+               PRINT_ERR("Failed to build shader variant (type=%u)\n",
+                         sel->type);
                shader->compilation_failed = true;
                return;
        }
 
        if (shader->compiler_ctx_state.is_debug_context) {
                FILE *f = open_memstream(&shader->shader_log,
                                         &shader->shader_log_size);
                if (f) {
                        si_shader_dump(sscreen, shader, NULL, sel->type, f, 
false);
                        fclose(f);
-- 
2.20.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to