On Wed, Aug 16, 2017 at 11:32 AM, Karol Herbst <[email protected]> wrote:
> Fixes 'KHR-GL45.copy_image.functional' on Nouveau > > Signed-off-by: Karol Herbst <[email protected]> > --- > 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) { > I think this is the right thing to do in general but I think the code belongs in a different place. In particular, At the top of the first "if (!rebase_swizzle) {", we want something like if ((dst_format_is_mesa_array_format && src_format_is_mesa_array_format && src_array_format == dst_array_format) || src_format == dst_format) { for (row = 0; row < height; row++) { memcpy(dst, src, width * format_size); src += src_stride; dst += dst_stride; } return; } > tmp_uint = malloc(width * height * sizeof(*tmp_uint)); > > /* The [un]packing functions for unsigned datatypes treat the 32-bit > -- > 2.14.1 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
