57 if(
data->owner.u ==
id.u)
73 data->pixelformat = 0;
81 data->nb_icd_formats = 0;
82 TRACE(
"ICD %S has %u formats for HDC %x.\n",
data->icd_data ?
data->icd_data->DriverName :
NULL,
data->nb_icd_formats,
hdc);
177 int i,
count, best_format;
178 int bestDBuffer = -1, bestStereo = -1;
180 TRACE_(wgl)(
"%p %p: size %u version %u flags %u type %u color %u %u,%u,%u,%u "
181 "accum %u depth %u stencil %u aux %u\n",
184 ppfd->cAccumBits,
ppfd->cDepthBits,
ppfd->cStencilBits,
ppfd->cAuxBuffers );
187 if (!
count)
return 0;
203 TRACE(
"pixel type mismatch for iPixelFormat=%d\n",
i );
210 TRACE(
"PFD_DRAW_TO_BITMAP mismatch for iPixelFormat=%d\n",
i );
217 TRACE(
"PFD_DRAW_TO_WINDOW mismatch for iPixelFormat=%d\n",
i );
224 TRACE(
"PFD_SUPPORT_OPENGL mismatch for iPixelFormat=%d\n",
i );
231 TRACE(
"PFD_SUPPORT_GDI mismatch for iPixelFormat=%d\n",
i );
271 if (bestStereo != -1 && (
format.dwFlags &
PFD_STEREO) != bestStereo)
continue;
282 if (
ppfd->cColorBits)
290 TRACE(
"color mismatch for iPixelFormat=%d\n",
i );
294 if (
ppfd->cAlphaBits)
302 TRACE(
"alpha mismatch for iPixelFormat=%d\n",
i );
306 if (
ppfd->cDepthBits)
314 TRACE(
"depth mismatch for iPixelFormat=%d\n",
i );
318 if (
ppfd->cStencilBits)
326 TRACE(
"stencil mismatch for iPixelFormat=%d\n",
i );
330 if (
ppfd->cAuxBuffers)
338 TRACE(
"aux mismatch for iPixelFormat=%d\n",
i );
354 TRACE(
"returning %u\n", best_format );
363 if(!ctx_src || !ctx_dst)
389 TRACE(
"Creating context for %p.\n",
hdc);
393 WARN(
"Not a DC handle!\n");
400 WARN(
"Pixel format not set!\n");
407 TRACE(
"Calling SW implementation.\n");
413 TRACE(
"Calling ICD.\n");
427 WARN(
"Failed to allocate a context!\n");
636#define USE_GL_FUNC(func, w, x, y, z) if(!strcmp(name, "gl" #func)) return NULL;
662 ERR(
"wglMakeCurrent was passed an invalid DC handle.\n");
671 ERR(
"HGLRC %p and HDC %p are not compatible.\n",
hglrc,
hdc);
703 ERR(
"DrvSetContext failed!\n");
720 ERR(
"sw_SetContext failed!\n");
750 ERR(
"hdc (%p) is not a DC handle (ObjectType: %d)!\n",
hdc, objType);
779 return dc_data->
icd_data->DrvRealizeLayerPalette(
hdc, iLayerPlane, bRealize);
822 WARN(
"Not a valid DC!.\n");
829 WARN(
"format == 0!\n");
842 TRACE(
"Calling ICD.\n");
855 TRACE(
"Calling SW implementation.\n");
867 TRACE(
"Invalid pixel format!\n");
877 if(!ctx_src || !ctx_dst)
static POBJECT_TYPE GetObjectType(IN PCWSTR TypeName)
#define InterlockedExchange
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INVALID_PARAMETER
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
struct ICD_Data * IntGetIcdData(HDC hdc)
#define EXCEPTION_EXECUTE_HANDLER
#define InterlockedCompareExchange
FORCEINLINE void IntSetCurrentDispatchTable(const GLDISPATCHTABLE *table)
BOOL sw_CopyContext(DHGLRC dhglrcSrc, DHGLRC dhglrcDst, UINT mask)
BOOL sw_ShareLists(DHGLRC dhglrcSrc, DHGLRC dhglrcDst)
BOOL sw_DeleteContext(DHGLRC dhglrc)
DHGLRC sw_CreateContext(struct wgl_dc_data *)
BOOL sw_SetContext(struct wgl_dc_data *dc_data, DHGLRC dhglrc)
FORCEINLINE HGLRC IntGetCurrentRC(void)
BOOL sw_SetPixelFormat(HDC hdc, struct wgl_dc_data *, INT format)
INT sw_DescribePixelFormat(HDC hdc, INT format, UINT size, PIXELFORMATDESCRIPTOR *descr)
FORCEINLINE void IntMakeCurrent(HGLRC hglrc, HDC hdc, struct wgl_dc_data *dc_data)
PROC sw_GetProcAddress(LPCSTR name)
void sw_ReleaseContext(DHGLRC hglrc)
BOOL sw_SwapBuffers(HDC hdc, struct wgl_dc_data *dc_data)
FORCEINLINE HDC IntGetCurrentDC(void)
static HGLRC(WINAPI *pwglCreateContextAttribsARB)(HDC hDC
#define _SEH2_EXCEPT(...)
#define DECLSPEC_HOTPATCH
base of all file and directory entries
struct _LIST_ENTRY * Flink
struct ICD_Data * icd_data
struct ICD_Data * icd_data
#define CONTAINING_RECORD(address, type, field)
void release_dc_data(struct wgl_dc_data *dc_data)
LIST_ENTRY ContextListHead
BOOL WINAPI wglRealizeLayerPalette(HDC hdc, int iLayerPlane, BOOL bRealize)
static struct wgl_dc_data * get_dc_data(HDC hdc)
static struct wgl_dc_data * get_dc_data_ex(HDC hdc, INT format, UINT size, PIXELFORMATDESCRIPTOR *descr)
void APIENTRY set_api_table(const GLCLTPROCTABLE *table)
INT WINAPI wglChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd)
BOOL WINAPI wglDeleteContext(HGLRC hglrc)
static struct wgl_dc_data * dc_data_list
BOOL WINAPI wglSetPixelFormat(HDC hdc, INT format, const PIXELFORMATDESCRIPTOR *descr)
HDC WINAPI wglGetCurrentDC(void)
PROC WINAPI wglGetProcAddress(LPCSTR name)
static CRITICAL_SECTION dc_data_cs
INT WINAPI wglGetPixelFormat(HDC hdc)
struct wgl_context * get_context(HGLRC hglrc)
HGLRC WINAPI wglGetCurrentContext(void)
INT WINAPI wglDescribePixelFormat(HDC hdc, INT format, UINT size, PIXELFORMATDESCRIPTOR *descr)
BOOL WINAPI wglSwapLayerBuffers(HDC hdc, UINT fuPlanes)
HGLRC WINAPI wglCreateContext(HDC hdc)
PROC WINAPI wglGetDefaultProcAddress(LPCSTR lpszProc)
BOOL WINAPI wglMakeCurrent(HDC hdc, HGLRC hglrc)
BOOL WINAPI wglCopyContext(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask)
BOOL WINAPI wglDescribeLayerPlane(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nBytes, LPLAYERPLANEDESCRIPTOR plpd)
DWORD WINAPI wglSwapMultipleBuffers(UINT count, CONST WGLSWAP *toSwap)
void IntDeleteAllContexts(void)
BOOL WINAPI DECLSPEC_HOTPATCH wglSwapBuffers(HDC hdc)
BOOL WINAPI wglShareLists(HGLRC hglrcSrc, HGLRC hglrcDst)
int WINAPI wglSetLayerPaletteEntries(HDC hdc, int iLayerPlane, int iStart, int cEntries, const COLORREF *pcr)
HGLRC WINAPI wglCreateLayerContext(HDC hdc, int iLayerPlane)
int WINAPI wglGetLayerPaletteEntries(HDC hdc, int iLayerPlane, int iStart, int cEntries, COLORREF *pcr)
DWORD WINAPI GetCurrentThreadId(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
_In_ LONG _In_ ULONG _Out_opt_ PIXELFORMATDESCRIPTOR * ppfd
#define ERROR_INVALID_PIXEL_FORMAT
#define PFD_SUPPORT_OPENGL
#define PFD_STEREO_DONTCARE
#define PFD_DRAW_TO_BITMAP
#define PFD_GENERIC_FORMAT
_In_ UINT _In_ UINT cEntries
#define PFD_DOUBLEBUFFER_DONTCARE
#define PFD_DRAW_TO_WINDOW
HWND WINAPI WindowFromDC(_In_ HDC hDC)