<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_ASSIGNED "
   title="ASSIGNED - [swrast] piglit shader_runner fast_color_clear/all-colors regression"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=94295#c2">Comment # 2</a>
              on <a class="bz_bug_link 
          bz_status_ASSIGNED "
   title="ASSIGNED - [swrast] piglit shader_runner fast_color_clear/all-colors regression"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=94295">bug 94295</a>
              from <span class="vcard"><a class="email" href="mailto:plamena.manolova@intel.com" title="Plamena Manolova <plamena.manolova@intel.com>"> <span class="fn">Plamena Manolova</span></a>
</span></b>
        <pre>(In reply to Vinson Lee from <a href="show_bug.cgi?id=94295#c0">comment #0</a>)
<span class="quote">> mesa: d1509a5848dee57b933139ad2610e99ae09cb5ec (master 11.3.0-devel)

> $ ./bin/shader_runner tests/fast_color_clear/all-colors.shader_test -auto
> Segmentation fault (core dumped)


> (gdb) bt
> #0  find_empty_block (prog=0xf2ae10, uniform=0xf2f030) at
> glsl/link_uniforms.cpp:1051
> #1  link_assign_uniform_locations (prog=prog@entry=0xf2ae10,
> boolean_true=1065353216,
> num_explicit_uniform_locs=num_explicit_uniform_locs@entry=4294967295, 
>     max_uniform_locs=98304) at glsl/link_uniforms.cpp:1238
> #2  0x00007fd99ef73db9 in link_shaders (ctx=ctx@entry=0x7fd9a4a99010,
> prog=prog@entry=0xf2ae10) at glsl/linker.cpp:4566
> #3  0x00007fd99eecb3fb in _mesa_glsl_link_shader
> (ctx=ctx@entry=0x7fd9a4a99010, prog=prog@entry=0xf2ae10) at
> program/ir_to_mesa.cpp:3036
> #4  0x00007fd99edd1b8a in link_program (ctx=0x7fd9a4a99010,
> program=<optimized out>) at main/shaderapi.c:1048
> #5  0x00007fd9a45dafec in stub_glLinkProgram (program=3) at
> piglit/tests/util/piglit-dispatch-gen.c:32599
> #6  0x000000000040776a in link_and_use_shaders () at
> piglit/tests/shaders/shader_runner.c:1042
> #7  0x000000000040e02c in piglit_init (argc=2, argv=0x7ffd6815d008) at
> piglit/tests/shaders/shader_runner.c:3292
> #8  0x00007fd9a464b7fb in run_test (gl_fw=0xd34c20, argc=2,
> argv=0x7ffd6815d008)
>     at piglit/tests/util/piglit-framework-gl/piglit_winsys_framework.c:73
> #9  0x00007fd9a462ff6a in piglit_gl_test_run (argc=2, argv=0x7ffd6815d008,
> config=0x7ffd6815cec0)
>     at piglit/tests/util/piglit-framework-gl.c:199
> #10 0x0000000000405b50 in main (argc=2, argv=0x7ffd6815d008) at
> piglit/tests/shaders/shader_runner.c:54
> (gdb) l
> 1046       find_empty_block(struct gl_shader_program *prog,
> 1047                        struct gl_uniform_storage *uniform)
> 1048       {
> 1049          const unsigned entries = MAX2(1, uniform->array_elements);
> 1050       
> 1051          foreach_list_typed(struct empty_uniform_block, block, link,
> 1052                             &prog->EmptyUniformLocations) {
> 1053             /* Found a block with enough slots to fit the uniform */
> 1054             if (block->slots == entries) {
> 1055                unsigned start = block->start;
> (gdb) print block
> $1 = (empty_uniform_block *) 0x0
> (gdb) print prog->EmptyUniformLocations
> $2 = {head = 0x0, tail = 0x0, tail_pred = 0x0}


> 65dfb3048e8291675ca33581aeff8921f7ea509d is the first bad commit
> commit 65dfb3048e8291675ca33581aeff8921f7ea509d
> Author: Plamena Manolova <<a href="mailto:plamena.manolova@intel.com">plamena.manolova@intel.com</a>>
> Date:   Thu Feb 11 15:00:02 2016 +0200

>     compiler/glsl: Fix uniform location counting.
>     
>     This patch moves the calculation of current uniforms to
>     link_uniforms, which makes use of UniformRemapTable which
>     stores all the reserved uniform locations.
>     
>     Location assignment for implicit uniforms now tries to use
>     any gaps left in the table after the location assignment
>     for explicit uniforms. This gives us more space to store more
>     uniforms.
>     
>     Patch is based on earlier patch with following changes/additions:
>     
>        1: Move the counting of explicit locations to
>           check_explicit_uniform_locations and then pass
>           the number to link_assign_uniform_locations.
>        2: Count the number of empty slots in UniformRemapTable
>           and store them in a list_head.
>        3: Try to find an empty slot for implicit locations from
>           the list, if that fails resize UniformRemapTable.
>     
>     Fixes following CTS tests:
>        ES31-CTS.explicit_uniform_location.uniform-loc-mix-with-implicit-max
>       
> ES31-CTS.explicit_uniform_location.uniform-loc-mix-with-implicit-max-array
>     
>     Signed-off-by: Tapani Pälli <<a href="mailto:tapani.palli@intel.com">tapani.palli@intel.com</a>>
>     Signed-off-by: Plamena Manolova <<a href="mailto:plamena.manolova@intel.com">plamena.manolova@intel.com</a>>
>     Reviewed-by: Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu">imirkin@alum.mit.edu</a>>
>     Bugzilla: <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [HSW,BDW;SKL][GLES 3.1 CTS]ES31-CTS.explicit_uniform_location.uniform-loc-mix-with-implicit-max-* fail"
   href="show_bug.cgi?id=93696">https://bugs.freedesktop.org/show_bug.cgi?id=93696</a>

> :040000 040000 5848c556c369c2c798c1c1e036c70c740b56a97a
> 25915fac71a54954aafd0139a55045ba394969e6 M src
> bisect run success</span >

Hi Vinson,
Could you verify whether this patch fixes this issue for you?</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>