vmwgfx_driver.h revision 3bfa90b6
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 853bfa90b6Smrgtypedef struct _modesettingRec 863bfa90b6Smrg{ 873bfa90b6Smrg /* drm */ 883bfa90b6Smrg int fd; 893bfa90b6Smrg int drm_major; 903bfa90b6Smrg int drm_minor; 913bfa90b6Smrg int drm_patch; 923bfa90b6Smrg 933bfa90b6Smrg /* X */ 943bfa90b6Smrg EntPtr entityPrivate; 953bfa90b6Smrg 963bfa90b6Smrg int Chipset; 973bfa90b6Smrg EntityInfoPtr pEnt; 983bfa90b6Smrg struct pci_device *PciInfo; 993bfa90b6Smrg 1003bfa90b6Smrg /* Accel */ 1013bfa90b6Smrg Bool accelerate_render; 1023bfa90b6Smrg MessageType from_render; 1033bfa90b6Smrg Bool rendercheck; 1043bfa90b6Smrg MessageType from_rendercheck; 1053bfa90b6Smrg Bool SWCursor; 1063bfa90b6Smrg CursorPtr cursor; 1073bfa90b6Smrg Bool enable_dri; 1083bfa90b6Smrg MessageType from_dri; 1093bfa90b6Smrg Bool direct_presents; 1103bfa90b6Smrg MessageType from_dp; 1113bfa90b6Smrg Bool only_hw_presents; 1123bfa90b6Smrg MessageType from_hwp; 1133bfa90b6Smrg Bool isMaster; 1143bfa90b6Smrg 1153bfa90b6Smrg 1163bfa90b6Smrg /* Broken-out options. */ 1173bfa90b6Smrg OptionInfoPtr Options; 1183bfa90b6Smrg 1193bfa90b6Smrg ScreenBlockHandlerProcPtr saved_BlockHandler; 1203bfa90b6Smrg CreateScreenResourcesProcPtr saved_CreateScreenResources; 1213bfa90b6Smrg CloseScreenProcPtr saved_CloseScreen; 1223bfa90b6Smrg Bool (*saved_EnterVT)(VT_FUNC_ARGS_DECL); 1233bfa90b6Smrg void (*saved_LeaveVT)(VT_FUNC_ARGS_DECL); 1243bfa90b6Smrg void (*saved_AdjustFrame)(ADJUST_FRAME_ARGS_DECL); 1253bfa90b6Smrg Bool (*saved_UseHWCursor)(ScreenPtr, CursorPtr); 1263bfa90b6Smrg Bool (*saved_UseHWCursorARGB)(ScreenPtr, CursorPtr); 1273bfa90b6Smrg 1283bfa90b6Smrg uint16_t lut_r[256], lut_g[256], lut_b[256]; 1293bfa90b6Smrg 1303bfa90b6Smrg Bool check_fb_size; 1313bfa90b6Smrg size_t max_fb_size; 1323bfa90b6Smrg 1333bfa90b6Smrg struct xa_tracker *xat; 1343bfa90b6Smrg#ifdef DRI2 1353bfa90b6Smrg Bool dri2_available; 1363bfa90b6Smrg char dri2_device_name[VMWGFX_DRI_DEVICE_LEN]; 1373bfa90b6Smrg#endif 1383bfa90b6Smrg} modesettingRec, *modesettingPtr; 1393bfa90b6Smrg 1403bfa90b6Smrg#define modesettingPTR(p) ((modesettingPtr)((p)->driverPrivate)) 1413bfa90b6Smrg 1423bfa90b6Smrgvoid xorg_flush(ScreenPtr pScreen); 1433bfa90b6Smrg/*********************************************************************** 1443bfa90b6Smrg * xorg_dri2.c 1453bfa90b6Smrg */ 1463bfa90b6SmrgBool 1473bfa90b6Smrgxorg_dri2_init(ScreenPtr pScreen); 1483bfa90b6Smrg 1493bfa90b6Smrgvoid 1503bfa90b6Smrgxorg_dri2_close(ScreenPtr pScreen); 1513bfa90b6Smrg 1523bfa90b6Smrg 1533bfa90b6Smrg/*********************************************************************** 1543bfa90b6Smrg * xorg_crtc.c 1553bfa90b6Smrg */ 1563bfa90b6Smrgvoid 1573bfa90b6Smrgxorg_crtc_init(ScrnInfoPtr pScrn); 1583bfa90b6Smrg 1593bfa90b6Smrgvoid 1603bfa90b6Smrgxorg_crtc_cursor_destroy(xf86CrtcPtr crtc); 1613bfa90b6Smrg 1623bfa90b6Smrgvoid 1633bfa90b6Smrgvmwgfx_disable_scanout(ScrnInfoPtr pScrn); 1643bfa90b6Smrg 1653bfa90b6SmrgPixmapPtr 1663bfa90b6Smrgcrtc_get_scanout(xf86CrtcPtr crtc); 1673bfa90b6Smrg 1683bfa90b6Smrg 1693bfa90b6Smrg/*********************************************************************** 1703bfa90b6Smrg * xorg_output.c 1713bfa90b6Smrg */ 1723bfa90b6Smrgvoid 1733bfa90b6Smrgxorg_output_init(ScrnInfoPtr pScrn); 1743bfa90b6Smrg 1753bfa90b6Smrgunsigned 1763bfa90b6Smrgxorg_output_get_id(xf86OutputPtr output); 1773bfa90b6Smrg 1783bfa90b6SmrgBool 1793bfa90b6Smrgvmwgfx_output_explicit_overlap(ScrnInfoPtr pScrn); 1803bfa90b6Smrg 1813bfa90b6Smrg 1823bfa90b6Smrg/*********************************************************************** 1833bfa90b6Smrg * xorg_xv.c 1843bfa90b6Smrg */ 1853bfa90b6Smrgvoid 1863bfa90b6Smrgxorg_xv_init(ScreenPtr pScreen); 1873bfa90b6Smrg 1883bfa90b6SmrgXF86VideoAdaptorPtr 1893bfa90b6Smrgvmw_video_init_adaptor(ScrnInfoPtr pScrn); 1903bfa90b6Smrgvoid 1913bfa90b6Smrgvmw_video_free_adaptor(XF86VideoAdaptorPtr adaptor, Bool free_ports); 1923bfa90b6Smrg 1933bfa90b6Smrgvoid 1943bfa90b6Smrgvmw_ctrl_ext_init(ScrnInfoPtr pScrn); 1953bfa90b6Smrg 1963bfa90b6Smrg#endif /* _XORG_TRACKER_H_ */ 197