1 /* DirectDrawSurface XF86DGA implementation
3 * DGA2's specific DirectDrawSurface routines
15 #include "debugtools.h"
16 #include "dga2_private.h"
18 DEFAULT_DEBUG_CHANNEL(ddraw);
20 #define DDPRIVATE(x) dga2_dd_private *ddpriv = ((dga2_dd_private*)(x)->private)
21 #define DPPRIVATE(x) dga2_dp_private *dppriv = ((dga2_dp_private*)(x)->private)
22 #define DSPRIVATE(x) dga2_ds_private *dspriv = ((dga2_ds_private*)(x)->private)
24 HRESULT WINAPI DGA2_IDirectDrawSurface4Impl_Flip(
25 LPDIRECTDRAWSURFACE4 iface,LPDIRECTDRAWSURFACE4 flipto,DWORD dwFlags
27 ICOM_THIS(IDirectDrawSurface4Impl,iface);
28 IDirectDrawSurface4Impl* iflipto=(IDirectDrawSurface4Impl*)flipto;
31 dga_ds_private *fspriv;
34 TRACE("(%p)->Flip(%p,%08lx)\n",This,iflipto,dwFlags);
35 iflipto = _common_find_flipto(This,iflipto);
38 fspriv = (dga_ds_private*)iflipto->private;
39 TSXDGASetViewport(display,DefaultScreen(display),0,fspriv->fb_height, XDGAFlipRetrace);
40 TSXDGASync(display,DefaultScreen(display));
42 if (iflipto->s.palette) {
43 DPPRIVATE(iflipto->s.palette);
45 TSXDGAInstallColormap(display,DefaultScreen(display),dppriv->cm);
48 /* We need to switch the lowlevel surfaces, for DGA this is: */
49 /* The height within the framebuffer */
50 xheight = dspriv->fb_height;
51 dspriv->fb_height = fspriv->fb_height;
52 fspriv->fb_height = xheight;
54 /* And the assciated surface pointer */
55 surf = This->s.surface_desc.u1.lpSurface;
56 This->s.surface_desc.u1.lpSurface = iflipto->s.surface_desc.u1.lpSurface;
57 iflipto->s.surface_desc.u1.lpSurface = surf;
62 ICOM_VTABLE(IDirectDrawSurface4) dga2_dds4vt =
64 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
65 IDirectDrawSurface4Impl_QueryInterface,
66 IDirectDrawSurface4Impl_AddRef,
67 DGA_IDirectDrawSurface4Impl_Release,
68 IDirectDrawSurface4Impl_AddAttachedSurface,
69 IDirectDrawSurface4Impl_AddOverlayDirtyRect,
70 IDirectDrawSurface4Impl_Blt,
71 IDirectDrawSurface4Impl_BltBatch,
72 IDirectDrawSurface4Impl_BltFast,
73 IDirectDrawSurface4Impl_DeleteAttachedSurface,
74 IDirectDrawSurface4Impl_EnumAttachedSurfaces,
75 IDirectDrawSurface4Impl_EnumOverlayZOrders,
76 DGA2_IDirectDrawSurface4Impl_Flip,
77 IDirectDrawSurface4Impl_GetAttachedSurface,
78 IDirectDrawSurface4Impl_GetBltStatus,
79 IDirectDrawSurface4Impl_GetCaps,
80 IDirectDrawSurface4Impl_GetClipper,
81 IDirectDrawSurface4Impl_GetColorKey,
82 IDirectDrawSurface4Impl_GetDC,
83 IDirectDrawSurface4Impl_GetFlipStatus,
84 IDirectDrawSurface4Impl_GetOverlayPosition,
85 IDirectDrawSurface4Impl_GetPalette,
86 IDirectDrawSurface4Impl_GetPixelFormat,
87 IDirectDrawSurface4Impl_GetSurfaceDesc,
88 IDirectDrawSurface4Impl_Initialize,
89 IDirectDrawSurface4Impl_IsLost,
90 IDirectDrawSurface4Impl_Lock,
91 IDirectDrawSurface4Impl_ReleaseDC,
92 IDirectDrawSurface4Impl_Restore,
93 IDirectDrawSurface4Impl_SetClipper,
94 IDirectDrawSurface4Impl_SetColorKey,
95 IDirectDrawSurface4Impl_SetOverlayPosition,
96 DGA_IDirectDrawSurface4Impl_SetPalette,
97 IDirectDrawSurface4Impl_Unlock,
98 IDirectDrawSurface4Impl_UpdateOverlay,
99 IDirectDrawSurface4Impl_UpdateOverlayDisplay,
100 IDirectDrawSurface4Impl_UpdateOverlayZOrder,
101 IDirectDrawSurface4Impl_GetDDInterface,
102 IDirectDrawSurface4Impl_PageLock,
103 IDirectDrawSurface4Impl_PageUnlock,
104 IDirectDrawSurface4Impl_SetSurfaceDesc,
105 IDirectDrawSurface4Impl_SetPrivateData,
106 IDirectDrawSurface4Impl_GetPrivateData,
107 IDirectDrawSurface4Impl_FreePrivateData,
108 IDirectDrawSurface4Impl_GetUniquenessValue,
109 IDirectDrawSurface4Impl_ChangeUniquenessValue