mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-02 11:00:27 +01:00
st/pbo_compute: use different calc for non-3d compute buffer sizing
this avoids looking at irrelevant 3d pixelstore params like GL_PACK_IMAGE_HEIGHT when they don't apply, which will cause the storage buffer to be incorrectly sized and break the operation Fixes:e7b9561959("gallium: implement compute pbo download") Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16728> (cherry picked from commit70fb3a4700)
This commit is contained in:
parent
43f90a3640
commit
af16f82e15
2 changed files with 7 additions and 2 deletions
|
|
@ -661,7 +661,7 @@
|
|||
"description": "st/pbo_compute: use different calc for non-3d compute buffer sizing",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "e7b95619596167025d26f07efb04dc5bfd5e9aee"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -919,7 +919,12 @@ download_texture_compute(struct st_context *st,
|
|||
}
|
||||
|
||||
/* Set up destination buffer */
|
||||
unsigned img_stride = _mesa_image_image_stride(pack, width, height, format, type);
|
||||
unsigned img_stride = src->target == PIPE_TEXTURE_3D ||
|
||||
src->target == PIPE_TEXTURE_2D_ARRAY ||
|
||||
src->target == PIPE_TEXTURE_CUBE_ARRAY ?
|
||||
/* only use image stride for 3d images to avoid pulling in IMAGE_HEIGHT pixelstore */
|
||||
_mesa_image_image_stride(pack, width, height, format, type) :
|
||||
_mesa_image_row_stride(pack, width, format, type) * height;
|
||||
unsigned buffer_size = (depth + (dim == 3 ? pack->SkipImages : 0)) * img_stride;
|
||||
{
|
||||
dst = pipe_buffer_create(screen, PIPE_BIND_SHADER_BUFFER, PIPE_USAGE_STAGING, buffer_size);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue