[RFC dri3proto v2 1/10] Add modifier/multi-plane requests, bump to v1.1

Michel Dänzer michel at daenzer.net
Wed Aug 30 06:26:19 UTC 2017


On 30/08/17 01:45 PM, Louis-Francis Ratté-Boulianne wrote:
> From: Daniel Stone <daniels at collabora.com>
> 
> DRI3 version 1.1 adds support for explicit format modifiers, including
> multi-planar buffers.
> 
> Signed-off-by: Daniel Stone <daniels at collabora.com>
> Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb at collabora.com>

[...]

> @@ -164,4 +171,119 @@ typedef struct {
>  
>  #define sz_xDRI3FDFromFenceReply   32
>  
> +/* v1.1 */
> +
> +typedef struct {
> +    CARD8   reqType;
> +    CARD8   dri3ReqType;
> +    CARD16  length B16;
> +    CARD32  window B32;
> +    CARD8   depth;
> +    CARD8   bpp;
> +    CARD16  pad10 B16;
> +} xDRI3GetSupportedModifiersReq;
> +#define sz_xDRI3GetSupportedModifiersReq     12
> +
> +typedef struct {
> +    BYTE    type;   /* X_Reply */
> +    CARD8   pad1;
> +    CARD16  sequenceNumber B16;
> +    CARD32  length B32;
> +    CARD32  format B32;
> +    CARD32  numModifiers B32;
> +    CARD32  pad16 B32;
> +    CARD32  pad20 B32;
> +    CARD32  pad24 B32;
> +    CARD32  pad28 B32;
> +} xDRI3GetSupportedModifiersReply;
> +#define sz_xDRI3GetSupportedModifiersReply   32

The reply has a format member...


> @@ -199,6 +202,164 @@ The name of this extension is "DRI3"
>  	associated with a direct rendering device that 'fence' can
>  	work with, otherwise a Match error results.
>  
> +┌───
> +    DRI3GetSupportedModifiers
> +	window: WINDOW
> +	depth: CARD8
> +	bpp: CARD8
> +      ▶
> +	num_modifiers: CARD32
> +	modifiers: ListOfCARD32
> +└───
> +	Errors: Window, Match
> +
> +	For the Screen associated with 'window', return a list of
> +	supported DRM FourCC modifiers, as defined in drm_fourcc.h,
> +	supported for DRI3 pixmap/buffer interchange.
> +	Each modifier is returned as returned as a CARD32
> +	containing the most significant 32 bits, followed by a
> +	CARD32 containing the least significant 32 bits. The hi/lo
> +	pattern repeats 'num_modifiers' times, thus there are
> +	'2 * num_modifiers' CARD32 elements returned.

... but it's not documented here...


> +┌───
> +    DRI3GetSupportedModifiers
> +	1	CARD8			major opcode
> +	1	7			DRI3 opcode
> +	2	3			length
> +	4	Window			window
> +	1	CARD8			depth
> +	1	CARD8			bpp
> +	2				unused
> +      ▶
> +	1	1			Reply
> +        1	0			unused
> +	2	CARD16			sequence number
> +	4	CARD32			reply length
> +	4	CARD32			num_modifiers
> +	20				unused
> +
> +	4	ListOfCARD32		modifiers[2*num_modifiers]
> +└───

... or here.


It doesn't seem to get assigned by the xserver code either. A leftover?
(I just happened to notice this, there might be other similar issues)


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the xorg-devel mailing list