[Mesa-dev] [PATCH] st/mesa: align cube map arrays layers
Marek Olšák
maraeo at gmail.com
Thu Apr 9 05:34:57 PDT 2015
On Wed, Apr 8, 2015 at 2:43 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Tue, Apr 7, 2015 at 8:02 PM, Dave Airlie <airlied at gmail.com> wrote:
>> From: Dave Airlie <airlied at redhat.com>
>>
>> We create textures internally for texsubimage, and we use
>> the values from sub image to create a new texture, however
>> we don't align these to valid sizes, and cube map arrays
>> must have an array size aligned to 6.
>>
>> This fixes texsubimage cube_map_array on CAYMAN at least,
>> (it was causing GPU hang and bad values), it probably
>> also fixes it on radeonsi and evergreen.
>>
>> Signed-off-by: Dave Airlie <airlied at redhat.com>
>> ---
>> src/mesa/state_tracker/st_texture.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/src/mesa/state_tracker/st_texture.c b/src/mesa/state_tracker/st_texture.c
>> index ca7c83c..5c9a09c 100644
>> --- a/src/mesa/state_tracker/st_texture.c
>> +++ b/src/mesa/state_tracker/st_texture.c
>> @@ -177,6 +177,8 @@ st_gl_texture_dims_to_pipe_dims(GLenum texture,
>> *widthOut = widthIn;
>> *heightOut = heightIn;
>> *depthOut = 1;
>> + if (depthIn % 6)
>> + depthIn = util_align_npot(depthIn, 6);
>> *layersOut = depthIn;
>
> I'd just do this as
>
> *layersOut = util_align_npot(depthIn, 6)
>
> But I assume this is the st_TexSubImage caller? Then I bet that instead
>
> /* TexSubImage only sets a single cubemap face. */
> if (gl_target == GL_TEXTURE_CUBE_MAP) {
> gl_target = GL_TEXTURE_2D;
> }
>
> Should be changed to account for cube map arrays...
No, cube maps use TexSubImage2D, but cube map arrays use TexSubImage3D.
Marek
More information about the mesa-dev
mailing list