[Mesa-dev] [Bug 90397] ARB_program_interface_query: glGetProgramResourceiv() returns wrong value for GL_REFERENCED_BY_*_SHADER prop for GL_UNIFORM for members of an interface block with an instance name
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Wed May 13 03:41:47 PDT 2015
https://bugs.freedesktop.org/show_bug.cgi?id=90397
--- Comment #4 from Samuel Iglesias <siglesias at igalia.com> ---
Created attachment 115737
--> https://bugs.freedesktop.org/attachment.cgi?id=115737&action=edit
patch to GetProgramResourceIndex() to fix arrays of UBOs behavior
I found another issue when modifying
arb_program_interface_query-getprogramresourceiv to test an uniform inside an
array of UBOs.
I modified a shader which is defined inside common.h. Because of that, I
updated other tests' code to work with that change. In particular,
resource-query.c.
Shader code:
#version 150
uniform fs_uniform_block {
vec4 fs_color;
float fs_array[4];
};
uniform fs_array_uniform_block {
vec4 fs_color;
float fs_array[4];
} ubo[4];
in vec4 fs_input1;
out vec4 fs_output0;
out vec4 fs_output1;
void main() {
fs_output0 = fs_color * fs_input1 * fs_array[2] *
ubo[0].fs_array[2] * ubo[2].fs_array[2];
fs_output1 = fs_color * fs_input1 * fs_array[3] *
ubo[1].fs_array[3] * ubo[3].fs_array[3];
}
I found that glGetProgramResourceName() is returning the name
"fs_array_uniform_block[0]", "fs_array_uniform_block[1]",
"fs_array_uniform_block[2]", and "fs_array_uniform_block[3]" when asked with
the corresponding block index as those blocks are active resources in the
shader.
resource-query test checks again that those names corresponds to active
resources by comparing the former index against the one returned by
glGetProgramResourceIndex(name).
Unfortunately, Mesa is returning GL_INVALID_INDEX to
fs_array_uniform_block[{1,2,3}] (other than zero), while NVIDIA passes the
test for that case.
Reading GL_ARB_program_interface_query, I found the following:
"Note that if an
interface enumerates a single active resource list entry for an array
variable (e.g., "a[0]"), a <name> identifying any array element other than
the first (e.g., "a[1]") is not considered to match."
I understand that this is referring to uniform/buffer variables but not
uniform/shader-storage blocks, but I might be wrong.
I would like to have your opinion regarding if it is valid or not spec-wise.
What do you think?
P.S: Attached to this, it's the patch that fixes this case.
--
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150513/6d6706c9/attachment.html>
More information about the mesa-dev
mailing list