[Piglit] [PATCH] fp-indirections: limit to 1024 indirections
Roland Scheidegger
rscheidegger_lists at hispeed.ch
Thu Sep 18 07:41:27 PDT 2014
Am 18.09.2014 16:16, schrieb Brian Paul:
> Reviewed-by: Brian Paul <brianp at vmware.com>
>
> Just a minor suggestion below (in 2 places).
>
>
> On 09/18/2014 08:09 AM, sroland at vmware.com wrote:
>> From: Roland Scheidegger <sroland at vmware.com>
>>
>> The test takes ages (somewhere in the order of an hour) on llvmpipe,
>> because
>> the driver announces support for one million indirections (some drivers
>> actually say billions even). It never gets compiled even, that hour is
>> fully
>> spent on string concatenation when constructing the shader in the test
>> itself,
>> which seems rather silly.
>> Thus, follow fp-indirections2, which limits it to 1024 indirections.
>> If you've
>> got that many indirections the hw is pretty much guaranteed to not
>> have a limit
>> on that anyway.
>> ---
>> tests/shaders/fp-indirections.c | 20 ++++++++++++--------
>> 1 file changed, 12 insertions(+), 8 deletions(-)
>>
>> diff --git a/tests/shaders/fp-indirections.c
>> b/tests/shaders/fp-indirections.c
>> index a25432f..927e3dc 100644
>> --- a/tests/shaders/fp-indirections.c
>> +++ b/tests/shaders/fp-indirections.c
>> @@ -187,12 +187,14 @@ GLboolean test_temporary_dest_indirections(void)
>> GLboolean pass = GL_TRUE;
>> GLuint progname;
>> char *prog;
>> - GLint indirections_limit;
>> + GLint indirections_limit, use_limit;
>> GLint count;
>>
>> indirections_limit =
>> get_program_i(GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB);
>>
>> - count = indirections_limit - 1;
>> + use_limit = indirections_limit > 1024 ? 1024 : indirections_limit;
>
> use_limit = MIN2(indirections_limit, 1024);
Oh, wasn't aware that macro was defined in piglit as well. I've fixed
that. Thanks!
Roland
>
>
>> +
>> + count = use_limit - 1;
>> printf("testing program with %d indirections from temporary
>> dests\n",
>> count);
>> prog = gen_temporary_dest_indirections(count, &progname);
>> @@ -206,11 +208,11 @@ GLboolean test_temporary_dest_indirections(void)
>> free(prog);
>> }
>>
>> - count = indirections_limit + 1;
>> + count = use_limit + 1;
>> printf("testing program with %d indirections from temporary
>> dests\n",
>> count);
>> prog = gen_temporary_dest_indirections(count, &progname);
>> - if (prog != NULL) {
>> + if (prog != NULL && count > indirections_limit) {
>> if (get_program_i(GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB)) {
>> printf("Program with %d indirections unexpectedly "
>> "met native limits.\n", count);
>> @@ -231,12 +233,14 @@ GLboolean test_temporary_source_indirections(void)
>> GLboolean pass = GL_TRUE;
>> GLuint progname;
>> char *prog;
>> - GLint indirections_limit;
>> + GLint indirections_limit, use_limit;
>> GLint count;
>>
>> indirections_limit =
>> get_program_i(GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB);
>>
>> - count = indirections_limit - 1;
>> + use_limit = indirections_limit > 1024 ? 1024 : indirections_limit;
>
> MIN2()
>
>
>> +
>> + count = use_limit - 1;
>> printf("testing program with %d indirections from temporary
>> sources\n",
>> count);
>> prog = gen_temporary_source_indirections(count, &progname);
>> @@ -250,11 +254,11 @@ GLboolean test_temporary_source_indirections(void)
>> free(prog);
>> }
>>
>> - count = indirections_limit + 1;
>> + count = use_limit + 1;
>> printf("testing program with %d indirections from temporary
>> sources\n",
>> count);
>> prog = gen_temporary_source_indirections(count, &progname);
>> - if (prog != NULL) {
>> + if (prog != NULL && count > indirections_limit) {
>> if (get_program_i(GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB)) {
>> printf("Program with %d indirections unexpectedly "
>> "met native limits.\n", count);
>>
>
>
>
More information about the Piglit
mailing list