From: Junyan He <junyan...@intel.com> Signed-off-by: Junyan He <junyan...@intel.com> --- src/CMakeLists.txt | 4 +- src/gen/x11/dricommon.c | 333 ++++++++++++++++++++++++++++++++++++++++++++ src/gen/x11/dricommon.h | 99 +++++++++++++ src/gen/x11/va_dri2.c | 327 +++++++++++++++++++++++++++++++++++++++++++ src/gen/x11/va_dri2.h | 89 ++++++++++++ src/gen/x11/va_dri2str.h | 211 ++++++++++++++++++++++++++++ src/gen/x11/va_dri2tokens.h | 66 +++++++++ src/x11/dricommon.c | 333 -------------------------------------------- src/x11/dricommon.h | 99 ------------- src/x11/va_dri2.c | 327 ------------------------------------------- src/x11/va_dri2.h | 89 ------------ src/x11/va_dri2str.h | 211 ---------------------------- src/x11/va_dri2tokens.h | 66 --------- 13 files changed, 1127 insertions(+), 1127 deletions(-) create mode 100644 src/gen/x11/dricommon.c create mode 100644 src/gen/x11/dricommon.h create mode 100644 src/gen/x11/va_dri2.c create mode 100644 src/gen/x11/va_dri2.h create mode 100644 src/gen/x11/va_dri2str.h create mode 100644 src/gen/x11/va_dri2tokens.h delete mode 100644 src/x11/dricommon.c delete mode 100644 src/x11/dricommon.h delete mode 100644 src/x11/va_dri2.c delete mode 100644 src/x11/va_dri2.h delete mode 100644 src/x11/va_dri2str.h delete mode 100644 src/x11/va_dri2tokens.h
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 709dc10..91a772f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -111,8 +111,8 @@ if (X11_FOUND) set(CMAKE_C_FLAGS "-DHAS_X11 ${CMAKE_C_FLAGS}") set(OPENCL_SRC ${OPENCL_SRC} - x11/dricommon.c - x11/va_dri2.c) + gen/x11/dricommon.c + gen/x11/va_dri2.c) endif (X11_FOUND) if (CMRT_FOUND) diff --git a/src/gen/x11/dricommon.c b/src/gen/x11/dricommon.c new file mode 100644 index 0000000..92623d9 --- /dev/null +++ b/src/gen/x11/dricommon.c @@ -0,0 +1,333 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Benjamin Segovia <benjamin.sego...@intel.com> + * Note: the code is taken from libva code base + */ + +/* + * Permission is hereby granted, free of charge, to any person obtaining a + * copy 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, sub license, 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 (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include <X11/Xlibint.h> +#include <X11/Xlib.h> +#include "va_dri2.h" +#include "va_dri2tokens.h" +#include "dricommon.h" +#include "cl_utils.h" +#include "cl_alloc.h" + +#include <stdlib.h> +#include <fcntl.h> +#include <unistd.h> +#include <assert.h> + +#define LOCAL __attribute__ ((visibility ("internal"))) + +LOCAL dri_drawable_t* +dri_state_do_drawable_hash(dri_state_t *state, XID drawable) +{ + int index = drawable % DRAWABLE_HASH_SZ; + struct dri_drawable *dri_drawable = state->drawable_hash[index]; + + while (dri_drawable) { + if (dri_drawable->x_drawable == drawable) + return dri_drawable; + dri_drawable = dri_drawable->next; + } + + dri_drawable = dri_state_create_drawable(state, drawable); + if(dri_drawable == NULL) + return NULL; + + dri_drawable->x_drawable = drawable; + dri_drawable->next = state->drawable_hash[index]; + state->drawable_hash[index] = dri_drawable; + + return dri_drawable; +} + +LOCAL void +dri_state_free_drawable_hash(dri_state_t *state) +{ + int i; + struct dri_drawable *dri_drawable, *prev; + + for (i = 0; i < DRAWABLE_HASH_SZ; i++) { + dri_drawable = state->drawable_hash[i]; + + while (dri_drawable) { + prev = dri_drawable; + dri_drawable = prev->next; + dri_state_destroy_drawable(state, prev); + } + } +} + +LOCAL dri_drawable_t* +dri_state_get_drawable(dri_state_t *state, XID drawable) +{ + return dri_state_do_drawable_hash(state, drawable); +} + +LOCAL void +dri_state_init_drawable_hash_table(dri_state_t *state) +{ + int i; + for(i=0; i < DRAWABLE_HASH_SZ; i++) + state->drawable_hash[i] = NULL; +} + +LOCAL void +dri_state_delete(dri_state_t *state) +{ + if (state == NULL) + return; + dri_state_close(state); + CL_FREE(state); +} + +LOCAL dri_state_t* +dri_state_new(void) +{ + dri_state_t *state = NULL; + TRY_ALLOC_NO_ERR (state, CL_CALLOC(1, sizeof(dri_state_t))); + state->fd = -1; + state->driConnectedFlag = NONE; + dri_state_init_drawable_hash_table(state); + +exit: + return state; +error: + dri_state_delete(state); + state = NULL; + goto exit; +} + +#define __DRI_BUFFER_FRONT_LEFT 0 +#define __DRI_BUFFER_BACK_LEFT 1 +#define __DRI_BUFFER_FRONT_RIGHT 2 +#define __DRI_BUFFER_BACK_RIGHT 3 +#define __DRI_BUFFER_DEPTH 4 +#define __DRI_BUFFER_STENCIL 5 +#define __DRI_BUFFER_ACCUM 6 +#define __DRI_BUFFER_FAKE_FRONT_LEFT 7 +#define __DRI_BUFFER_FAKE_FRONT_RIGHT 8 + +typedef struct dri2_drawable +{ + struct dri_drawable base; + union dri_buffer buffers[5]; + int width; + int height; + int has_backbuffer; + int back_index; + int front_index; +} dri2_drawable_t; + +LOCAL dri_drawable_t* +dri_state_create_drawable(dri_state_t *state, XID x_drawable) +{ + dri2_drawable_t *dri2_drwble; + dri2_drwble = (dri2_drawable_t*)CL_CALLOC(1, sizeof(*dri2_drwble)); + + if (!dri2_drwble) + return NULL; + + dri2_drwble->base.x_drawable = x_drawable; + dri2_drwble->base.x = 0; + dri2_drwble->base.y = 0; + VA_DRI2CreateDrawable(state->x11_dpy, x_drawable); + + return &dri2_drwble->base; +} + +LOCAL void +dri_state_destroy_drawable(dri_state_t *state, dri_drawable_t *dri_drwble) +{ + VA_DRI2DestroyDrawable(state->x11_dpy, dri_drwble->x_drawable); + free(dri_drwble); +} + +LOCAL void +dri_state_swap_buffer(dri_state_t *state, dri_drawable_t *dri_drwble) +{ + dri2_drawable_t *dri2_drwble = (dri2_drawable_t*)dri_drwble; + XRectangle xrect; + XserverRegion region; + + if (dri2_drwble->has_backbuffer) { + xrect.x = 0; + xrect.y = 0; + xrect.width = dri2_drwble->width; + xrect.height = dri2_drwble->height; + + region = XFixesCreateRegion(state->x11_dpy, &xrect, 1); + VA_DRI2CopyRegion(state->x11_dpy, dri_drwble->x_drawable, region, + DRI2BufferFrontLeft, DRI2BufferBackLeft); + XFixesDestroyRegion(state->x11_dpy, region); + } +} + +LOCAL union dri_buffer* +dri_state_get_rendering_buffer(dri_state_t *state, dri_drawable_t *dri_drwble) +{ + dri2_drawable_t *dri2_drwble = (dri2_drawable_t *)dri_drwble; + int i; + int count; + unsigned int attachments[5]; + VA_DRI2Buffer *buffers; + + i = 0; + attachments[i++] = __DRI_BUFFER_BACK_LEFT; + attachments[i++] = __DRI_BUFFER_FRONT_LEFT; + buffers = VA_DRI2GetBuffers(state->x11_dpy, + dri_drwble->x_drawable, + &dri2_drwble->width, + &dri2_drwble->height, + attachments, + i, + &count); + assert(buffers); + if (buffers == NULL) + return NULL; + + dri2_drwble->has_backbuffer = 0; + + for (i = 0; i < count; i++) { + dri2_drwble->buffers[i].dri2.attachment = buffers[i].attachment; + dri2_drwble->buffers[i].dri2.name = buffers[i].name; + dri2_drwble->buffers[i].dri2.pitch = buffers[i].pitch; + dri2_drwble->buffers[i].dri2.cpp = buffers[i].cpp; + dri2_drwble->buffers[i].dri2.flags = buffers[i].flags; + + if (buffers[i].attachment == __DRI_BUFFER_BACK_LEFT) { + dri2_drwble->has_backbuffer = 1; + dri2_drwble->back_index = i; + } + + if (buffers[i].attachment == __DRI_BUFFER_FRONT_LEFT) + dri2_drwble->front_index = i; + } + + dri_drwble->width = dri2_drwble->width; + dri_drwble->height = dri2_drwble->height; + Xfree(buffers); + + if (dri2_drwble->has_backbuffer) + return &dri2_drwble->buffers[dri2_drwble->back_index]; + + return &dri2_drwble->buffers[dri2_drwble->front_index]; +} + +LOCAL void +dri_state_close(dri_state_t *state) { + dri_state_free_drawable_hash(state); + assert(state->fd >= 0); + close(state->fd); +} + +LOCAL void +dri_state_release(dri_state_t *state) { + dri_state_delete(state); +} + +LOCAL dri_state_t* +getDRI2State(Display* dpy, int screen, char **driver_name) +{ + int major, minor; + int error_base; + int event_base; + char *device_name = NULL; + drm_magic_t magic; + char * internal_driver_name = NULL; + int fd = -1; + dri_state_t* state = NULL; + + if (!VA_DRI2QueryExtension(dpy, &event_base, &error_base)) + goto err_out; + + if (!VA_DRI2QueryVersion(dpy, &major, &minor)) + goto err_out; + + + if (!VA_DRI2Connect(dpy, RootWindow(dpy, screen), + &internal_driver_name, &device_name)) + goto err_out; + + if(device_name != NULL ) + fd = open(device_name, O_RDWR); + + if (fd < 0) + goto err_out; + + if (drmGetMagic(fd, &magic)) + goto err_out; + + if (!VA_DRI2Authenticate(dpy, RootWindow(dpy, screen), + magic)) + goto err_out; + + if(driver_name) + *driver_name = internal_driver_name; + else + Xfree(internal_driver_name); + + state = dri_state_new(); + state->fd = fd; + state->x11_dpy = dpy; + state->x11_screen = screen; + state->driConnectedFlag = DRI2; + if (device_name) + Xfree(device_name); + return state; + +err_out: + if (device_name) + Xfree(device_name); + + if (internal_driver_name) + Xfree(internal_driver_name); + + if(driver_name) *driver_name = NULL; + + if (fd >= 0) + close(fd); + + if (driver_name) + *driver_name = NULL; + + return state; +} + diff --git a/src/gen/x11/dricommon.h b/src/gen/x11/dricommon.h new file mode 100644 index 0000000..aa3a50f --- /dev/null +++ b/src/gen/x11/dricommon.h @@ -0,0 +1,99 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Benjamin Segovia <benjamin.sego...@intel.com> + * Note: the code is taken from libva code base + */ + +/* + * Permission is hereby granted, free of charge, to any person obtaining a + * copy 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, sub license, 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 (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _VA_DRICOMMON_H_ +#define _VA_DRICOMMON_H_ + +#include <X11/Xlib.h> +#include <xf86drm.h> +#include <drm.h> +#include <drm_sarea.h> + +union dri_buffer +{ + struct { + unsigned int attachment; + unsigned int name; + unsigned int pitch; + unsigned int cpp; + unsigned int flags; + } dri2; +}; + +typedef struct dri_drawable +{ + XID x_drawable; + int x; + int y; + unsigned int width; + unsigned int height; + struct dri_drawable *next; +} dri_drawable_t; + +#define DRAWABLE_HASH_SZ 32 + +enum DRI_VER +{ + NONE = 0, + // NOT supported VA_DRI1 = 1, + DRI2 = 2 +}; + +typedef struct dri_state +{ + Display *x11_dpy; + int x11_screen; + int fd; + enum DRI_VER driConnectedFlag; /* 0: disconnected, 2: DRI2 */ + dri_drawable_t *drawable_hash[DRAWABLE_HASH_SZ]; +} dri_state_t; + +dri_drawable_t *dri_state_create_drawable(dri_state_t*, XID x_drawable); +void dri_state_destroy_drawable(dri_state_t*, dri_drawable_t*); +void dri_state_close(dri_state_t*); +void dri_state_release(dri_state_t*); + +// Create a dri2 state from dpy and screen +dri_state_t *getDRI2State(Display* dpy, int screen, char **driver_name); + +#endif /* _VA_DRICOMMON_H_ */ + diff --git a/src/gen/x11/va_dri2.c b/src/gen/x11/va_dri2.c new file mode 100644 index 0000000..b660da5 --- /dev/null +++ b/src/gen/x11/va_dri2.c @@ -0,0 +1,327 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Benjamin Segovia <benjamin.sego...@intel.com> + */ + +/* + * Copyright � 2008 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Soft- + * ware"), to deal in the Software without restriction, including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, provided that the above copyright + * notice(s) and this permission notice appear in all copies of the Soft- + * ware and that both the above copyright notice(s) and this permission + * notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- + * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- + * MANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall + * not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization of + * the copyright holder. + * + * Authors: + * Kristian H�gsberg (k...@redhat.com) + */ + +#define NEED_REPLIES +#include <X11/Xlibint.h> +#include <X11/extensions/Xext.h> +#include <X11/extensions/extutil.h> +#include "xf86drm.h" +#include "va_dri2.h" +#include "va_dri2str.h" +#include "va_dri2tokens.h" + +#ifndef DRI2DriverDRI +#define DRI2DriverDRI 0 +#endif + +#define LOCAL __attribute__ ((visibility ("internal"))) + +static char va_dri2ExtensionName[] = DRI2_NAME; +static XExtensionInfo _va_dri2_info_data; +static XExtensionInfo *va_dri2Info = &_va_dri2_info_data; +static XEXT_GENERATE_CLOSE_DISPLAY (VA_DRI2CloseDisplay, va_dri2Info) +static /* const */ XExtensionHooks va_dri2ExtensionHooks = { + NULL, /* create_gc */ + NULL, /* copy_gc */ + NULL, /* flush_gc */ + NULL, /* free_gc */ + NULL, /* create_font */ + NULL, /* free_font */ + VA_DRI2CloseDisplay, /* close_display */ + NULL, /* wire_to_event */ + NULL, /* event_to_wire */ + NULL, /* error */ + NULL, /* error_string */ +}; + +static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay, va_dri2Info, + va_dri2ExtensionName, + &va_dri2ExtensionHooks, + 0, NULL) + +LOCAL Bool VA_DRI2QueryExtension(Display *dpy, int *eventBase, int *errorBase) +{ + XExtDisplayInfo *info = DRI2FindDisplay(dpy); + + if (XextHasExtension(info)) { + *eventBase = info->codes->first_event; + *errorBase = info->codes->first_error; + return True; + } + + return False; +} + +LOCAL Bool VA_DRI2QueryVersion(Display *dpy, int *major, int *minor) +{ + XExtDisplayInfo *info = DRI2FindDisplay (dpy); + xDRI2QueryVersionReply rep; + xDRI2QueryVersionReq *req; + + XextCheckExtension (dpy, info, va_dri2ExtensionName, False); + + LockDisplay(dpy); + GetReq(DRI2QueryVersion, req); + req->reqType = info->codes->major_opcode; + req->dri2Reqtype = X_DRI2QueryVersion; + req->majorVersion = DRI2_MAJOR; + req->minorVersion = DRI2_MINOR; + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + *major = rep.majorVersion; + *minor = rep.minorVersion; + UnlockDisplay(dpy); + SyncHandle(); + + return True; +} + +LOCAL Bool VA_DRI2Connect(Display *dpy, XID window, + char **driverName, char **deviceName) +{ + XExtDisplayInfo *info = DRI2FindDisplay(dpy); + xDRI2ConnectReply rep; + xDRI2ConnectReq *req; + + XextCheckExtension (dpy, info, va_dri2ExtensionName, False); + + LockDisplay(dpy); + GetReq(DRI2Connect, req); + req->reqType = info->codes->major_opcode; + req->dri2Reqtype = X_DRI2Connect; + req->window = window; + req->drivertype = DRI2DriverDRI; + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + + if (rep.driverNameLength == 0 && rep.deviceNameLength == 0) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + + *driverName = Xmalloc(rep.driverNameLength + 1); + if (*driverName == NULL) { + _XEatData(dpy, + ((rep.driverNameLength + 3) & ~3) + + ((rep.deviceNameLength + 3) & ~3)); + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + _XReadPad(dpy, *driverName, rep.driverNameLength); + (*driverName)[rep.driverNameLength] = '\0'; + + *deviceName = Xmalloc(rep.deviceNameLength + 1); + if (*deviceName == NULL) { + Xfree(*driverName); + _XEatData(dpy, ((rep.deviceNameLength + 3) & ~3)); + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + _XReadPad(dpy, *deviceName, rep.deviceNameLength); + (*deviceName)[rep.deviceNameLength] = '\0'; + + UnlockDisplay(dpy); + SyncHandle(); + + return True; +} + +LOCAL Bool VA_DRI2Authenticate(Display *dpy, XID window, drm_magic_t magic) +{ + XExtDisplayInfo *info = DRI2FindDisplay(dpy); + xDRI2AuthenticateReq *req; + xDRI2AuthenticateReply rep; + + XextCheckExtension (dpy, info, va_dri2ExtensionName, False); + + LockDisplay(dpy); + GetReq(DRI2Authenticate, req); + req->reqType = info->codes->major_opcode; + req->dri2Reqtype = X_DRI2Authenticate; + req->window = window; + req->magic = magic; + + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + UnlockDisplay(dpy); + SyncHandle(); + return False; + } + + UnlockDisplay(dpy); + SyncHandle(); + + return rep.authenticated; +} + +LOCAL void VA_DRI2CreateDrawable(Display *dpy, XID drawable) +{ + XExtDisplayInfo *info = DRI2FindDisplay(dpy); + xDRI2CreateDrawableReq *req; + + XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName); + + LockDisplay(dpy); + GetReq(DRI2CreateDrawable, req); + req->reqType = info->codes->major_opcode; + req->dri2Reqtype = X_DRI2CreateDrawable; + req->drawable = drawable; + UnlockDisplay(dpy); + SyncHandle(); +} + +LOCAL void VA_DRI2DestroyDrawable(Display *dpy, XID drawable) +{ + XExtDisplayInfo *info = DRI2FindDisplay(dpy); + xDRI2DestroyDrawableReq *req; + + XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName); + + XSync(dpy, False); + + LockDisplay(dpy); + GetReq(DRI2DestroyDrawable, req); + req->reqType = info->codes->major_opcode; + req->dri2Reqtype = X_DRI2DestroyDrawable; + req->drawable = drawable; + UnlockDisplay(dpy); + SyncHandle(); +} + +LOCAL VA_DRI2Buffer *VA_DRI2GetBuffers(Display *dpy, XID drawable, + int *width, int *height, + unsigned int *attachments, int count, + int *outcount) +{ + XExtDisplayInfo *info = DRI2FindDisplay(dpy); + xDRI2GetBuffersReply rep; + xDRI2GetBuffersReq *req; + VA_DRI2Buffer *buffers; + xDRI2Buffer repBuffer; + CARD32 *p; + int i; + + XextCheckExtension (dpy, info, va_dri2ExtensionName, False); + + LockDisplay(dpy); + GetReqExtra(DRI2GetBuffers, count * 4, req); + req->reqType = info->codes->major_opcode; + req->dri2Reqtype = X_DRI2GetBuffers; + req->drawable = drawable; + req->count = count; + p = (CARD32 *) &req[1]; + for (i = 0; i < count; i++) + p[i] = attachments[i]; + + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + UnlockDisplay(dpy); + SyncHandle(); + return NULL; + } + + *width = rep.width; + *height = rep.height; + *outcount = rep.count; + + buffers = Xmalloc(rep.count * sizeof buffers[0]); + if (buffers == NULL) { + _XEatData(dpy, rep.count * sizeof repBuffer); + UnlockDisplay(dpy); + SyncHandle(); + return NULL; + } + + for (i = 0; i < (int) rep.count; i++) { + _XReadPad(dpy, (char *) &repBuffer, sizeof repBuffer); + buffers[i].attachment = repBuffer.attachment; + buffers[i].name = repBuffer.name; + buffers[i].pitch = repBuffer.pitch; + buffers[i].cpp = repBuffer.cpp; + buffers[i].flags = repBuffer.flags; + } + + UnlockDisplay(dpy); + SyncHandle(); + + return buffers; +} + +LOCAL void VA_DRI2CopyRegion(Display *dpy, XID drawable, XserverRegion region, + CARD32 dest, CARD32 src) +{ + XExtDisplayInfo *info = DRI2FindDisplay(dpy); + xDRI2CopyRegionReq *req; + xDRI2CopyRegionReply rep; + + XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName); + + LockDisplay(dpy); + GetReq(DRI2CopyRegion, req); + req->reqType = info->codes->major_opcode; + req->dri2Reqtype = X_DRI2CopyRegion; + req->drawable = drawable; + req->region = region; + req->dest = dest; + req->src = src; + + _XReply(dpy, (xReply *)&rep, 0, xFalse); + + UnlockDisplay(dpy); + SyncHandle(); +} diff --git a/src/gen/x11/va_dri2.h b/src/gen/x11/va_dri2.h new file mode 100644 index 0000000..78e859c --- /dev/null +++ b/src/gen/x11/va_dri2.h @@ -0,0 +1,89 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Benjamin Segovia <benjamin.sego...@intel.com> + */ + +/* + * Copyright � 2007,2008 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Soft- + * ware"), to deal in the Software without restriction, including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, provided that the above copyright + * notice(s) and this permission notice appear in all copies of the Soft- + * ware and that both the above copyright notice(s) and this permission + * notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- + * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- + * MANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall + * not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization of + * the copyright holder. + * + * Authors: + * Kristian H�gsberg (k...@redhat.com) + */ +#ifndef _VA_DRI2_H_ +#define _VA_DRI2_H_ + +#include <X11/extensions/Xfixes.h> +#include <X11/Xfuncproto.h> +#include <xf86drm.h> + +typedef struct { + unsigned int attachment; + unsigned int name; + unsigned int pitch; + unsigned int cpp; + unsigned int flags; +} VA_DRI2Buffer; + +extern Bool +VA_DRI2QueryExtension(Display *display, int *eventBase, int *errorBase); +extern Bool +VA_DRI2QueryVersion(Display *display, int *major, int *minor); +extern Bool +VA_DRI2Connect(Display *display, XID window, + char **driverName, char **deviceName); +extern Bool +VA_DRI2Authenticate(Display *display, XID window, drm_magic_t magic); +extern void +VA_DRI2CreateDrawable(Display *display, XID drawable); +extern void +VA_DRI2DestroyDrawable(Display *display, XID handle); +extern VA_DRI2Buffer * +VA_DRI2GetBuffers(Display *dpy, XID drawable, + int *width, int *height, + unsigned int *attachments, int count, + int *outcount); +#if 1 +extern void +VA_DRI2CopyRegion(Display *dpy, XID drawable, XserverRegion region, + CARD32 dest, CARD32 src); +#endif +#endif diff --git a/src/gen/x11/va_dri2str.h b/src/gen/x11/va_dri2str.h new file mode 100644 index 0000000..d97050f --- /dev/null +++ b/src/gen/x11/va_dri2str.h @@ -0,0 +1,211 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Benjamin Segovia <benjamin.sego...@intel.com> + */ + +/* + * Copyright � 2008 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Soft- + * ware"), to deal in the Software without restriction, including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, provided that the above copyright + * notice(s) and this permission notice appear in all copies of the Soft- + * ware and that both the above copyright notice(s) and this permission + * notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- + * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- + * MANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall + * not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization of + * the copyright holder. + * + * Authors: + * Kristian H�gsberg (k...@redhat.com) + */ +#ifndef _DRI2_PROTO_H_ +#define _DRI2_PROTO_H_ + +#define DRI2_NAME "DRI2" +#define DRI2_MAJOR 1 +#define DRI2_MINOR 0 + +#define DRI2NumberErrors 0 +#define DRI2NumberEvents 0 +#define DRI2NumberRequests 7 + +#define X_DRI2QueryVersion 0 +#define X_DRI2Connect 1 +#define X_DRI2Authenticate 2 +#define X_DRI2CreateDrawable 3 +#define X_DRI2DestroyDrawable 4 +#define X_DRI2GetBuffers 5 +#define X_DRI2CopyRegion 6 + +typedef struct { + CARD32 attachment B32; + CARD32 name B32; + CARD32 pitch B32; + CARD32 cpp B32; + CARD32 flags B32; +} xDRI2Buffer; + +typedef struct { + CARD8 reqType; + CARD8 dri2Reqtype; + CARD16 length B16; + CARD32 majorVersion B32; + CARD32 minorVersion B32; +} xDRI2QueryVersionReq; +#define sz_xDRI2QueryVersionReq 12 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 majorVersion B32; + CARD32 minorVersion B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; +} xDRI2QueryVersionReply; +#define sz_xDRI2QueryVersionReply 32 + +typedef struct { + CARD8 reqType; + CARD8 dri2Reqtype; + CARD16 length B16; + CARD32 window B32; + CARD32 drivertype B32; +} xDRI2ConnectReq; +#define sz_xDRI2ConnectReq 12 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 driverNameLength B32; + CARD32 deviceNameLength B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; +} xDRI2ConnectReply; +#define sz_xDRI2ConnectReply 32 + +typedef struct { + CARD8 reqType; + CARD8 dri2Reqtype; + CARD16 length B16; + CARD32 window B32; + CARD32 magic B32; +} xDRI2AuthenticateReq; +#define sz_xDRI2AuthenticateReq 12 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 authenticated B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xDRI2AuthenticateReply; +#define sz_xDRI2AuthenticateReply 32 + +typedef struct { + CARD8 reqType; + CARD8 dri2Reqtype; + CARD16 length B16; + CARD32 drawable B32; +} xDRI2CreateDrawableReq; +#define sz_xDRI2CreateDrawableReq 8 + +typedef struct { + CARD8 reqType; + CARD8 dri2Reqtype; + CARD16 length B16; + CARD32 drawable B32; +} xDRI2DestroyDrawableReq; +#define sz_xDRI2DestroyDrawableReq 8 + +typedef struct { + CARD8 reqType; + CARD8 dri2Reqtype; + CARD16 length B16; + CARD32 drawable B32; + CARD32 count B32; +} xDRI2GetBuffersReq; +#define sz_xDRI2GetBuffersReq 12 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 width B32; + CARD32 height B32; + CARD32 count B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; +} xDRI2GetBuffersReply; +#define sz_xDRI2GetBuffersReply 32 + +typedef struct { + CARD8 reqType; + CARD8 dri2Reqtype; + CARD16 length B16; + CARD32 drawable B32; + CARD32 region B32; + CARD32 dest B32; + CARD32 src B32; +} xDRI2CopyRegionReq; +#define sz_xDRI2CopyRegionReq 20 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; + CARD32 pad7 B32; +} xDRI2CopyRegionReply; +#define sz_xDRI2CopyRegionReply 32 + +#endif diff --git a/src/gen/x11/va_dri2tokens.h b/src/gen/x11/va_dri2tokens.h new file mode 100644 index 0000000..022609d --- /dev/null +++ b/src/gen/x11/va_dri2tokens.h @@ -0,0 +1,66 @@ +/* + * Copyright © 2012 Intel Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Benjamin Segovia <benjamin.sego...@intel.com> + */ + +/* + * Copyright � 2008 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Soft- + * ware"), to deal in the Software without restriction, including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, provided that the above copyright + * notice(s) and this permission notice appear in all copies of the Soft- + * ware and that both the above copyright notice(s) and this permission + * notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- + * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- + * MANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall + * not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization of + * the copyright holder. + * + * Authors: + * Kristian H�gsberg (k...@redhat.com) + */ +#ifndef _DRI2_TOKENS_H_ +#define _DRI2_TOKENS_H_ + +#define DRI2BufferFrontLeft 0 +#define DRI2BufferBackLeft 1 +#define DRI2BufferFrontRight 2 +#define DRI2BufferBackRight 3 +#define DRI2BufferDepth 4 +#define DRI2BufferStencil 5 +#define DRI2BufferAccum 6 +#define DRI2BufferFakeFrontLeft 7 +#define DRI2BufferFakeFrontRight 8 + +#define DRI2DriverDRI 0 + +#endif diff --git a/src/x11/dricommon.c b/src/x11/dricommon.c deleted file mode 100644 index 345bc47..0000000 --- a/src/x11/dricommon.c +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * Author: Benjamin Segovia <benjamin.sego...@intel.com> - * Note: the code is taken from libva code base - */ - -/* - * Permission is hereby granted, free of charge, to any person obtaining a - * copy 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, sub license, 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 (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include <X11/Xlibint.h> -#include <X11/Xlib.h> -#include "x11/va_dri2.h" -#include "x11/va_dri2tokens.h" -#include "x11/dricommon.h" -#include "cl_utils.h" -#include "cl_alloc.h" - -#include <stdlib.h> -#include <fcntl.h> -#include <unistd.h> -#include <assert.h> - -#define LOCAL __attribute__ ((visibility ("internal"))) - -LOCAL dri_drawable_t* -dri_state_do_drawable_hash(dri_state_t *state, XID drawable) -{ - int index = drawable % DRAWABLE_HASH_SZ; - struct dri_drawable *dri_drawable = state->drawable_hash[index]; - - while (dri_drawable) { - if (dri_drawable->x_drawable == drawable) - return dri_drawable; - dri_drawable = dri_drawable->next; - } - - dri_drawable = dri_state_create_drawable(state, drawable); - if(dri_drawable == NULL) - return NULL; - - dri_drawable->x_drawable = drawable; - dri_drawable->next = state->drawable_hash[index]; - state->drawable_hash[index] = dri_drawable; - - return dri_drawable; -} - -LOCAL void -dri_state_free_drawable_hash(dri_state_t *state) -{ - int i; - struct dri_drawable *dri_drawable, *prev; - - for (i = 0; i < DRAWABLE_HASH_SZ; i++) { - dri_drawable = state->drawable_hash[i]; - - while (dri_drawable) { - prev = dri_drawable; - dri_drawable = prev->next; - dri_state_destroy_drawable(state, prev); - } - } -} - -LOCAL dri_drawable_t* -dri_state_get_drawable(dri_state_t *state, XID drawable) -{ - return dri_state_do_drawable_hash(state, drawable); -} - -LOCAL void -dri_state_init_drawable_hash_table(dri_state_t *state) -{ - int i; - for(i=0; i < DRAWABLE_HASH_SZ; i++) - state->drawable_hash[i] = NULL; -} - -LOCAL void -dri_state_delete(dri_state_t *state) -{ - if (state == NULL) - return; - dri_state_close(state); - CL_FREE(state); -} - -LOCAL dri_state_t* -dri_state_new(void) -{ - dri_state_t *state = NULL; - TRY_ALLOC_NO_ERR (state, CL_CALLOC(1, sizeof(dri_state_t))); - state->fd = -1; - state->driConnectedFlag = NONE; - dri_state_init_drawable_hash_table(state); - -exit: - return state; -error: - dri_state_delete(state); - state = NULL; - goto exit; -} - -#define __DRI_BUFFER_FRONT_LEFT 0 -#define __DRI_BUFFER_BACK_LEFT 1 -#define __DRI_BUFFER_FRONT_RIGHT 2 -#define __DRI_BUFFER_BACK_RIGHT 3 -#define __DRI_BUFFER_DEPTH 4 -#define __DRI_BUFFER_STENCIL 5 -#define __DRI_BUFFER_ACCUM 6 -#define __DRI_BUFFER_FAKE_FRONT_LEFT 7 -#define __DRI_BUFFER_FAKE_FRONT_RIGHT 8 - -typedef struct dri2_drawable -{ - struct dri_drawable base; - union dri_buffer buffers[5]; - int width; - int height; - int has_backbuffer; - int back_index; - int front_index; -} dri2_drawable_t; - -LOCAL dri_drawable_t* -dri_state_create_drawable(dri_state_t *state, XID x_drawable) -{ - dri2_drawable_t *dri2_drwble; - dri2_drwble = (dri2_drawable_t*)CL_CALLOC(1, sizeof(*dri2_drwble)); - - if (!dri2_drwble) - return NULL; - - dri2_drwble->base.x_drawable = x_drawable; - dri2_drwble->base.x = 0; - dri2_drwble->base.y = 0; - VA_DRI2CreateDrawable(state->x11_dpy, x_drawable); - - return &dri2_drwble->base; -} - -LOCAL void -dri_state_destroy_drawable(dri_state_t *state, dri_drawable_t *dri_drwble) -{ - VA_DRI2DestroyDrawable(state->x11_dpy, dri_drwble->x_drawable); - free(dri_drwble); -} - -LOCAL void -dri_state_swap_buffer(dri_state_t *state, dri_drawable_t *dri_drwble) -{ - dri2_drawable_t *dri2_drwble = (dri2_drawable_t*)dri_drwble; - XRectangle xrect; - XserverRegion region; - - if (dri2_drwble->has_backbuffer) { - xrect.x = 0; - xrect.y = 0; - xrect.width = dri2_drwble->width; - xrect.height = dri2_drwble->height; - - region = XFixesCreateRegion(state->x11_dpy, &xrect, 1); - VA_DRI2CopyRegion(state->x11_dpy, dri_drwble->x_drawable, region, - DRI2BufferFrontLeft, DRI2BufferBackLeft); - XFixesDestroyRegion(state->x11_dpy, region); - } -} - -LOCAL union dri_buffer* -dri_state_get_rendering_buffer(dri_state_t *state, dri_drawable_t *dri_drwble) -{ - dri2_drawable_t *dri2_drwble = (dri2_drawable_t *)dri_drwble; - int i; - int count; - unsigned int attachments[5]; - VA_DRI2Buffer *buffers; - - i = 0; - attachments[i++] = __DRI_BUFFER_BACK_LEFT; - attachments[i++] = __DRI_BUFFER_FRONT_LEFT; - buffers = VA_DRI2GetBuffers(state->x11_dpy, - dri_drwble->x_drawable, - &dri2_drwble->width, - &dri2_drwble->height, - attachments, - i, - &count); - assert(buffers); - if (buffers == NULL) - return NULL; - - dri2_drwble->has_backbuffer = 0; - - for (i = 0; i < count; i++) { - dri2_drwble->buffers[i].dri2.attachment = buffers[i].attachment; - dri2_drwble->buffers[i].dri2.name = buffers[i].name; - dri2_drwble->buffers[i].dri2.pitch = buffers[i].pitch; - dri2_drwble->buffers[i].dri2.cpp = buffers[i].cpp; - dri2_drwble->buffers[i].dri2.flags = buffers[i].flags; - - if (buffers[i].attachment == __DRI_BUFFER_BACK_LEFT) { - dri2_drwble->has_backbuffer = 1; - dri2_drwble->back_index = i; - } - - if (buffers[i].attachment == __DRI_BUFFER_FRONT_LEFT) - dri2_drwble->front_index = i; - } - - dri_drwble->width = dri2_drwble->width; - dri_drwble->height = dri2_drwble->height; - Xfree(buffers); - - if (dri2_drwble->has_backbuffer) - return &dri2_drwble->buffers[dri2_drwble->back_index]; - - return &dri2_drwble->buffers[dri2_drwble->front_index]; -} - -LOCAL void -dri_state_close(dri_state_t *state) { - dri_state_free_drawable_hash(state); - assert(state->fd >= 0); - close(state->fd); -} - -LOCAL void -dri_state_release(dri_state_t *state) { - dri_state_delete(state); -} - -LOCAL dri_state_t* -getDRI2State(Display* dpy, int screen, char **driver_name) -{ - int major, minor; - int error_base; - int event_base; - char *device_name = NULL; - drm_magic_t magic; - char * internal_driver_name = NULL; - int fd = -1; - dri_state_t* state = NULL; - - if (!VA_DRI2QueryExtension(dpy, &event_base, &error_base)) - goto err_out; - - if (!VA_DRI2QueryVersion(dpy, &major, &minor)) - goto err_out; - - - if (!VA_DRI2Connect(dpy, RootWindow(dpy, screen), - &internal_driver_name, &device_name)) - goto err_out; - - if(device_name != NULL ) - fd = open(device_name, O_RDWR); - - if (fd < 0) - goto err_out; - - if (drmGetMagic(fd, &magic)) - goto err_out; - - if (!VA_DRI2Authenticate(dpy, RootWindow(dpy, screen), - magic)) - goto err_out; - - if(driver_name) - *driver_name = internal_driver_name; - else - Xfree(internal_driver_name); - - state = dri_state_new(); - state->fd = fd; - state->x11_dpy = dpy; - state->x11_screen = screen; - state->driConnectedFlag = DRI2; - if (device_name) - Xfree(device_name); - return state; - -err_out: - if (device_name) - Xfree(device_name); - - if (internal_driver_name) - Xfree(internal_driver_name); - - if(driver_name) *driver_name = NULL; - - if (fd >= 0) - close(fd); - - if (driver_name) - *driver_name = NULL; - - return state; -} - diff --git a/src/x11/dricommon.h b/src/x11/dricommon.h deleted file mode 100644 index aa3a50f..0000000 --- a/src/x11/dricommon.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * Author: Benjamin Segovia <benjamin.sego...@intel.com> - * Note: the code is taken from libva code base - */ - -/* - * Permission is hereby granted, free of charge, to any person obtaining a - * copy 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, sub license, 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 (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef _VA_DRICOMMON_H_ -#define _VA_DRICOMMON_H_ - -#include <X11/Xlib.h> -#include <xf86drm.h> -#include <drm.h> -#include <drm_sarea.h> - -union dri_buffer -{ - struct { - unsigned int attachment; - unsigned int name; - unsigned int pitch; - unsigned int cpp; - unsigned int flags; - } dri2; -}; - -typedef struct dri_drawable -{ - XID x_drawable; - int x; - int y; - unsigned int width; - unsigned int height; - struct dri_drawable *next; -} dri_drawable_t; - -#define DRAWABLE_HASH_SZ 32 - -enum DRI_VER -{ - NONE = 0, - // NOT supported VA_DRI1 = 1, - DRI2 = 2 -}; - -typedef struct dri_state -{ - Display *x11_dpy; - int x11_screen; - int fd; - enum DRI_VER driConnectedFlag; /* 0: disconnected, 2: DRI2 */ - dri_drawable_t *drawable_hash[DRAWABLE_HASH_SZ]; -} dri_state_t; - -dri_drawable_t *dri_state_create_drawable(dri_state_t*, XID x_drawable); -void dri_state_destroy_drawable(dri_state_t*, dri_drawable_t*); -void dri_state_close(dri_state_t*); -void dri_state_release(dri_state_t*); - -// Create a dri2 state from dpy and screen -dri_state_t *getDRI2State(Display* dpy, int screen, char **driver_name); - -#endif /* _VA_DRICOMMON_H_ */ - diff --git a/src/x11/va_dri2.c b/src/x11/va_dri2.c deleted file mode 100644 index 8779fa5..0000000 --- a/src/x11/va_dri2.c +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * Author: Benjamin Segovia <benjamin.sego...@intel.com> - */ - -/* - * Copyright � 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Soft- - * ware"), to deal in the Software without restriction, including without - * limitation the rights to use, copy, modify, merge, publish, distribute, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, provided that the above copyright - * notice(s) and this permission notice appear in all copies of the Soft- - * ware and that both the above copyright notice(s) and this permission - * notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- - * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY - * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN - * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- - * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- - * MANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall - * not be used in advertising or otherwise to promote the sale, use or - * other dealings in this Software without prior written authorization of - * the copyright holder. - * - * Authors: - * Kristian H�gsberg (k...@redhat.com) - */ - -#define NEED_REPLIES -#include <X11/Xlibint.h> -#include <X11/extensions/Xext.h> -#include <X11/extensions/extutil.h> -#include "xf86drm.h" -#include "x11/va_dri2.h" -#include "x11/va_dri2str.h" -#include "x11/va_dri2tokens.h" - -#ifndef DRI2DriverDRI -#define DRI2DriverDRI 0 -#endif - -#define LOCAL __attribute__ ((visibility ("internal"))) - -static char va_dri2ExtensionName[] = DRI2_NAME; -static XExtensionInfo _va_dri2_info_data; -static XExtensionInfo *va_dri2Info = &_va_dri2_info_data; -static XEXT_GENERATE_CLOSE_DISPLAY (VA_DRI2CloseDisplay, va_dri2Info) -static /* const */ XExtensionHooks va_dri2ExtensionHooks = { - NULL, /* create_gc */ - NULL, /* copy_gc */ - NULL, /* flush_gc */ - NULL, /* free_gc */ - NULL, /* create_font */ - NULL, /* free_font */ - VA_DRI2CloseDisplay, /* close_display */ - NULL, /* wire_to_event */ - NULL, /* event_to_wire */ - NULL, /* error */ - NULL, /* error_string */ -}; - -static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay, va_dri2Info, - va_dri2ExtensionName, - &va_dri2ExtensionHooks, - 0, NULL) - -LOCAL Bool VA_DRI2QueryExtension(Display *dpy, int *eventBase, int *errorBase) -{ - XExtDisplayInfo *info = DRI2FindDisplay(dpy); - - if (XextHasExtension(info)) { - *eventBase = info->codes->first_event; - *errorBase = info->codes->first_error; - return True; - } - - return False; -} - -LOCAL Bool VA_DRI2QueryVersion(Display *dpy, int *major, int *minor) -{ - XExtDisplayInfo *info = DRI2FindDisplay (dpy); - xDRI2QueryVersionReply rep; - xDRI2QueryVersionReq *req; - - XextCheckExtension (dpy, info, va_dri2ExtensionName, False); - - LockDisplay(dpy); - GetReq(DRI2QueryVersion, req); - req->reqType = info->codes->major_opcode; - req->dri2Reqtype = X_DRI2QueryVersion; - req->majorVersion = DRI2_MAJOR; - req->minorVersion = DRI2_MINOR; - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; - } - *major = rep.majorVersion; - *minor = rep.minorVersion; - UnlockDisplay(dpy); - SyncHandle(); - - return True; -} - -LOCAL Bool VA_DRI2Connect(Display *dpy, XID window, - char **driverName, char **deviceName) -{ - XExtDisplayInfo *info = DRI2FindDisplay(dpy); - xDRI2ConnectReply rep; - xDRI2ConnectReq *req; - - XextCheckExtension (dpy, info, va_dri2ExtensionName, False); - - LockDisplay(dpy); - GetReq(DRI2Connect, req); - req->reqType = info->codes->major_opcode; - req->dri2Reqtype = X_DRI2Connect; - req->window = window; - req->drivertype = DRI2DriverDRI; - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; - } - - if (rep.driverNameLength == 0 && rep.deviceNameLength == 0) { - UnlockDisplay(dpy); - SyncHandle(); - return False; - } - - *driverName = Xmalloc(rep.driverNameLength + 1); - if (*driverName == NULL) { - _XEatData(dpy, - ((rep.driverNameLength + 3) & ~3) + - ((rep.deviceNameLength + 3) & ~3)); - UnlockDisplay(dpy); - SyncHandle(); - return False; - } - _XReadPad(dpy, *driverName, rep.driverNameLength); - (*driverName)[rep.driverNameLength] = '\0'; - - *deviceName = Xmalloc(rep.deviceNameLength + 1); - if (*deviceName == NULL) { - Xfree(*driverName); - _XEatData(dpy, ((rep.deviceNameLength + 3) & ~3)); - UnlockDisplay(dpy); - SyncHandle(); - return False; - } - _XReadPad(dpy, *deviceName, rep.deviceNameLength); - (*deviceName)[rep.deviceNameLength] = '\0'; - - UnlockDisplay(dpy); - SyncHandle(); - - return True; -} - -LOCAL Bool VA_DRI2Authenticate(Display *dpy, XID window, drm_magic_t magic) -{ - XExtDisplayInfo *info = DRI2FindDisplay(dpy); - xDRI2AuthenticateReq *req; - xDRI2AuthenticateReply rep; - - XextCheckExtension (dpy, info, va_dri2ExtensionName, False); - - LockDisplay(dpy); - GetReq(DRI2Authenticate, req); - req->reqType = info->codes->major_opcode; - req->dri2Reqtype = X_DRI2Authenticate; - req->window = window; - req->magic = magic; - - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; - } - - UnlockDisplay(dpy); - SyncHandle(); - - return rep.authenticated; -} - -LOCAL void VA_DRI2CreateDrawable(Display *dpy, XID drawable) -{ - XExtDisplayInfo *info = DRI2FindDisplay(dpy); - xDRI2CreateDrawableReq *req; - - XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName); - - LockDisplay(dpy); - GetReq(DRI2CreateDrawable, req); - req->reqType = info->codes->major_opcode; - req->dri2Reqtype = X_DRI2CreateDrawable; - req->drawable = drawable; - UnlockDisplay(dpy); - SyncHandle(); -} - -LOCAL void VA_DRI2DestroyDrawable(Display *dpy, XID drawable) -{ - XExtDisplayInfo *info = DRI2FindDisplay(dpy); - xDRI2DestroyDrawableReq *req; - - XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName); - - XSync(dpy, False); - - LockDisplay(dpy); - GetReq(DRI2DestroyDrawable, req); - req->reqType = info->codes->major_opcode; - req->dri2Reqtype = X_DRI2DestroyDrawable; - req->drawable = drawable; - UnlockDisplay(dpy); - SyncHandle(); -} - -LOCAL VA_DRI2Buffer *VA_DRI2GetBuffers(Display *dpy, XID drawable, - int *width, int *height, - unsigned int *attachments, int count, - int *outcount) -{ - XExtDisplayInfo *info = DRI2FindDisplay(dpy); - xDRI2GetBuffersReply rep; - xDRI2GetBuffersReq *req; - VA_DRI2Buffer *buffers; - xDRI2Buffer repBuffer; - CARD32 *p; - int i; - - XextCheckExtension (dpy, info, va_dri2ExtensionName, False); - - LockDisplay(dpy); - GetReqExtra(DRI2GetBuffers, count * 4, req); - req->reqType = info->codes->major_opcode; - req->dri2Reqtype = X_DRI2GetBuffers; - req->drawable = drawable; - req->count = count; - p = (CARD32 *) &req[1]; - for (i = 0; i < count; i++) - p[i] = attachments[i]; - - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return NULL; - } - - *width = rep.width; - *height = rep.height; - *outcount = rep.count; - - buffers = Xmalloc(rep.count * sizeof buffers[0]); - if (buffers == NULL) { - _XEatData(dpy, rep.count * sizeof repBuffer); - UnlockDisplay(dpy); - SyncHandle(); - return NULL; - } - - for (i = 0; i < (int) rep.count; i++) { - _XReadPad(dpy, (char *) &repBuffer, sizeof repBuffer); - buffers[i].attachment = repBuffer.attachment; - buffers[i].name = repBuffer.name; - buffers[i].pitch = repBuffer.pitch; - buffers[i].cpp = repBuffer.cpp; - buffers[i].flags = repBuffer.flags; - } - - UnlockDisplay(dpy); - SyncHandle(); - - return buffers; -} - -LOCAL void VA_DRI2CopyRegion(Display *dpy, XID drawable, XserverRegion region, - CARD32 dest, CARD32 src) -{ - XExtDisplayInfo *info = DRI2FindDisplay(dpy); - xDRI2CopyRegionReq *req; - xDRI2CopyRegionReply rep; - - XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName); - - LockDisplay(dpy); - GetReq(DRI2CopyRegion, req); - req->reqType = info->codes->major_opcode; - req->dri2Reqtype = X_DRI2CopyRegion; - req->drawable = drawable; - req->region = region; - req->dest = dest; - req->src = src; - - _XReply(dpy, (xReply *)&rep, 0, xFalse); - - UnlockDisplay(dpy); - SyncHandle(); -} diff --git a/src/x11/va_dri2.h b/src/x11/va_dri2.h deleted file mode 100644 index 78e859c..0000000 --- a/src/x11/va_dri2.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * Author: Benjamin Segovia <benjamin.sego...@intel.com> - */ - -/* - * Copyright � 2007,2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Soft- - * ware"), to deal in the Software without restriction, including without - * limitation the rights to use, copy, modify, merge, publish, distribute, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, provided that the above copyright - * notice(s) and this permission notice appear in all copies of the Soft- - * ware and that both the above copyright notice(s) and this permission - * notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- - * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY - * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN - * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- - * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- - * MANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall - * not be used in advertising or otherwise to promote the sale, use or - * other dealings in this Software without prior written authorization of - * the copyright holder. - * - * Authors: - * Kristian H�gsberg (k...@redhat.com) - */ -#ifndef _VA_DRI2_H_ -#define _VA_DRI2_H_ - -#include <X11/extensions/Xfixes.h> -#include <X11/Xfuncproto.h> -#include <xf86drm.h> - -typedef struct { - unsigned int attachment; - unsigned int name; - unsigned int pitch; - unsigned int cpp; - unsigned int flags; -} VA_DRI2Buffer; - -extern Bool -VA_DRI2QueryExtension(Display *display, int *eventBase, int *errorBase); -extern Bool -VA_DRI2QueryVersion(Display *display, int *major, int *minor); -extern Bool -VA_DRI2Connect(Display *display, XID window, - char **driverName, char **deviceName); -extern Bool -VA_DRI2Authenticate(Display *display, XID window, drm_magic_t magic); -extern void -VA_DRI2CreateDrawable(Display *display, XID drawable); -extern void -VA_DRI2DestroyDrawable(Display *display, XID handle); -extern VA_DRI2Buffer * -VA_DRI2GetBuffers(Display *dpy, XID drawable, - int *width, int *height, - unsigned int *attachments, int count, - int *outcount); -#if 1 -extern void -VA_DRI2CopyRegion(Display *dpy, XID drawable, XserverRegion region, - CARD32 dest, CARD32 src); -#endif -#endif diff --git a/src/x11/va_dri2str.h b/src/x11/va_dri2str.h deleted file mode 100644 index d97050f..0000000 --- a/src/x11/va_dri2str.h +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * Author: Benjamin Segovia <benjamin.sego...@intel.com> - */ - -/* - * Copyright � 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Soft- - * ware"), to deal in the Software without restriction, including without - * limitation the rights to use, copy, modify, merge, publish, distribute, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, provided that the above copyright - * notice(s) and this permission notice appear in all copies of the Soft- - * ware and that both the above copyright notice(s) and this permission - * notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- - * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY - * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN - * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- - * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- - * MANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall - * not be used in advertising or otherwise to promote the sale, use or - * other dealings in this Software without prior written authorization of - * the copyright holder. - * - * Authors: - * Kristian H�gsberg (k...@redhat.com) - */ -#ifndef _DRI2_PROTO_H_ -#define _DRI2_PROTO_H_ - -#define DRI2_NAME "DRI2" -#define DRI2_MAJOR 1 -#define DRI2_MINOR 0 - -#define DRI2NumberErrors 0 -#define DRI2NumberEvents 0 -#define DRI2NumberRequests 7 - -#define X_DRI2QueryVersion 0 -#define X_DRI2Connect 1 -#define X_DRI2Authenticate 2 -#define X_DRI2CreateDrawable 3 -#define X_DRI2DestroyDrawable 4 -#define X_DRI2GetBuffers 5 -#define X_DRI2CopyRegion 6 - -typedef struct { - CARD32 attachment B32; - CARD32 name B32; - CARD32 pitch B32; - CARD32 cpp B32; - CARD32 flags B32; -} xDRI2Buffer; - -typedef struct { - CARD8 reqType; - CARD8 dri2Reqtype; - CARD16 length B16; - CARD32 majorVersion B32; - CARD32 minorVersion B32; -} xDRI2QueryVersionReq; -#define sz_xDRI2QueryVersionReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 majorVersion B32; - CARD32 minorVersion B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xDRI2QueryVersionReply; -#define sz_xDRI2QueryVersionReply 32 - -typedef struct { - CARD8 reqType; - CARD8 dri2Reqtype; - CARD16 length B16; - CARD32 window B32; - CARD32 drivertype B32; -} xDRI2ConnectReq; -#define sz_xDRI2ConnectReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 driverNameLength B32; - CARD32 deviceNameLength B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xDRI2ConnectReply; -#define sz_xDRI2ConnectReply 32 - -typedef struct { - CARD8 reqType; - CARD8 dri2Reqtype; - CARD16 length B16; - CARD32 window B32; - CARD32 magic B32; -} xDRI2AuthenticateReq; -#define sz_xDRI2AuthenticateReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 authenticated B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xDRI2AuthenticateReply; -#define sz_xDRI2AuthenticateReply 32 - -typedef struct { - CARD8 reqType; - CARD8 dri2Reqtype; - CARD16 length B16; - CARD32 drawable B32; -} xDRI2CreateDrawableReq; -#define sz_xDRI2CreateDrawableReq 8 - -typedef struct { - CARD8 reqType; - CARD8 dri2Reqtype; - CARD16 length B16; - CARD32 drawable B32; -} xDRI2DestroyDrawableReq; -#define sz_xDRI2DestroyDrawableReq 8 - -typedef struct { - CARD8 reqType; - CARD8 dri2Reqtype; - CARD16 length B16; - CARD32 drawable B32; - CARD32 count B32; -} xDRI2GetBuffersReq; -#define sz_xDRI2GetBuffersReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 width B32; - CARD32 height B32; - CARD32 count B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDRI2GetBuffersReply; -#define sz_xDRI2GetBuffersReply 32 - -typedef struct { - CARD8 reqType; - CARD8 dri2Reqtype; - CARD16 length B16; - CARD32 drawable B32; - CARD32 region B32; - CARD32 dest B32; - CARD32 src B32; -} xDRI2CopyRegionReq; -#define sz_xDRI2CopyRegionReq 20 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; - CARD32 pad7 B32; -} xDRI2CopyRegionReply; -#define sz_xDRI2CopyRegionReply 32 - -#endif diff --git a/src/x11/va_dri2tokens.h b/src/x11/va_dri2tokens.h deleted file mode 100644 index 022609d..0000000 --- a/src/x11/va_dri2tokens.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright © 2012 Intel Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * Author: Benjamin Segovia <benjamin.sego...@intel.com> - */ - -/* - * Copyright � 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Soft- - * ware"), to deal in the Software without restriction, including without - * limitation the rights to use, copy, modify, merge, publish, distribute, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, provided that the above copyright - * notice(s) and this permission notice appear in all copies of the Soft- - * ware and that both the above copyright notice(s) and this permission - * notice appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- - * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY - * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN - * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- - * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- - * MANCE OF THIS SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall - * not be used in advertising or otherwise to promote the sale, use or - * other dealings in this Software without prior written authorization of - * the copyright holder. - * - * Authors: - * Kristian H�gsberg (k...@redhat.com) - */ -#ifndef _DRI2_TOKENS_H_ -#define _DRI2_TOKENS_H_ - -#define DRI2BufferFrontLeft 0 -#define DRI2BufferBackLeft 1 -#define DRI2BufferFrontRight 2 -#define DRI2BufferBackRight 3 -#define DRI2BufferDepth 4 -#define DRI2BufferStencil 5 -#define DRI2BufferAccum 6 -#define DRI2BufferFakeFrontLeft 7 -#define DRI2BufferFakeFrontRight 8 - -#define DRI2DriverDRI 0 - -#endif -- 2.7.4
_______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/beignet