/********************************************************************** * * Copyright(c) Imagination Technologies Ltd. * * The contents of this file are subject to the MIT license as set out below. * * 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 and this permission notice 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 THE AUTHORS OR COPYRIGHT HOLDERS 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. * * This License is also included in this distribution in the file called * "COPYING". * ******************************************************************************/ #if !defined(__DRI2_WS_H__) #define __DRI2_WS_H__ #define DRI2WS_DISPFLAG_DEFAULT_DISPLAY 0x00000001 /* // Constants (macros) related to back-buffering. */ #define XWS_FLIP_BUFFERS 3 #define DRI2_FLIP_BUFFERS_NUM XWS_FLIP_BUFFERS #define XWS_FLIP_BUFFER_INDEX (XWS_MAX_FLIP_BUFFERS - 1) #define XWS_BLIT_BUFFERS 2 #define DRI2_BLIT_BUFFERS_NUM XWS_BLIT_BUFFERS #define XWS_BLIT_BUFFER_INDEX (XWS_MAX_BLIT_BUFFERS - 1) #if 0 #define MIN(a,b) ((a)<(b)?(a):(b)) #define MAX(a,b) ((a)>(b)?(a):(b)) #endif #define XWS_MAX_BUFFERS MAX(XWS_FLIP_BUFFERS, XWS_BLIT_BUFFERS) #define DRI2_MAX_BUFFERS_NUM XWS_MAX_BUFFERS #define __DRI_BUFFER_EMPTY 103 /** Used for ugly ugly ugly swap interval passing to dri2 driver and receiving current frame index */ #define __DRI_BUFFER_PVR_CTRL 0x80 /* 100000XX <- last 2 bits for swap interval value */ #define __DRI_BUFFER_PVR_CTRL_RET 0x90 /* 11000000 */ #define DRI2_BACK_BUFFER_EXPORT_TYPE_BUFFERS 1 #define DRI2_BACK_BUFFER_EXPORT_TYPE_SWAPCHAIN 2 #define UNREFERENCED_PARAMETER(x) (x) = (x) /* * Structure used to pass information about back buffers between client application and * X.Org. Watch out for equivalent structure in pvr_video lib */ typedef struct _PVRDRI2BackBuffersExport_ { /* Type of export. _BUFFERS mean set of handles, _SWAPCHAIN mean Swap chain ID */ unsigned int ui32Type; PVR2D_HANDLE hBuffers[DRI2_MAX_BUFFERS_NUM]; unsigned int ui32BuffersCount; unsigned int ui32SwapChainID; } PVRDRI2BackBuffersExport; /* // Private window system display information */ typedef struct DRI2WS_Display_TAG { unsigned int ui32RefCount; Display *display; int screen; unsigned int ui32Flags; unsigned int ui32Width; unsigned int ui32Height; unsigned int ui32StrideInBytes; unsigned int ui32BytesPerPixel; WSEGLPixelFormat ePixelFormat; PVR2DFORMAT ePVR2DPixelFormat; PVR2DCONTEXTHANDLE hContext; PVR2DMEMINFO *psMemInfo; int iDRMfd; } DRI2WSDisplay; typedef enum DRI2WS_DrawableType_TAG { DRI2_DRAWABLE_UNKNOWN = 0, DRI2_DRAWABLE_WINDOW = 1, DRI2_DRAWABLE_PIXMAP = 2, } DRI2WS_DrawableType; /* // Private window system drawable information */ typedef struct DRI2WS_Drawable_TAG { DRI2WS_DrawableType eDrawableType; Window nativeWin; /** Index of current render-to back buffer (received from Xserver) */ unsigned int ui32BackBufferCurrent; /** Number of buffers */ unsigned int ui32BackBufferNum; /** Swap interval (works only in fliping/fullscreen case, values 0-3) */ unsigned int ui32SwapInterval; /** PVR2D Handles received from Xserver (back buffers export structure) */ PVR2D_HANDLE hPVR2DBackBufferExport; /** Stamp of current back buffer */ unsigned char ucBackBufferExportStamp; /** Array of PVR2D Handles received from Xserver (our back buffers) */ PVR2D_HANDLE hPVR2DBackBuffer[XWS_MAX_BUFFERS]; /** Array of PVR2D mapped back buffers */ PVR2DMEMINFO *psMemBackBuffer[XWS_MAX_BUFFERS]; /** Stamp of current back buffer */ unsigned char ucFrontBufferStamp; /** Array of PVR2D Handles received from Xserver (our back buffers) */ PVR2D_HANDLE hPVR2DFrontBuffer; /** Array of PVR2D mapped back buffers */ PVR2DMEMINFO *psMemFrontBuffer; /** ID of flip/swap chain received from X.Org */ unsigned int ui32FlipChainID; /** PVR2D Handle of flip chain used to get buffers to draw to */ PVR2DFLIPCHAINHANDLE hFlipChain; int iWidth; int iHeight; WSEGLPixelFormat ePixelFormat; unsigned int ui32BytesPerPixel; unsigned int ui32StrideInPixels; unsigned int ui32StrideInBytes; PVR2DFORMAT ePVR2DPixelFormat; DRI2WSDisplay *psXWSDisplay; } DRI2WSDrawable; #endif /* __DRI2_WS_H__ */