[Piglit] [PATCH] max-texture-size: test non-proxy targets with max size from proxy test

Brian Paul brianp at vmware.com
Sat Mar 1 10:37:38 PST 2014


Finally getting back to this one...

On 02/16/2014 04:31 PM, Kenneth Graunke wrote:
> On 02/11/2014 07:59 AM, Brian Paul wrote:
>> On 02/10/2014 07:49 PM, Ian Romanick wrote:
>>> On 02/07/2014 03:34 PM, Brian Paul wrote:
>>>> Save the max texture size found with the proxy targets.  Then use
>>>> that max size when we test the regular/non-proxy targets with
>>>> glTexImage and glTexSubImage().
>>>>
>>>> The whole point of proxy textures is to be able to probe the maximum
>>>> texture size.  So let's use that size when we try the real textures.
>>>> That's what an application would typically do.
>
> Right now, the proxy cases are split out as separate subtests...but they
> don't really test much...just that you don't get a GL error.  I suppose
> they could also check that the value obtained via proxy textures is <=
> the advertised maximum.  Not sure how valuable that would be.
>
> But maybe we should drop the "test" aspect of the proxy texture code and
> just use it as a mechanism to figure out what size to try in the "real"
> tests...
>
>>>> As it was, most of the GL_TEXTURE_3D tests were returning 'skip'
>>>> results because we couldn't allocate a 2048^3 or 1024^3 texture.
>>>> Now we should get pass/fail/crash when we try creating an N^3
>>>> texture when OpenGL told us that N should work.
>>>
>>> Which hardware, if any, have you tried this on?  Any closed source
>>> drivers?
>>
>> Yes, NVIDIA's driver.  The test behaves the same way before and after
>> this change.  NVIDIA's proxy texture tests always pass for the max
>> advertised texture size.  Ex: it happily says a 2048^3 x RGBA32F 3D
>> texture is doable.  But then our call to calloc() fails the test just
>> reports 'skip'.
>
> I'm not clear whether we actually want to calloc data to pass to
> TexImage.  It seems like passing NULL ought to be sufficient, since the
> driver should still allocate storage for it (so it could be populated
> via rendering)...but maybe that could be deferred.

The glTexImage() calls as-is now pass pixels=NULL.  It's only the 
glTexSubImage() calls that use the calloc'd memory.


> It seems like calloc'ing a huge amount of data just increases the
> likelihood of GL_OUT_OF_MEMORY errors....
>
>> But I've also found that this test (NVIDIA) is sensitive to whatever
>> else might be running.  In my first run I also had several VMs running
>> on my system (using a fair amount of RAM and VRAM) and max-texture-size
>> hung my system when it was testing a 16384 RGBA32F cube map.
>>
>> I'm curious what AMD's driver does.
>>
>> -Brian
>
> Whatever you want to do here is probably fine.  I was mostly working on
> it because I needed to raise our driver's limit to make an application
> work, and discovered there was no way I could pass the piglit test as
> written...even though there wasn't a bug in my driver.
>

Can I get an R-b?  I'll do another patch which changes glTexSubImage() 
to just do a 1x1 subimage to avoid the large calloc() issue.

-Brian



More information about the Piglit mailing list