mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 19:30:12 +01:00
v3dv: fix 3D image blits
Specifically, we should select the slice to blit from on the source image to be in the middle of the depth step. This issue was only raised recently after the CTS improved the 3D blitting tests. Fixes: dEQP-VK.api.copy_and_blit.core.blit_image.all_formats.*.3d.* Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
This commit is contained in:
parent
0d046516f3
commit
07828c0456
1 changed files with 9 additions and 2 deletions
|
|
@ -4033,8 +4033,15 @@ blit_shader(struct v3dv_cmd_buffer *cmd_buffer,
|
|||
if (!job)
|
||||
goto fail;
|
||||
|
||||
if (src->type == VK_IMAGE_TYPE_3D)
|
||||
tex_coords[4] = (min_src_layer + i * src_z_step) / (float)src_level_d;
|
||||
/* For 3D blits we need to compute the source slice to blit from (the Z
|
||||
* coordinate of the source sample operation). We want to choose this
|
||||
* based on the ratio of the depth of the source and the destination
|
||||
* images, picking the coordinate in the middle of each step.
|
||||
*/
|
||||
if (src->type == VK_IMAGE_TYPE_3D) {
|
||||
tex_coords[4] =
|
||||
(min_src_layer + (i + 0.5f) * src_z_step) / (float)src_level_d;
|
||||
}
|
||||
|
||||
v3dv_CmdPushConstants(_cmd_buffer,
|
||||
device->meta.blit.playout,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue