mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
main/format: skip format conversion if src and dst format are equal
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@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
51e7879544
commit
eab078f132
1 changed files with 14 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* Handle the cases where we can directly unpack */
|
||||
if (!src_format_is_mesa_array_format) {
|
||||
if (dst_array_format == RGBA32_FLOAT) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue