xserver-multidpi/glx/glxdrawable.h

81 lines
2.7 KiB
C
Raw Normal View History

#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
2003-11-14 17:48:57 +01:00
#ifndef _GLX_drawable_h_
#define _GLX_drawable_h_
/*
* SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
* Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
*
* 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, 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 including the dates of first publication and
* either this permission notice or a reference to
* http://oss.sgi.com/projects/FreeB/
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
* SILICON GRAPHICS, INC. 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.
*
* Except as contained in this notice, the name of Silicon Graphics, Inc.
* shall not be used in advertising or otherwise to promote the sale, use or
* other dealings in this Software without prior written authorization from
* Silicon Graphics, Inc.
*/
2003-11-14 17:48:57 +01:00
2007-08-27 20:23:50 +02:00
/* We just need to avoid clashing with DRAWABLE_{WINDOW,PIXMAP} */
enum {
GLX_DRAWABLE_WINDOW,
GLX_DRAWABLE_PIXMAP,
GLX_DRAWABLE_PBUFFER,
GLX_DRAWABLE_ANY
2007-08-27 20:23:50 +02:00
};
2006-03-12 01:11:34 +01:00
struct __GLXdrawable {
void (*destroy) (__GLXdrawable * private);
GLboolean(*swapBuffers) (ClientPtr client, __GLXdrawable *);
void (*copySubBuffer) (__GLXdrawable * drawable,
int x, int y, int w, int h);
void (*waitX) (__GLXdrawable *);
void (*waitGL) (__GLXdrawable *);
2006-03-12 01:11:34 +01:00
2003-11-14 17:48:57 +01:00
DrawablePtr pDraw;
XID drawId;
/*
** Either GLX_DRAWABLE_PIXMAP, GLX_DRAWABLE_WINDOW or
** GLX_DRAWABLE_PBUFFER.
*/
2003-11-14 17:48:57 +01:00
int type;
/*
** Configuration of the visual to which this drawable was created.
*/
__GLXconfig *config;
2003-11-14 17:48:57 +01:00
2007-08-24 01:07:52 +02:00
GLenum target;
GLenum format;
/*
** Event mask
*/
unsigned long eventMask;
2003-11-14 17:48:57 +01:00
};
Add Windows-DRI extension If windowsdriproto headers are available, build a Windows-DRI extension, which supports requests to enable local clients to directly render GL to a Windows drawable: - a query to check if WGL is being used on a screen - a query to map a fbconfigID to a native pixelformatindex - a query to map a drawable to a native handle Windows-DRI can only be useful if we are using WGL, so make an note if WGL is active on a screen. Make validGlxDrawable() public Adjust glxWinSetPixelFormat() so it doesn't require a context, just a screen and config. That enables factoring out the deferred drawable creation code as glxWinDeferredCreateDrawable() Enhance glxWinDeferredCreateDrawable(), so that pixmaps are placed into a file mapping, so they exist in memory which can be shared with the direct rendering process. Currently, this file mapping is accessed by a name generated from the XID. This will not be unique across multiple server instances. It would perhaps be better, although more complicated, to use an anonymous file mapping, and then duplicate the handle for the direct rendering process. Use glxWinDeferredCreateDrawable() to ensure the native handle exists for the Windows-DRI query to map a drawable to native handle. v2: Various printf format warning fixes v3: Fix format warnings on x86 Move some uninteresting windows-dri output to debug log level v4: check for windowsdriproto when --enable-windowsdri use windowsdriproto_CFLAGS Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk> Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
2014-07-24 13:29:41 +02:00
extern int validGlxDrawable(ClientPtr client, XID id, int type, int access_mode,
__GLXdrawable **drawable, int *err);
#endif /* !__GLX_drawable_h__ */