radeonsi: fix issues with monolithic shaders
authorMarek Olšák <marek.olsak@amd.com>
Sat, 18 Feb 2017 16:08:34 +0000 (17:08 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 21 Feb 2017 20:27:23 +0000 (21:27 +0100)
R600_DEBUG=mono has had no effect since:

    commit 1fabb297177069e95ec1bb7053acb32f8ec3e092
    Author: Marek Olšák <marek.olsak@amd.com>
    Date:   Tue Feb 14 22:08:32 2017 +0100

    radeonsi: have separate LS and ES main shader parts in the shader selector

Also, this assertion was failing:
    si_state_shaders.c:1307: si_shader_select_with_key: Assertion
    `!shader->is_optimized' failed.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_state_shaders.c

index bcfff0c..0e85c12 100644 (file)
@@ -1245,6 +1245,7 @@ again:
         * if the initial guess was wrong. */
        struct si_shader **mainp = si_get_main_shader_part(sel, key);
        bool is_pure_monolithic =
+               sscreen->use_monolithic_shaders ||
                memcmp(&key->mono, &zeroed.mono, sizeof(key->mono)) != 0;
 
        if (!*mainp && !is_pure_monolithic) {
@@ -1278,7 +1279,7 @@ again:
                memcmp(&key->opt, &zeroed.opt, sizeof(key->opt)) != 0;
 
        shader->is_optimized =
-               !sscreen->use_monolithic_shaders &&
+               !is_pure_monolithic &&
                memcmp(&key->opt, &zeroed.opt, sizeof(key->opt)) != 0;
        if (shader->is_optimized)
                util_queue_fence_init(&shader->optimized_ready);