[Mesa-dev] [PATCH v2 2/2] main/format: skip format conversion if src and dst format are equal
Karol Herbst
karolherbst at gmail.com
Sun Oct 8 16:44:34 UTC 2017
thanks for improving that Patch for me. Currently a bit occupied with
other things, but hopefully I can back to fixing bugs for CTS next
month!
Anyhow, test is passing for me on Nouveau and i965 with the updated patches.
On Sat, Oct 7, 2017 at 10:42 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> From: Karol Herbst <karolherbst at gmail.com>
>
> Fixes 'KHR-GL45.copy_image.functional' on Nouveau and i965.
>
> v2: (by Kenneth Graunke)
> Rewrite patch according to Jason Ekstrand's review feedback.
> This makes it handle differing strides, which i965 needed.
>
> Signed-off-by: Karol Herbst <karolherbst at gmail.com>
> ---
> src/mesa/main/format_utils.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/src/mesa/main/format_utils.c b/src/mesa/main/format_utils.c
> index d16d69c3795..31580750bd4 100644
> --- a/src/mesa/main/format_utils.c
> +++ b/src/mesa/main/format_utils.c
> @@ -312,6 +312,20 @@ _mesa_format_convert(void *void_dst, uint32_t dst_format, size_t dst_stride,
> * enable it for specific combinations that are known to work.
> */
> if (!rebase_swizzle) {
> + /* Do a direct memcpy where possible */
> + if ((dst_format_is_mesa_array_format &&
> + src_format_is_mesa_array_format &&
> + src_array_format == dst_array_format) ||
> + src_format == dst_format) {
> + int format_size = _mesa_get_format_bytes(src_format);
> + for (row = 0; row < height; row++) {
> + memcpy(dst, src, width * format_size);
> + src += src_stride;
> + dst += dst_stride;
> + }
in my first draft I actually had a for loop like that, but I was using
width * src_stride and then came up with the idea of doing just one
memcpy. But I guess it isn't possible now and maybe it was even wrong
before.
> + return;
> + }
> +
> /* Handle the cases where we can directly unpack */
> if (!src_format_is_mesa_array_format) {
> if (dst_array_format == RGBA32_FLOAT) {
> --
> 2.14.2
>
More information about the mesa-dev
mailing list