[PATCH] drm: fourcc byteorder: brings header file comments in line with reality.
Christian König
christian.koenig at amd.com
Fri Apr 21 13:27:47 UTC 2017
Adding Harry to this mail thread as well, cause is one of the people
really affected by this.
Christian.
Am 21.04.2017 um 15:21 schrieb Christian König:
> Am 21.04.2017 um 15:12 schrieb Gerd Hoffmann:
>> Hi,
>>
>>>> "native" to me feels more like "native to the GPU" since these things
>>>> really are tied to the GPU not the CPU. That's also why I went with
>>>> the
>>>> explicit endianness originally so that the driver could properly
>>>> declare
>>>> what the GPU supports.
>>> And to be honest I would really prefer to stick with that approach for
>>> exactly that reason.
>>>
>>> The proposed change would require that drivers have different code path
>>> for different CPU byte order. Those code path tend to be not tested
>>> very
>>> well and are additional complexity we probably don't want inside the
>>> driver.
>> We can add fixed-endian #defines without too much effort, at least for
>> the 8 bits per color formats. In qemu we have the same problem, only
>> with pixman. Those formats are native endian too, but often we have to
>> handle a fixed format, so we did this:
>>
>> /*
>> * pixman image formats are defined to be native endian,
>> * that means host byte order on qemu. So we go define
>> * fixed formats here for cases where it is needed, like
>> * feeding libjpeg / libpng and writing screenshots.
>> */
>>
>> #ifdef HOST_WORDS_BIGENDIAN
>> # define PIXMAN_BE_r8g8b8 PIXMAN_r8g8b8
>> # define PIXMAN_BE_x8r8g8b8 PIXMAN_x8r8g8b8
>> # define PIXMAN_BE_a8r8g8b8 PIXMAN_a8r8g8b8
>> # define PIXMAN_BE_b8g8r8x8 PIXMAN_b8g8r8x8
>> # define PIXMAN_BE_b8g8r8a8 PIXMAN_b8g8r8a8
>> # define PIXMAN_BE_r8g8b8x8 PIXMAN_r8g8b8x8
>> # define PIXMAN_BE_r8g8b8a8 PIXMAN_r8g8b8a8
>> # define PIXMAN_BE_x8b8g8r8 PIXMAN_x8b8g8r8
>> # define PIXMAN_BE_a8b8g8r8 PIXMAN_a8b8g8r8
>> # define PIXMAN_LE_x8r8g8b8 PIXMAN_b8g8r8x8
>> #else
>> # define PIXMAN_BE_r8g8b8 PIXMAN_b8g8r8
>> # define PIXMAN_BE_x8r8g8b8 PIXMAN_b8g8r8x8
>> # define PIXMAN_BE_a8r8g8b8 PIXMAN_b8g8r8a8
>> # define PIXMAN_BE_b8g8r8x8 PIXMAN_x8r8g8b8
>> # define PIXMAN_BE_b8g8r8a8 PIXMAN_a8r8g8b8
>> # define PIXMAN_BE_r8g8b8x8 PIXMAN_x8b8g8r8
>> # define PIXMAN_BE_r8g8b8a8 PIXMAN_a8b8g8r8
>> # define PIXMAN_BE_x8b8g8r8 PIXMAN_r8g8b8x8
>> # define PIXMAN_BE_a8b8g8r8 PIXMAN_r8g8b8a8
>> # define PIXMAN_LE_x8r8g8b8 PIXMAN_x8r8g8b8
>> #endif
>
> Exactly what Mesa did as well.
>
>>> My personal opinion is that formats in drm_fourcc.h should be
>>> independent of the CPU byte order and the function
>>> drm_mode_legacy_fb_format() and drivers depending on that incorrect
>>> assumption be fixed instead.
>> The problem is this isn't a kernel-internal thing any more. With the
>> addition of the ADDFB2 ioctl the fourcc codes became part of the
>> kernel/userspace abi ...
>
> I know and that's exactly the reason I'm going to object those changes.
>
> The kernel/userspace abi is fixed and changing it like this could
> potentially break drivers I'm the co-maintainer of. So that whole
> approach is a clear NAK from my side.
>
> If you find a driver or userspace which doesn't use the formats as
> defined in the comments of drm_fourcc.h the fix the driver instead of
> trying to adjust the common header to broken behavior. Cause the later
> will clearly cause problems with drivers who correctly implemented the
> interface.
>
> Regards,
> Christian.
>
>>
>> cheers,
>> Gerd
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the dri-devel
mailing list