2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: lib/opengl32/opengl.h
5 * PURPOSE: OpenGL32 lib, general header
11 #define WIN32_NO_STATUS
20 #include <wine/debug.h>
30 struct ICD_Data
* icd_data
;
32 volatile LONG thread_id
;
35 #define WGL_DC_OBJ_DC 0x1
51 struct ICD_Data
* icd_data
;
54 /* Software implementation */
59 struct wgl_dc_data
* next
;
62 #ifdef OPENGL32_USE_TLS
63 extern DWORD OglTlsIndex
;
65 struct Opengl32_ThreadData
67 const GLDISPATCHTABLE
* glDispatchTable
;
70 struct wgl_dc_data
* dc_data
;
73 C_ASSERT(FIELD_OFFSET(struct Opengl32_ThreadData
, glDispatchTable
) == 0);
77 IntMakeCurrent(HGLRC hglrc
, HDC hdc
, struct wgl_dc_data
* dc_data
)
79 struct Opengl32_ThreadData
* thread_data
= TlsGetValue(OglTlsIndex
);
81 thread_data
->hglrc
= hglrc
;
82 thread_data
->hdc
= hdc
;
83 thread_data
->dc_data
= dc_data
;
90 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
96 IntGetCurrentDHGLRC(void)
98 struct wgl_context
* ctx
= (struct wgl_context
*)IntGetCurrentRC();
105 IntGetCurrentDC(void)
107 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
113 IntGetCurrentDcData(void)
115 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
116 return data
->dc_data
;
120 const GLDISPATCHTABLE
*
121 IntGetCurrentDispatchTable(void)
123 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
124 return data
->glDispatchTable
;
129 IntSetCurrentDispatchTable(const GLDISPATCHTABLE
* table
)
131 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
132 data
->glDispatchTable
= table
;
137 IntSetCurrentICDPrivate(void* value
)
139 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
140 data
->icdData
= value
;
145 IntGetCurrentICDPrivate(void)
147 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
148 return data
->icdData
;
154 const GLDISPATCHTABLE
*
155 IntGetCurrentDispatchTable(void)
157 return (GLDISPATCHTABLE
*)NtCurrentTeb()->glTable
;
159 #endif // defined(OPENGL32_USE_TLS)
161 /* Software implementation functions */
162 INT
sw_DescribePixelFormat(HDC hdc
, INT format
, UINT size
, PIXELFORMATDESCRIPTOR
* descr
);
163 BOOL
sw_SetPixelFormat(HDC hdc
, struct wgl_dc_data
*, INT format
);
164 DHGLRC
sw_CreateContext(struct wgl_dc_data
*);
165 BOOL
sw_DeleteContext(DHGLRC dhglrc
);
166 BOOL
sw_SetContext(struct wgl_dc_data
* dc_data
, DHGLRC dhglrc
);
167 void sw_ReleaseContext(DHGLRC hglrc
);
168 PROC
sw_GetProcAddress(LPCSTR name
);
169 BOOL
sw_CopyContext(DHGLRC dhglrcSrc
, DHGLRC dhglrcDst
, UINT mask
);
170 BOOL
sw_ShareLists(DHGLRC dhglrcSrc
, DHGLRC dhglrcDst
);
171 BOOL
sw_SwapBuffers(HDC hdc
, struct wgl_dc_data
* dc_data
);
173 #endif /* _OPENGL32_PCH_ */