[Piglit] [PATCH 01/23] util/shader: Define "nothrow" variant of piglit_compile_shader_text().
Francisco Jerez
currojerez at riseup.net
Sat Jan 31 11:45:59 PST 2015
Jordan Justen <jordan.l.justen at intel.com> writes:
> On 2015-01-31 07:41:23, Francisco Jerez wrote:
>> Define a variant of piglit_compile_shader_text() that doesn't call
>> piglit_report_result() on failure killing the program, which is quite
>> annoying for tests that expect a compilation to fail and for tests
>> that are structured in a number of subtests, because a single sub-test
>> failing to compile a shader will prevent the remaining tests from
>> running.
>>
>> I guess this would ideally be the default behavior of
>> piglit_compile_shader_text(), but with >300 callers in tree it seems
>> rather difficult to change at this stage.
>
> sed?
>
> Maybe piglit_compile_shader_text => piglit_require_compile_shader_text?
>
I personally don't care enough to make such a change affecting hundreds
of other tests that wouldn't have the slightest chance of being reviewed
before it no longer applies cleanly. I would support the change though
if you feel like doing it.
>> ---
>> tests/util/piglit-shader.c | 20 ++++++++++++++++++--
>> tests/util/piglit-shader.h | 1 +
>> 2 files changed, 19 insertions(+), 2 deletions(-)
>>
>> diff --git a/tests/util/piglit-shader.c b/tests/util/piglit-shader.c
>> index e8fe9c4..37cc7cc 100644
>> --- a/tests/util/piglit-shader.c
>> +++ b/tests/util/piglit-shader.c
>> @@ -122,7 +122,7 @@ shader_name(GLenum target)
>> * Convenience function to compile a GLSL shader.
>> */
>> GLuint
>> -piglit_compile_shader_text(GLenum target, const char *text)
>> +piglit_compile_shader_text_nothrow(GLenum target, const char *text)
>> {
>> GLuint prog;
>> GLint ok;
>> @@ -149,7 +149,8 @@ piglit_compile_shader_text(GLenum target, const char *text)
>> info);
>>
>> fprintf(stderr, "source:\n%s", text);
>
> Do you think piglit_compile_shader_text_nothrow should be silent if
> the shader fails to compile?
>
> Maybe move the fprintf's as well?
>
As the main motivation for this function is to avoid killing the program
when a shader compilation fails, I think the fprintf() is fine and
useful to find out what is going on when something fails. But we could
make it dependent on a parameter or factor it out to a separate function
if you like.
> -Jordan
>
>> - piglit_report_result(PIGLIT_FAIL);
>> + glDeleteShader(prog);
>> + prog = 0;
>> }
>> else if (0) {
>> /* Enable this to get extra compilation info.
>> @@ -164,6 +165,21 @@ piglit_compile_shader_text(GLenum target, const char *text)
>> return prog;
>> }
>>
>> +/**
>> + * Convenience function to compile a GLSL shader. Throws PIGLIT_FAIL
>> + * on error terminating the program.
>> + */
>> +GLuint
>> +piglit_compile_shader_text(GLenum target, const char *text)
>> +{
>> + GLuint shader = piglit_compile_shader_text_nothrow(target, text);
>> +
>> + if (!shader)
>> + piglit_report_result(PIGLIT_FAIL);
>> +
>> + return shader;
>> +}
>> +
>> static GLboolean
>> link_check_status(GLint prog, FILE *output)
>> {
>> diff --git a/tests/util/piglit-shader.h b/tests/util/piglit-shader.h
>> index e2eef03..9208451 100644
>> --- a/tests/util/piglit-shader.h
>> +++ b/tests/util/piglit-shader.h
>> @@ -31,6 +31,7 @@
>> void piglit_get_glsl_version(bool *es, int* major, int* minor);
>>
>> GLuint piglit_compile_shader(GLenum target, const char *filename);
>> +GLuint piglit_compile_shader_text_nothrow(GLenum target, const char *text);
>> GLuint piglit_compile_shader_text(GLenum target, const char *text);
>> GLboolean piglit_link_check_status(GLint prog);
>> GLboolean piglit_link_check_status_quiet(GLint prog);
>> --
>> 2.1.3
>>
>> _______________________________________________
>> Piglit mailing list
>> Piglit at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/piglit
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20150131/067718fd/attachment.sig>
More information about the Piglit
mailing list