On 01/29/2015 11:30 AM, Daniel Vetter wrote: > On Wed, Jan 28, 2015 at 05:57:56PM +0000, Tvrtko Ursulin wrote: >> >> On 01/28/2015 05:37 PM, Daniel Vetter wrote: >>> From: Rob Clark <robdclark at gmail.com> >>> >>> In DRM/KMS we are lacking a good way to deal with tiled/compressed >>> formats. Especially in the case of dmabuf/prime buffer sharing, where >>> we cannot always rely on under-the-hood flags passed to driver specific >>> gem-create ioctl to pass around these extra flags. >>> >>> The proposal is to add a per-plane format modifier. This allows to, if >>> necessary, use different tiling patters for sub-sampled planes, etc. >>> The format modifiers are added at the end of the ioctl struct, so for >>> legacy userspace it will be zero padded. >>> >>> TODO how best to deal with assignment of modifier token values? The >>> rough idea was to namespace things with an 8bit vendor-id, and then >>> beyond that it is treated as an opaque value. But that was a relatively >>> arbitrary choice. There are cases where same tiling pattern and/or >>> compression is supported by various different vendors. So we should >>> standardize to use the vendor-id and value of the first one who >>> documents the format? >> >> Maybe: >> __u64 modifier[4]; >> __u64 vendor_modifier[4]; > > Seems rendundant since the modifier added in this patch is already vendor > specific. Or what exactly are you trying to accomplish here?
I am trying to avoid packet-in-a-packet (bitmasks) mumbo-jumbo and vendor id on the head followed by maybe standardized or maybe vendor specific tag. Feels funny. Would it not be simpler to put a struct in there? But I was not following this from the start so maybe I am missing something.. Regards, Tvrtko