Module: Mesa Branch: staging/22.2 Commit: 6ce21ce91043b9e67ae307b889a0947fb565b2cd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ce21ce91043b9e67ae307b889a0947fb565b2cd
Author: Pierre-Eric Pelloux-Prayer <[email protected]> Date: Thu Sep 8 09:47:59 2022 +0200 mesa: avoid reading back textures from VRAM This can be very slow on dGPU. I tried a different version that would allocate a full row and then do a single memcpy per row but the performance was similar so I kept the simple version. Cc: mesa-stable Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Emma Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18484> (cherry picked from commit a5b1a811053eef74e8e0353ebbe2bb9c68e5c26b) --- .pick_status.json | 2 +- src/mesa/main/texstore.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 38e82725b4f..5038058cdac 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -526,7 +526,7 @@ "description": "mesa: avoid reading back textures from VRAM", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index 7caaa62f20f..8679b52bb77 100755 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -449,7 +449,7 @@ _mesa_texstore_s8_z24(TEXSTORE_PARAMS) /* the 24 depth bits will be in the low position: */ _mesa_unpack_depth_span(ctx, srcWidth, GL_UNSIGNED_INT, /* dst type */ - keepstencil ? depth : dstRow, /* dst addr */ + depth, /* dst addr */ depthScale, srcType, src, srcPacking); @@ -463,7 +463,9 @@ _mesa_texstore_s8_z24(TEXSTORE_PARAMS) /* merge stencil values into depth values */ for (i = 0; i < srcWidth; i++) { - if (keepstencil) + if (!keepstencil && !keepdepth) + dstRow[i] = depth[i] | (stencil[i] << 24); + else if (keepstencil) dstRow[i] = depth[i] | (dstRow[i] & 0xFF000000); else dstRow[i] = (dstRow[i] & 0xFFFFFF) | (stencil[i] << 24);
