mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-02 14:43:59 +08:00
gallium: handle copy_image of depth textures
copy_image calls blit now for multisampled images, including depth. But blit explicitly uses only PIPE_MASK_RGBA, so it is incapable of copying depth buffers. This patch checks the destination format and uses PIPE_MASK_ZS if it is a depth or stencil. Ideally we would simply use PIPE_MASK_RGBAZS always, but not all drivers actually handle getting this mask (they probably should, but that's another story). The change to copy_image was in5027b5aa2
, so in some sense this patch "fixes" that. In fact though the issue wasn't in the copy_image change, it was always latent in blit(). Fixes:5027b5aa28
("gallium: stop calling resource_copy_region for multisampled copy_image") Signed-off-by: Eric R. Smith <eric.smith@collabora.com> Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28585>
This commit is contained in:
parent
d5aefb7a16
commit
0cb852050d
@ -282,7 +282,10 @@ blit(struct pipe_context *pipe,
|
||||
blit.src.box = *src_box;
|
||||
u_box_3d(dstx, dsty, dstz, src_box->width, src_box->height,
|
||||
src_box->depth, &blit.dst.box);
|
||||
blit.mask = PIPE_MASK_RGBA;
|
||||
if (util_format_is_depth_or_stencil(dst_format))
|
||||
blit.mask = PIPE_MASK_ZS;
|
||||
else
|
||||
blit.mask = PIPE_MASK_RGBA;
|
||||
blit.filter = PIPE_TEX_FILTER_NEAREST;
|
||||
|
||||
pipe->blit(pipe, &blit);
|
||||
|
Loading…
Reference in New Issue
Block a user