[Mesa-dev] [RFC PATCH 2/2] main/format: skip format conversion if src and dst format are equal

Karol Herbst karolherbst at gmail.com
Wed Aug 16 18:32:42 UTC 2017


Fixes 'KHR-GL45.copy_image.functional' on Nouveau

Signed-off-by: Karol Herbst <karolherbst at gmail.com>
---
 src/mesa/main/format_utils.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/format_utils.c b/src/mesa/main/format_utils.c
index d16d69c379..a3ddaebb2e 100644
--- a/src/mesa/main/format_utils.c
+++ b/src/mesa/main/format_utils.c
@@ -485,7 +485,11 @@ _mesa_format_convert(void *void_dst, uint32_t dst_format, size_t dst_stride,
 
    assert(src_integer == dst_integer);
 
-   if (src_integer && dst_integer) {
+   /* do a simply memcpy if applicable */
+   if (dst_format == src_format && dst_stride == src_stride &&
+       !dst_format_is_mesa_array_format && !rebase_swizzle) {
+      memcpy(dst, src, src_stride * height);
+   } else if (src_integer && dst_integer) {
       tmp_uint = malloc(width * height * sizeof(*tmp_uint));
 
       /* The [un]packing functions for unsigned datatypes treat the 32-bit
-- 
2.14.1



More information about the mesa-dev mailing list