[Xcb] [Intel-gfx] [PATCH] Add DRI2 protocol, based off of dri2proto.h and the server code.

Julien Cristau jcristau at debian.org
Thu Oct 15 15:29:36 PDT 2009


On Thu, Oct 15, 2009 at 14:25:46 -0700, Eric Anholt wrote:

> diff --git a/src/dri2.xml b/src/dri2.xml
> new file mode 100644
> index 0000000..4d77f72
> --- /dev/null
> +++ b/src/dri2.xml
> @@ -0,0 +1,136 @@
> +<?xml version="1.0" encoding="utf-8"?>
> +<!--
> +Copyright (C) 2005 Jeremy Kolb.
> +All Rights Reserved.

This copyright notice seems wrong?

> +
> +Permission is hereby granted, free of charge, to any person ob/Sintaining a copy

s,/Sin,,

> +of this software and associated documentation files (the "Software"), to deal
> +in the Software without restriction, including without limitation the rights
> +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +copies of the Software, and to permit persons to whom the Software is
> +furnished to do so, subject to the following conditions:
> +
> +The above copyright notice and this permission notice shall be included in all
[...]
> +
> +<xcb header="dri2" extension-xname="DRI2" extension-name="DRI2"
> +    major-version="1" minor-version="1">
> +
> +    <!-- Types -->
> +
> +    <struct name="DRI2Buffer">
> +	<field type="CARD32" name="attachment" />

attachment could get an enum, I think.

> +	<field type="CARD32" name="name" />
> +	<field type="CARD32" name="pitch" />
> +	<field type="CARD32" name="cpp" />
> +	<field type="CARD32" name="flags" />
> +    </struct>
> +
> +    <struct name="GetBuffersWithFormatAttachment">
> +	<field type="CARD32" name="attachment" />
> +	<field type="CARD32" name="format" />
> +    </struct>
> +

dri2proto.txt calls this DRI2ATTACH_FORMAT, so maybe
name="AttachFormat"?

> +    <!-- Requests -->
> +    <request name="QueryVersion" opcode="0">
> +	<field type="CARD32" name="major_version" />
> +	<field type="CARD32" name="minor_version" />
> +	<reply>
> +	    <pad bytes="1" />
> +	    <field type="CARD32" name="major_version" />
> +	    <field type="CARD32" name="minor_version" />
> +	    <pad bytes="16" />

I think you can omit the trailing padding from replies.

> +	</reply>
> +    </request>
> +
> +    <request name="Connect" opcode="1">
> +	<field type="CARD32" name="window" />
> +	<field type="CARD32" name="driver_type" />

maybe add an enum for driver_type as well.

> +	<reply>
> +	    <pad bytes="1" />
> +	    <field type="CARD32" name="driver_name_length" />
> +	    <field type="CARD32" name="device_name_length" />
> +	    <pad bytes="16" />
> +	    <list type="char" name="driver_name">
> +		<fieldref>driver_name_length</fieldref>
> +	    </list>
> +	    <list type="char" name="device_name">
> +		<fieldref>device_name_length</fieldref>
> +	    </list>
> +	</reply>
> +    </request>
> +
> +    <request name="Authenticate" opcode="2">
> +	<field type="CARD32" name="window" />

type="WINDOW" works, if you add '<import>xproto</import>'

> +	<field type="CARD32" name="magic" />
> +	<reply>
> +	    <pad bytes="1" />
> +	    <field type="CARD32" name="authenticated" />
> +	    <pad bytes="20" />
> +	</reply>
> +    </request>
> +
> +    <request name="CreateDrawable" opcode="3">
> +	<field type="CARD32" name="drawable" />
> +    </request>
> +
> +    <request name="DestroyDrawable" opcode="4">
> +	<field type="CARD32" name="drawable" />
> +    </request>

type="DRAWABLE" for these two.

> +
> +    <request name="GetBuffers" opcode="5">
> +	<field type="CARD32" name="drawable" />
> +	<field type="CARD32" name="count" />
> +	<list type="CARD32" name="attachments" />

should this list have a <fieldref>count</fieldref>?  I guess it's not
necessary since the length can be deduced from the request length...

> +	<reply>
> +	    <pad bytes="1" />
> +	    <field type="CARD32" name="width" />
> +	    <field type="CARD32" name="height" />
> +	    <field type="CARD32" name="count" />
> +	    <list type="DRI2Buffer" name="buffers">
> +		<fieldref>count</fieldref>
> +	    </list>
> +	    <pad bytes="12" />

the list should be after the padding, afaict?

> +	</reply>
> +    </request>
> +
> +    <request name="CopyRegion" opcode="6">
> +	<field type="CARD32" name="drawable" />
> +	<field type="CARD32" name="region" />
> +	<field type="CARD32" name="dest" />
> +	<field type="CARD32" name="src" />
> +	<reply>
> +	    <pad bytes="1" />
> +	    <pad bytes="24" />
> +	</reply>
> +    </request>
> +
> +    <request name="GetBuffersWithFormat" opcode="7">
> +	<field type="CARD32" name="drawable" />
> +	<field type="CARD32" name="count" />
> +	<list type="GetBuffersWithFormatAttachment" name="attachments" />
> +	<reply>
> +	    <pad bytes="1" />
> +	    <field type="CARD32" name="width" />
> +	    <field type="CARD32" name="height" />
> +	    <field type="CARD32" name="count" />
> +	    <list type="DRI2Buffer" name="buffers">
> +		<fieldref>count</fieldref>
> +	    </list>
> +	    <pad bytes="12" />

same as above for pad vs list ordering.

> +	</reply>
> +    </request>
> +</xcb>

Cheers,
Julien


More information about the Xcb mailing list