[PATCH 0/8] Add DRIimage-based DRI3/Present loader
Keith Packard
keithp at keithp.com
Tue Nov 5 08:40:22 PST 2013
Keith Packard <keithp at keithp.com> writes:
> This sequence first adds a a couple of new DRIimage extensions to the
> dri/common, dri/i915 and dri/i965 directories which define a
> loader-independent API for managing window system operations.
>
> The last patch adds a new DRI3000 loader using those new interfaces.
I've figured out that I can also re-use dri2CreateNewScreen2 for the
image driver bits, as long as I change that function to also look up the
image loader. That means there are *no* new dri_util functions needed.
To recap, the changes needed to support using the DRIimageExtension
interfaces for allocating buffers from the driver in the loader are:
DRIimageDriverExtension
A proper subset of DRIdri2DriverExtension, which uses
the same five functions involved in creating new objects:
/* Common DRI functions, shared with DRI2 */
__DRIcreateNewScreen2 createNewScreen2;
__DRIcreateNewDrawable createNewDrawable;
__DRIcreateNewContext createNewContext;
__DRIcreateContextAttribs createContextAttribs;
__DRIgetAPIMask getAPIMask;
DRIimageLoaderExtension
Contains just two functions, one to allocate buffers and one to
copy the fake front to the real front when flushing stuff.
/**
* Allocate color buffers.
*
* \param driDrawable
* \param width Width of allocated buffers
* \param height Height of allocated buffers
* \param format one of __DRI_IMAGE_FORMAT_*
* \param stamp Address of variable to be updated when
* getBuffers must be called again
* \param loaderPrivate The loaderPrivate for driDrawable
* \param buffer_mask Set of buffers to allocate
* \param buffers Returned buffers
*/
int (*getBuffers)(__DRIdrawable *driDrawable,
int *width, int *height,
unsigned int format,
uint32_t *stamp,
void *loaderPrivate,
uint32_t buffer_mask,
struct __DRIimageList *buffers);
/**
* Flush pending front-buffer rendering
*
* Any rendering that has been performed to the
* fake front will be flushed to the front
*
* \param driDrawable Drawable whose front-buffer is to be flushed
* \param loaderPrivate Loader's private data that was previously passed
* into __DRIdri2ExtensionRec::createNewDrawable
*/
void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate);
Each driver will need to have a path to use the image loader to get
color buffers using the DRIimageLoaderExtension getBuffers function.
--
keith.packard at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20131105/1166c68b/attachment.pgp>
More information about the dri-devel
mailing list