opengl32: Introduce WGL_WINE_query_renderer.

This is a fairly straightforward adaptation of GLX_MESA_query_renderer to WGL.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Henri Verbeet 2016-03-15 16:55:12 +01:00 committed by Alexandre Julliard
parent 644724d32c
commit ffb27c61c0
7 changed files with 114 additions and 4 deletions

View file

@ -574,6 +574,17 @@ my %ext_functions =
"glDeleteObjectBufferATI" => [ "void", [ [ "GLuint", "buffer" ] ], [ "GL_ATI_vertex_array_object" ] ],
"wglSetPixelFormatWINE" => [ "BOOL", [ [ "HDC", "hdc" ],
[ "int", "format" ] ], [ "WGL_WINE_pixel_format_passthrough" ] ],
"wglQueryCurrentRendererIntegerWINE" => [ "BOOL", [ [ "GLenum", "attribute" ],
[ "GLuint *", "value" ] ], [ "WGL_WINE_query_renderer" ] ],
"wglQueryCurrentRendererStringWINE" => [ "const GLchar *", [ [ "GLenum", "attribute" ] ],
[ "WGL_WINE_query_renderer" ] ],
"wglQueryRendererIntegerWINE" => [ "BOOL", [ [ "HDC", "dc" ],
[ "GLint", "renderer" ],
[ "GLenum", "attribute" ],
[ "GLuint *", "value" ] ], [ "WGL_WINE_query_renderer" ] ],
"wglQueryRendererStringWINE" => [ "const GLchar *", [ [ "HDC", "dc" ],
[ "GLint", "renderer" ],
[ "GLenum", "attribute" ] ], [ "WGL_WINE_query_renderer" ] ],
);
@ -614,7 +625,21 @@ my %supported_wgl_extensions =
"WGL_WINE_pixel_format_passthrough" => 1,
);
my %enums = ();
my %enums =
(
"WGL_RENDERER_VENDOR_ID_WINE" => "0x8183",
"WGL_RENDERER_DEVICE_ID_WINE" => "0x8184",
"WGL_RENDERER_VERSION_WINE" => "0x8185",
"WGL_RENDERER_ACCELERATED_WINE" => "0x8186",
"WGL_RENDERER_VIDEO_MEMORY_WINE" => "0x8187",
"WGL_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_WINE" => "0x8188",
"WGL_RENDERER_PREFERRED_PROFILE_WINE" => "0x8189",
"WGL_RENDERER_OPENGL_CORE_PROFILE_VERSION_WINE" => "0x818A",
"WGL_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_WINE" => "0x818B",
"WGL_RENDERER_OPENGL_ES_PROFILE_VERSION_WINE" => "0x818C",
"WGL_RENDERER_OPENGL_ES2_PROFILE_VERSION_WINE" => "0x818D",
"WGL_RENDERER_ID_WINE" => "0x818E",
);
sub parse_variable($)
{

View file

@ -14,7 +14,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(opengl);
const int extension_registry_size = 2576;
const int extension_registry_size = 2580;
static void WINAPI glAccumxOES( GLenum op, GLfixed value ) {
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
@ -15342,7 +15342,7 @@ static void WINAPI glWriteMaskEXT( GLuint res, GLuint in, GLenum outX, GLenum ou
funcs->ext.p_glWriteMaskEXT( res, in, outX, outY, outZ, outW );
}
const OpenGL_extension extension_registry[2576] = {
const OpenGL_extension extension_registry[2580] = {
{ "glAccumxOES", "GL_OES_fixed_point", glAccumxOES },
{ "glActiveProgramEXT", "GL_EXT_separate_shader_objects", glActiveProgramEXT },
{ "glActiveShaderProgram", "GL_ARB_separate_shader_objects GL_VERSION_4_1", glActiveShaderProgram },
@ -17913,7 +17913,11 @@ const OpenGL_extension extension_registry[2576] = {
{ "wglGetPixelFormatAttribivARB", "WGL_ARB_pixel_format", wglGetPixelFormatAttribivARB },
{ "wglGetSwapIntervalEXT", "WGL_EXT_swap_control", wglGetSwapIntervalEXT },
{ "wglMakeContextCurrentARB", "WGL_ARB_make_current_read", wglMakeContextCurrentARB },
{ "wglQueryCurrentRendererIntegerWINE", "WGL_WINE_query_renderer", wglQueryCurrentRendererIntegerWINE },
{ "wglQueryCurrentRendererStringWINE", "WGL_WINE_query_renderer", wglQueryCurrentRendererStringWINE },
{ "wglQueryPbufferARB", "WGL_ARB_pbuffer", wglQueryPbufferARB },
{ "wglQueryRendererIntegerWINE", "WGL_WINE_query_renderer", wglQueryRendererIntegerWINE },
{ "wglQueryRendererStringWINE", "WGL_WINE_query_renderer", wglQueryRendererStringWINE },
{ "wglReleasePbufferDCARB", "WGL_ARB_pbuffer", wglReleasePbufferDCARB },
{ "wglReleaseTexImageARB", "WGL_ARB_render_texture", wglReleaseTexImageARB },
{ "wglSetPbufferAttribARB", "WGL_ARB_render_texture", wglSetPbufferAttribARB },

View file

@ -32,5 +32,10 @@ extern const OpenGL_extension extension_registry[] DECLSPEC_HIDDEN;
extern const int extension_registry_size DECLSPEC_HIDDEN;
extern BOOL WINAPI wglSetPixelFormatWINE( HDC hdc, int format ) DECLSPEC_HIDDEN;
extern BOOL WINAPI wglQueryCurrentRendererIntegerWINE( GLenum attribute, GLuint *value ) DECLSPEC_HIDDEN;
extern const GLchar * WINAPI wglQueryCurrentRendererStringWINE( GLenum attribute );
extern BOOL WINAPI wglQueryRendererIntegerWINE( HDC dc, GLint renderer,
GLenum attribute, GLuint *value ) DECLSPEC_HIDDEN;
extern const GLchar * WINAPI wglQueryRendererStringWINE( HDC dc, GLint renderer, GLenum attribute ) DECLSPEC_HIDDEN;
#endif /* __DLLS_OPENGL32_OPENGL_EXT_H */

View file

@ -5932,7 +5932,11 @@ static BOOL null_wglGetPixelFormatAttribfvARB( HDC hdc, int iPixelFormat, int iL
static BOOL null_wglGetPixelFormatAttribivARB( HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int* piValues ) { return 0; }
static int null_wglGetSwapIntervalEXT( void ) { return 0; }
static BOOL null_wglMakeContextCurrentARB( HDC hDrawDC, HDC hReadDC, struct wgl_context * hglrc ) { return 0; }
static BOOL null_wglQueryCurrentRendererIntegerWINE( GLenum attribute, GLuint * value ) { return 0; }
static const GLchar * null_wglQueryCurrentRendererStringWINE( GLenum attribute ) { return 0; }
static BOOL null_wglQueryPbufferARB( struct wgl_pbuffer * hPbuffer, int iAttribute, int* piValue ) { return 0; }
static BOOL null_wglQueryRendererIntegerWINE( HDC dc, GLint renderer, GLenum attribute, GLuint * value ) { return 0; }
static const GLchar * null_wglQueryRendererStringWINE( HDC dc, GLint renderer, GLenum attribute ) { return 0; }
static int null_wglReleasePbufferDCARB( struct wgl_pbuffer * hPbuffer, HDC hDC ) { return 0; }
static BOOL null_wglReleaseTexImageARB( struct wgl_pbuffer * hPbuffer, int iBuffer ) { return 0; }
static BOOL null_wglSetPbufferAttribARB( struct wgl_pbuffer * hPbuffer, const int* piAttribList ) { return 0; }
@ -8862,7 +8866,11 @@ struct opengl_funcs null_opengl_funcs =
null_wglGetPixelFormatAttribivARB,
null_wglGetSwapIntervalEXT,
null_wglMakeContextCurrentARB,
null_wglQueryCurrentRendererIntegerWINE,
null_wglQueryCurrentRendererStringWINE,
null_wglQueryPbufferARB,
null_wglQueryRendererIntegerWINE,
null_wglQueryRendererStringWINE,
null_wglReleasePbufferDCARB,
null_wglReleaseTexImageARB,
null_wglSetPbufferAttribARB,

View file

@ -1212,6 +1212,58 @@ BOOL WINAPI wglSetPixelFormatWINE( HDC hdc, int format )
return funcs->ext.p_wglSetPixelFormatWINE( hdc, format );
}
/***********************************************************************
* wglQueryCurrentRendererIntegerWINE
*
* Provided by the WGL_WINE_query_renderer extension.
*/
BOOL WINAPI wglQueryCurrentRendererIntegerWINE( GLenum attribute, GLuint *value )
{
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
if (!funcs->ext.p_wglQueryCurrentRendererIntegerWINE) return FALSE;
return funcs->ext.p_wglQueryCurrentRendererIntegerWINE( attribute, value );
}
/***********************************************************************
* wglQueryCurrentRendererStringWINE
*
* Provided by the WGL_WINE_query_renderer extension.
*/
const GLchar * WINAPI wglQueryCurrentRendererStringWINE( GLenum attribute )
{
const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
if (!funcs->ext.p_wglQueryCurrentRendererStringWINE) return NULL;
return funcs->ext.p_wglQueryCurrentRendererStringWINE( attribute );
}
/***********************************************************************
* wglQueryRendererIntegerWINE
*
* Provided by the WGL_WINE_query_renderer extension.
*/
BOOL WINAPI wglQueryRendererIntegerWINE( HDC dc, GLint renderer, GLenum attribute, GLuint *value )
{
const struct opengl_funcs *funcs = get_dc_funcs( dc );
if (!funcs || !funcs->ext.p_wglQueryRendererIntegerWINE) return FALSE;
return funcs->ext.p_wglQueryRendererIntegerWINE( dc, renderer, attribute, value );
}
/***********************************************************************
* wglQueryRendererStringWINE
*
* Provided by the WGL_WINE_query_renderer extension.
*/
const GLchar * WINAPI wglQueryRendererStringWINE( HDC dc, GLint renderer, GLenum attribute )
{
const struct opengl_funcs *funcs = get_dc_funcs( dc );
if (!funcs || !funcs->ext.p_wglQueryRendererStringWINE) return NULL;
return funcs->ext.p_wglQueryRendererStringWINE( dc, renderer, attribute );
}
/***********************************************************************
* wglUseFontBitmaps_common
*/

View file

@ -5654,6 +5654,18 @@ typedef void GLvoid;
#define GL_ZOOM_X 0x0D16
#define GL_ZOOM_Y 0x0D17
#define GL_Z_EXT 0x87D7
#define WGL_RENDERER_ACCELERATED_WINE 0x8186
#define WGL_RENDERER_DEVICE_ID_WINE 0x8184
#define WGL_RENDERER_ID_WINE 0x818E
#define WGL_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_WINE 0x818B
#define WGL_RENDERER_OPENGL_CORE_PROFILE_VERSION_WINE 0x818A
#define WGL_RENDERER_OPENGL_ES2_PROFILE_VERSION_WINE 0x818D
#define WGL_RENDERER_OPENGL_ES_PROFILE_VERSION_WINE 0x818C
#define WGL_RENDERER_PREFERRED_PROFILE_WINE 0x8189
#define WGL_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_WINE 0x8188
#define WGL_RENDERER_VENDOR_ID_WINE 0x8183
#define WGL_RENDERER_VERSION_WINE 0x8185
#define WGL_RENDERER_VIDEO_MEMORY_WINE 0x8187
void GLAPIENTRY glAccum(GLenum,GLfloat);
void GLAPIENTRY glAlphaFunc(GLenum,GLfloat);

View file

@ -7,7 +7,7 @@
#define WINE_GLAPI
#endif
#define WINE_WGL_DRIVER_VERSION 14
#define WINE_WGL_DRIVER_VERSION 15
struct wgl_context;
struct wgl_pbuffer;
@ -2940,7 +2940,11 @@ struct opengl_funcs
BOOL (WINE_GLAPI *p_wglGetPixelFormatAttribivARB)(HDC,int,int,UINT,const int*,int*);
int (WINE_GLAPI *p_wglGetSwapIntervalEXT)(void);
BOOL (WINE_GLAPI *p_wglMakeContextCurrentARB)(HDC,HDC,struct wgl_context *);
BOOL (WINE_GLAPI *p_wglQueryCurrentRendererIntegerWINE)(GLenum,GLuint *);
const GLchar * (WINE_GLAPI *p_wglQueryCurrentRendererStringWINE)(GLenum);
BOOL (WINE_GLAPI *p_wglQueryPbufferARB)(struct wgl_pbuffer *,int,int*);
BOOL (WINE_GLAPI *p_wglQueryRendererIntegerWINE)(HDC,GLint,GLenum,GLuint *);
const GLchar * (WINE_GLAPI *p_wglQueryRendererStringWINE)(HDC,GLint,GLenum);
int (WINE_GLAPI *p_wglReleasePbufferDCARB)(struct wgl_pbuffer *,HDC);
BOOL (WINE_GLAPI *p_wglReleaseTexImageARB)(struct wgl_pbuffer *,int);
BOOL (WINE_GLAPI *p_wglSetPbufferAttribARB)(struct wgl_pbuffer *,const int*);