<div dir="ltr">On 14 May 2013 10:54, Eric Anholt <span dir="ltr"><<a href="mailto:eric@anholt.net" target="_blank">eric@anholt.net</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">Eric Anholt <<a href="mailto:eric@anholt.net">eric@anholt.net</a>> writes:<br>
<br>
> Brian Paul <<a href="mailto:brianp@vmware.com">brianp@vmware.com</a>> writes:<br>
><br>
>> On 05/08/2013 03:02 PM, Eric Anholt wrote:<br>
>>> The previous piglit_link_simple_program() interface required you to<br>
>>> compile your shaders up front, and tests routinely have issues with<br>
>>> either not checking that the component shaders compiled, or not<br>
>>> checking that the program linked, and then confusingly fail later in<br>
>>> the test.  This one enforces that the program actually compiled and<br>
>>> linked before continuing, so you don't need to worry about error<br>
>>> checking.<br>
>>> ---<br>
>>>   tests/util/piglit-shader.c | 35 +++++++++++++++++++++++++++++++++++<br>
>>>   tests/util/piglit-shader.h |  1 +<br>
>>>   2 files changed, 36 insertions(+)<br>
>>><br>
>>> diff --git a/tests/util/piglit-shader.c b/tests/util/piglit-shader.c<br>
>>> index ca48f41..d715bab 100644<br>
>>> --- a/tests/util/piglit-shader.c<br>
>>> +++ b/tests/util/piglit-shader.c<br>
>>> @@ -263,3 +263,38 @@ GLint piglit_link_simple_program(GLint vs, GLint fs)<br>
>>><br>
>>>     return prog;<br>
>>>   }<br>
>>> +<br>
>>> +/**<br>
>>> + * Builds and links a program from optional VS and FS sources,<br>
>>> + * throwing PIGLIT_FAIL on error.<br>
>>> + */<br>
>>> +GLint<br>
>>> +piglit_build_simple_program(const char *vs_source, const char *fs_source)<br>
>><br>
>> How would you feel about adding a gs_source for geometry shaders too?<br>
>><br>
>> Otherwise,<br>
>> Reviewed-by: Brian Paul <<a href="mailto:brianp@vmware.com">brianp@vmware.com</a>><br>
><br>
> As long as we don't add tes/tcs as well, because damned if I'm ever<br>
> going to remember what order they all go in.<br>
<br>
</div></div>On further thought, I think this interface is better mirroring<br>
piglit_link_simple_program and covering the 90% case of just a VS/FS.  I<br>
expect for GS-using tests, they will generally either be shader_runner<br>
tests (don't use this interface), or link failure tests (don't use this<br>
interface), or shader limits tests (usually have to manually link, to<br>
conditionally do things for beyond-the-limits cases).<br></blockquote><div><br></div><div>I agree.  An additional complication with geometry shaders is that when using ARB_geometry_shader4-style geometry shaders (which most of our GS tests so far use), you need to make additional calls prior to linking, to specify the input/output primitive types and maximum output primitive count.  That's enough extra complication that it probably makes more sense to just add a piglit_build_simple_program_with_gs() function if and when it proves necessary.<br>
</div></div></div></div>