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
10 #define WIN32_NO_STATUS
27 struct ICD_Data
* icd_data
;
29 volatile LONG thread_id
;
32 #define WGL_DC_OBJ_DC 0x1
48 struct ICD_Data
* icd_data
;
51 /* Software implementation */
56 struct wgl_dc_data
* next
;
59 #ifdef OPENGL32_USE_TLS
60 extern DWORD OglTlsIndex
;
62 struct Opengl32_ThreadData
64 const GLDISPATCHTABLE
* glDispatchTable
;
67 struct wgl_dc_data
* dc_data
;
70 C_ASSERT(FIELD_OFFSET(struct Opengl32_ThreadData
, glDispatchTable
) == 0);
74 IntMakeCurrent(HGLRC hglrc
, HDC hdc
, struct wgl_dc_data
* dc_data
)
76 struct Opengl32_ThreadData
* thread_data
= TlsGetValue(OglTlsIndex
);
78 thread_data
->hglrc
= hglrc
;
79 thread_data
->hdc
= hdc
;
80 thread_data
->dc_data
= dc_data
;
87 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
93 IntGetCurrentDHGLRC(void)
95 struct wgl_context
* ctx
= (struct wgl_context
*)IntGetCurrentRC();
102 IntGetCurrentDC(void)
104 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
110 IntGetCurrentDcData(void)
112 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
113 return data
->dc_data
;
117 const GLDISPATCHTABLE
*
118 IntGetCurrentDispatchTable(void)
120 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
121 return data
->glDispatchTable
;
126 IntSetCurrentDispatchTable(const GLDISPATCHTABLE
* table
)
128 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
129 data
->glDispatchTable
= table
;
134 IntSetCurrentICDPrivate(void* value
)
136 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
137 data
->icdData
= value
;
142 IntGetCurrentICDPrivate(void)
144 struct Opengl32_ThreadData
* data
= TlsGetValue(OglTlsIndex
);
145 return data
->icdData
;
151 const GLDISPATCHTABLE
*
152 IntGetCurrentDispatchTable(void)
154 return (GLDISPATCHTABLE
*)NtCurrentTeb()->glTable
;
156 #endif // defined(OPENGL32_USE_TLS)
158 /* Software implementation functions */
159 INT
sw_DescribePixelFormat(HDC hdc
, INT format
, UINT size
, PIXELFORMATDESCRIPTOR
* descr
);
160 BOOL
sw_SetPixelFormat(HDC hdc
, struct wgl_dc_data
*, INT format
);
161 DHGLRC
sw_CreateContext(struct wgl_dc_data
*);
162 BOOL
sw_DeleteContext(DHGLRC dhglrc
);
163 BOOL
sw_SetContext(struct wgl_dc_data
* dc_data
, DHGLRC dhglrc
);
164 void sw_ReleaseContext(DHGLRC hglrc
);
165 PROC
sw_GetProcAddress(LPCSTR name
);
166 BOOL
sw_CopyContext(DHGLRC dhglrcSrc
, DHGLRC dhglrcDst
, UINT mask
);
167 BOOL
sw_ShareLists(DHGLRC dhglrcSrc
, DHGLRC dhglrcDst
);
168 BOOL
sw_SwapBuffers(HDC hdc
, struct wgl_dc_data
* dc_data
);