vmwgfx_driver.h revision 22f7e8e5
13bfa90b6Smrg/* 23bfa90b6Smrg * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. 33bfa90b6Smrg * Copyright 2011 VMWare, Inc. 43bfa90b6Smrg * All Rights Reserved. 53bfa90b6Smrg * 63bfa90b6Smrg * Permission is hereby granted, free of charge, to any person obtaining a 73bfa90b6Smrg * copy of this software and associated documentation files (the 83bfa90b6Smrg * "Software"), to deal in the Software without restriction, including 93bfa90b6Smrg * without limitation the rights to use, copy, modify, merge, publish, 103bfa90b6Smrg * distribute, sub license, and/or sell copies of the Software, and to 113bfa90b6Smrg * permit persons to whom the Software is furnished to do so, subject to 123bfa90b6Smrg * the following conditions: 133bfa90b6Smrg * 143bfa90b6Smrg * The above copyright n<otice and this permission notice (including the 153bfa90b6Smrg * next paragraph) shall be included in all copies or substantial portions 163bfa90b6Smrg * of the Software. 173bfa90b6Smrg * 183bfa90b6Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 193bfa90b6Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 203bfa90b6Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 213bfa90b6Smrg * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 223bfa90b6Smrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 233bfa90b6Smrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 243bfa90b6Smrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 253bfa90b6Smrg * 263bfa90b6Smrg * 273bfa90b6Smrg * Author: Alan Hourihane <alanh@tungstengraphics.com> 283bfa90b6Smrg * Author: Jakob Bornecrantz <wallbraker@gmail.com> 293bfa90b6Smrg * Author: Thomas Hellstrom <thellstrom@vmware.com> 303bfa90b6Smrg */ 313bfa90b6Smrg 323bfa90b6Smrg#ifndef _VMWGFX_DRIVER_H_ 333bfa90b6Smrg#define _VMWGFX_DRIVER_H_ 343bfa90b6Smrg 353bfa90b6Smrg 363bfa90b6Smrg#include <stddef.h> 373bfa90b6Smrg#include <stdint.h> 383bfa90b6Smrg#include <errno.h> 393bfa90b6Smrg#include <drm.h> 403bfa90b6Smrg#include <xf86drm.h> 413bfa90b6Smrg#include <xf86drmMode.h> 423bfa90b6Smrg#include <xorg-server.h> 433bfa90b6Smrg#include <xf86.h> 443bfa90b6Smrg#include <xf86Crtc.h> 453bfa90b6Smrg#include <xf86xv.h> 463bfa90b6Smrg#include <xa_tracker.h> 473bfa90b6Smrg#include <xf86Module.h> 483bfa90b6Smrg 493bfa90b6Smrg#include "../src/compat-api.h" 503bfa90b6Smrg#ifdef DRI2 513bfa90b6Smrg#include <dri2.h> 523bfa90b6Smrg#if (!defined(DRI2INFOREC_VERSION) || (DRI2INFOREC_VERSION < 3)) 533bfa90b6Smrg#undef DRI2 543bfa90b6Smrg#endif 553bfa90b6Smrg#endif 563bfa90b6Smrg 573bfa90b6Smrg#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12 583bfa90b6Smrg#define _swapl(x, n) swapl(x,n) 593bfa90b6Smrg#define _swaps(x, n) swaps(x,n) 603bfa90b6Smrg#else 613bfa90b6Smrg#define _swapl(x, n) (void) n; swapl(x) 623bfa90b6Smrg#define _swaps(x, n) (void) n; swaps(x) 633bfa90b6Smrg#endif 643bfa90b6Smrg 653bfa90b6Smrg#define DRV_ERROR(msg) xf86DrvMsg(pScrn->scrnIndex, X_ERROR, msg); 663bfa90b6Smrg#define debug_printf(...) 673bfa90b6Smrg 683bfa90b6Smrg#define VMWGFX_DRI_DEVICE_LEN 80 693bfa90b6Smrg 703bfa90b6Smrgtypedef struct 713bfa90b6Smrg{ 723bfa90b6Smrg int lastInstance; 733bfa90b6Smrg int refCount; 743bfa90b6Smrg ScrnInfoPtr pScrn_1; 753bfa90b6Smrg ScrnInfoPtr pScrn_2; 763bfa90b6Smrg} EntRec, *EntPtr; 773bfa90b6Smrg 783bfa90b6Smrg#define XORG_NR_FENCES 3 793bfa90b6Smrg 803bfa90b6Smrgenum xorg_throttling_reason { 813bfa90b6Smrg THROTTLE_RENDER, 823bfa90b6Smrg THROTTLE_SWAP 833bfa90b6Smrg}; 843bfa90b6Smrg 8522f7e8e5Smrgstruct vmwgfx_hosted; 8622f7e8e5Smrg 873bfa90b6Smrgtypedef struct _modesettingRec 883bfa90b6Smrg{ 893bfa90b6Smrg /* drm */ 903bfa90b6Smrg int fd; 913bfa90b6Smrg int drm_major; 923bfa90b6Smrg int drm_minor; 933bfa90b6Smrg int drm_patch; 943bfa90b6Smrg 953bfa90b6Smrg /* X */ 963bfa90b6Smrg EntPtr entityPrivate; 973bfa90b6Smrg 983bfa90b6Smrg int Chipset; 993bfa90b6Smrg EntityInfoPtr pEnt; 1003bfa90b6Smrg struct pci_device *PciInfo; 1013bfa90b6Smrg 1023bfa90b6Smrg /* Accel */ 1033bfa90b6Smrg Bool accelerate_render; 1043bfa90b6Smrg MessageType from_render; 1053bfa90b6Smrg Bool rendercheck; 1063bfa90b6Smrg MessageType from_rendercheck; 1073bfa90b6Smrg Bool SWCursor; 1083bfa90b6Smrg CursorPtr cursor; 1093bfa90b6Smrg Bool enable_dri; 1103bfa90b6Smrg MessageType from_dri; 1113bfa90b6Smrg Bool direct_presents; 1123bfa90b6Smrg MessageType from_dp; 1133bfa90b6Smrg Bool only_hw_presents; 1143bfa90b6Smrg MessageType from_hwp; 1153bfa90b6Smrg Bool isMaster; 1163bfa90b6Smrg 1173bfa90b6Smrg 1183bfa90b6Smrg /* Broken-out options. */ 1193bfa90b6Smrg OptionInfoPtr Options; 1203bfa90b6Smrg 1213bfa90b6Smrg ScreenBlockHandlerProcPtr saved_BlockHandler; 1223bfa90b6Smrg CreateScreenResourcesProcPtr saved_CreateScreenResources; 1233bfa90b6Smrg CloseScreenProcPtr saved_CloseScreen; 1243bfa90b6Smrg Bool (*saved_EnterVT)(VT_FUNC_ARGS_DECL); 1253bfa90b6Smrg void (*saved_LeaveVT)(VT_FUNC_ARGS_DECL); 1263bfa90b6Smrg void (*saved_AdjustFrame)(ADJUST_FRAME_ARGS_DECL); 1273bfa90b6Smrg Bool (*saved_UseHWCursor)(ScreenPtr, CursorPtr); 1283bfa90b6Smrg Bool (*saved_UseHWCursorARGB)(ScreenPtr, CursorPtr); 1293bfa90b6Smrg 1303bfa90b6Smrg uint16_t lut_r[256], lut_g[256], lut_b[256]; 1313bfa90b6Smrg 1323bfa90b6Smrg Bool check_fb_size; 1333bfa90b6Smrg size_t max_fb_size; 1343bfa90b6Smrg 1353bfa90b6Smrg struct xa_tracker *xat; 13622f7e8e5Smrg const struct vmwgfx_hosted_driver *hdriver; 13722f7e8e5Smrg struct vmwgfx_hosted *hosted; 1383bfa90b6Smrg#ifdef DRI2 1393bfa90b6Smrg Bool dri2_available; 1403bfa90b6Smrg char dri2_device_name[VMWGFX_DRI_DEVICE_LEN]; 1413bfa90b6Smrg#endif 1423bfa90b6Smrg} modesettingRec, *modesettingPtr; 1433bfa90b6Smrg 1443bfa90b6Smrg#define modesettingPTR(p) ((modesettingPtr)((p)->driverPrivate)) 1453bfa90b6Smrg 1463bfa90b6Smrgvoid xorg_flush(ScreenPtr pScreen); 1473bfa90b6Smrg/*********************************************************************** 1483bfa90b6Smrg * xorg_dri2.c 1493bfa90b6Smrg */ 1503bfa90b6SmrgBool 1513bfa90b6Smrgxorg_dri2_init(ScreenPtr pScreen); 1523bfa90b6Smrg 1533bfa90b6Smrgvoid 1543bfa90b6Smrgxorg_dri2_close(ScreenPtr pScreen); 1553bfa90b6Smrg 1563bfa90b6Smrg 1573bfa90b6Smrg/*********************************************************************** 1583bfa90b6Smrg * xorg_crtc.c 1593bfa90b6Smrg */ 1603bfa90b6Smrgvoid 1613bfa90b6Smrgxorg_crtc_init(ScrnInfoPtr pScrn); 1623bfa90b6Smrg 1633bfa90b6Smrgvoid 1643bfa90b6Smrgxorg_crtc_cursor_destroy(xf86CrtcPtr crtc); 1653bfa90b6Smrg 1663bfa90b6Smrgvoid 1673bfa90b6Smrgvmwgfx_disable_scanout(ScrnInfoPtr pScrn); 1683bfa90b6Smrg 1693bfa90b6SmrgPixmapPtr 1703bfa90b6Smrgcrtc_get_scanout(xf86CrtcPtr crtc); 1713bfa90b6Smrg 1723bfa90b6Smrg 1733bfa90b6Smrg/*********************************************************************** 1743bfa90b6Smrg * xorg_output.c 1753bfa90b6Smrg */ 1763bfa90b6Smrgvoid 1773bfa90b6Smrgxorg_output_init(ScrnInfoPtr pScrn); 1783bfa90b6Smrg 1793bfa90b6Smrgunsigned 1803bfa90b6Smrgxorg_output_get_id(xf86OutputPtr output); 1813bfa90b6Smrg 1823bfa90b6SmrgBool 1833bfa90b6Smrgvmwgfx_output_explicit_overlap(ScrnInfoPtr pScrn); 1843bfa90b6Smrg 1853bfa90b6Smrg 1863bfa90b6Smrg/*********************************************************************** 1873bfa90b6Smrg * xorg_xv.c 1883bfa90b6Smrg */ 1893bfa90b6Smrgvoid 1903bfa90b6Smrgxorg_xv_init(ScreenPtr pScreen); 1913bfa90b6Smrg 1923bfa90b6SmrgXF86VideoAdaptorPtr 1933bfa90b6Smrgvmw_video_init_adaptor(ScrnInfoPtr pScrn); 1943bfa90b6Smrgvoid 1953bfa90b6Smrgvmw_video_free_adaptor(XF86VideoAdaptorPtr adaptor, Bool free_ports); 1963bfa90b6Smrg 1973bfa90b6Smrgvoid 1983bfa90b6Smrgvmw_ctrl_ext_init(ScrnInfoPtr pScrn); 1993bfa90b6Smrg 2003bfa90b6Smrg#endif /* _XORG_TRACKER_H_ */ 201