<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - [swrast] piglit shader_runner fast_color_clear/all-colors regression"
href="https://bugs.freedesktop.org/show_bug.cgi?id=94295">94295</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>[swrast] piglit shader_runner fast_color_clear/all-colors regression
</td>
</tr>
<tr>
<th>Product</th>
<td>Mesa
</td>
</tr>
<tr>
<th>Version</th>
<td>11.2
</td>
</tr>
<tr>
<th>Hardware</th>
<td>x86-64 (AMD64)
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux (All)
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Keywords</th>
<td>bisected, regression
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Component</th>
<td>Mesa core
</td>
</tr>
<tr>
<th>Assignee</th>
<td>mesa-dev@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>vlee@freedesktop.org
</td>
</tr>
<tr>
<th>QA Contact</th>
<td>mesa-dev@lists.freedesktop.org
</td>
</tr>
<tr>
<th>CC</th>
<td>imirkin@alum.mit.edu, lemody@gmail.com, plamena.manolova@intel.com
</td>
</tr></table>
<p>
<div>
<pre>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</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
<li>You are the QA Contact for the bug.</li>
</ul>
</body>
</html>