xorg_tracker.h revision 31ea323b4d432b557d7664187f17ccefc6d3947b
1/* 2 * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. 3 * All Rights Reserved. 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the 7 * "Software"), to deal in the Software without restriction, including 8 * without limitation the rights to use, copy, modify, merge, publish, 9 * distribute, sub license, and/or sell copies of the Software, and to 10 * permit persons to whom the Software is furnished to do so, subject to 11 * the following conditions: 12 * 13 * The above copyright notice and this permission notice (including the 14 * next paragraph) shall be included in all copies or substantial portions 15 * of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 20 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 21 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 * 25 * 26 * Author: Alan Hourihane <alanh@tungstengraphics.com> 27 * Author: Jakob Bornecrantz <wallbraker@gmail.com> 28 * 29 */ 30 31#ifndef _XORG_TRACKER_H_ 32#define _XORG_TRACKER_H_ 33 34#include <stddef.h> 35#include <stdint.h> 36#include <errno.h> 37#include <drm.h> 38#include <xf86drm.h> 39#include <xf86drmMode.h> 40#include <xorg-server.h> 41#include <xf86.h> 42#include "xf86Crtc.h" 43#include <exa.h> 44 45#ifdef DRM_MODE_FEATURE_DIRTYFB 46#include <damage.h> 47#endif 48 49#include "pipe/p_screen.h" 50#include "state_tracker/drm_api.h" 51 52#define DRV_ERROR(msg) xf86DrvMsg(pScrn->scrnIndex, X_ERROR, msg); 53 54struct exa_context; 55 56typedef struct 57{ 58 int lastInstance; 59 int refCount; 60 ScrnInfoPtr pScrn_1; 61 ScrnInfoPtr pScrn_2; 62} EntRec, *EntPtr; 63 64typedef struct _modesettingRec 65{ 66 /* drm */ 67 int fd; 68 unsigned fb_id; 69 70 /* X */ 71 EntPtr entityPrivate; 72 73 int Chipset; 74 EntityInfoPtr pEnt; 75 struct pci_device *PciInfo; 76 77 Bool noAccel; 78 Bool SWCursor; 79 CloseScreenProcPtr CloseScreen; 80 81 /* Broken-out options. */ 82 OptionInfoPtr Options; 83 84 unsigned int SaveGeneration; 85 86 void (*blockHandler)(int, pointer, pointer, pointer); 87 CreateScreenResourcesProcPtr createScreenResources; 88 89 /* gallium */ 90 struct drm_api *api; 91 struct pipe_screen *screen; 92 struct pipe_context *ctx; 93 boolean d_depth_bits_last; 94 boolean ds_depth_bits_last; 95 struct pipe_texture *root_texture; 96 97 /* exa */ 98 struct exa_context *exa; 99 Bool noEvict; 100 Bool debug_fallback; 101 102#ifdef DRM_MODE_FEATURE_DIRTYFB 103 DamagePtr damage; 104#endif 105} modesettingRec, *modesettingPtr; 106 107#define modesettingPTR(p) ((modesettingPtr)((p)->driverPrivate)) 108 109 110/*********************************************************************** 111 * xorg_exa.c 112 */ 113struct pipe_texture * 114xorg_exa_get_texture(PixmapPtr pPixmap); 115 116unsigned 117xorg_exa_get_pixmap_handle(PixmapPtr pPixmap, unsigned *stride); 118 119int 120xorg_exa_set_displayed_usage(PixmapPtr pPixmap); 121 122int 123xorg_exa_set_shared_usage(PixmapPtr pPixmap); 124 125Bool 126xorg_exa_set_texture(PixmapPtr pPixmap, struct pipe_texture *tex); 127 128struct pipe_texture * 129xorg_exa_create_root_texture(ScrnInfoPtr pScrn, 130 int width, int height, 131 int depth, int bpp); 132 133void * 134xorg_exa_init(ScrnInfoPtr pScrn, Bool accel); 135 136void 137xorg_exa_close(ScrnInfoPtr pScrn); 138 139 140/*********************************************************************** 141 * xorg_dri2.c 142 */ 143Bool 144driScreenInit(ScreenPtr pScreen); 145 146void 147driCloseScreen(ScreenPtr pScreen); 148 149 150/*********************************************************************** 151 * xorg_crtc.c 152 */ 153void 154crtc_init(ScrnInfoPtr pScrn); 155 156void 157crtc_cursor_destroy(xf86CrtcPtr crtc); 158 159 160/*********************************************************************** 161 * xorg_output.c 162 */ 163void 164output_init(ScrnInfoPtr pScrn); 165 166/*********************************************************************** 167 * xorg_xv.c 168 */ 169void 170xorg_init_video(ScreenPtr pScreen); 171 172 173#endif /* _XORG_TRACKER_H_ */ 174