mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 01:10:16 +01:00
wgl: Expose pipe_screen/pipe_context via an extension.
This commit is contained in:
parent
3ab3209a1f
commit
4e1e18a772
4 changed files with 133 additions and 1 deletions
|
|
@ -29,6 +29,7 @@ if env['platform'] in ['windows']:
|
|||
'shared/stw_extensionsstring.c',
|
||||
'shared/stw_extswapinterval.c',
|
||||
'shared/stw_getprocaddress.c',
|
||||
'shared/stw_extgallium.c',
|
||||
'shared/stw_arbpixelformat.c',
|
||||
'shared/stw_tls.c',
|
||||
]
|
||||
|
|
|
|||
79
src/gallium/state_trackers/wgl/shared/stw_extgallium.c
Normal file
79
src/gallium/state_trackers/wgl/shared/stw_extgallium.c
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
#include "pipe/p_screen.h"
|
||||
#include "stw_public.h"
|
||||
#include "stw_device.h"
|
||||
#include "stw_winsys.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
#include "trace/tr_screen.h"
|
||||
#include "trace/tr_context.h"
|
||||
#endif
|
||||
|
||||
|
||||
struct pipe_screen * APIENTRY
|
||||
wglGetGalliumScreenMESA(void)
|
||||
{
|
||||
return stw_dev ? stw_dev->screen : NULL;
|
||||
}
|
||||
|
||||
|
||||
/* XXX: Unify with stw_create_layer_context */
|
||||
struct pipe_context * APIENTRY
|
||||
wglCreateGalliumContextMESA(void)
|
||||
{
|
||||
struct pipe_screen *screen = NULL;
|
||||
struct pipe_context *pipe = NULL;
|
||||
|
||||
if(!stw_dev)
|
||||
return NULL;
|
||||
|
||||
screen = stw_dev->screen;
|
||||
|
||||
#ifdef DEBUG
|
||||
/* Unwrap screen */
|
||||
if(stw_dev->trace_running)
|
||||
screen = trace_screen(screen)->screen;
|
||||
#endif
|
||||
|
||||
pipe = stw_dev->stw_winsys->create_context( screen );
|
||||
if (pipe == NULL)
|
||||
goto no_pipe;
|
||||
|
||||
#ifdef DEBUG
|
||||
/* Wrap context */
|
||||
if(stw_dev->trace_running)
|
||||
pipe = trace_context_create(stw_dev->screen, pipe);
|
||||
#endif
|
||||
|
||||
return pipe;
|
||||
|
||||
no_pipe:
|
||||
return NULL;
|
||||
}
|
||||
47
src/gallium/state_trackers/wgl/shared/stw_extgallium.h
Normal file
47
src/gallium/state_trackers/wgl/shared/stw_extgallium.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2009 VMware, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef STW_EXTGALLIUM_H_
|
||||
#define STW_EXTGALLIUM_H_
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
|
||||
struct pipe_screen;
|
||||
struct pipe_context;
|
||||
|
||||
|
||||
struct pipe_screen * APIENTRY
|
||||
wglGetGalliumScreenMESA(void);
|
||||
|
||||
|
||||
struct pipe_context * APIENTRY
|
||||
wglCreateGalliumContextMESA(void);
|
||||
|
||||
|
||||
#endif /* STW_EXTGALLIUM_H_ */
|
||||
|
|
@ -34,6 +34,7 @@
|
|||
|
||||
#include "glapi/glapi.h"
|
||||
#include "stw_public.h"
|
||||
#include "stw_extgallium.h"
|
||||
|
||||
struct stw_extension_entry
|
||||
{
|
||||
|
|
@ -60,6 +61,10 @@ static const struct stw_extension_entry stw_extension_entries[] = {
|
|||
STW_EXTENSION_ENTRY( wglGetSwapIntervalEXT ),
|
||||
STW_EXTENSION_ENTRY( wglSwapIntervalEXT ),
|
||||
|
||||
/* WGL_EXT_gallium ? */
|
||||
STW_EXTENSION_ENTRY( wglGetGalliumScreenMESA ),
|
||||
STW_EXTENSION_ENTRY( wglCreateGalliumContextMESA ),
|
||||
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
|
|
@ -75,7 +80,7 @@ stw_get_proc_address(
|
|||
return entry->proc;
|
||||
|
||||
if (lpszProc[0] == 'g' && lpszProc[1] == 'l')
|
||||
return (PROC) _glapi_get_proc_address( lpszProc );
|
||||
return (PROC) _glapi_get_proc_address( lpszProc );
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue