Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
f79ca75d
Commit
f79ca75d
authored
Nov 08, 2007
by
Stefan Dösinger
Committed by
Alexandre Julliard
Nov 09, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Implement a detection for the MacOS OpenGL implementation.
parent
8454cb17
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
49 additions
and
0 deletions
+49
-0
directx.c
dlls/wined3d/directx.c
+32
-0
wined3d_gl.h
include/wine/wined3d_gl.h
+17
-0
No files found.
dlls/wined3d/directx.c
View file @
f79ca75d
...
...
@@ -44,6 +44,8 @@ static const struct {
/* APPLE */
{
"GL_APPLE_client_storage"
,
APPLE_CLIENT_STORAGE
},
{
"GL_APPLE_fence"
,
APPLE_FENCE
},
{
"GL_APPLE_flush_render"
,
APPLE_FLUSH_RENDER
},
{
"GL_APPLE_ycbcr_422"
,
APPLE_YCBCR_422
},
/* ATI */
{
"GL_ATI_separate_stencil"
,
ATI_SEPARATE_STENCIL
},
...
...
@@ -2715,6 +2717,33 @@ ULONG WINAPI D3DCB_DefaultDestroyVolume(IWineD3DVolume *pVolume) {
return
IUnknown_Release
(
volumeParent
);
}
static
BOOL
implementation_is_apple
(
WineD3D_GL_Info
*
gl_info
)
{
/* MacOS has various specialities in the extensions it advertises. Some have to be loaded from
* the opengl 1.2+ core, while other extensions are advertised, but software emulated. So try to
* detect the Apple OpenGL implementation to apply some extension fixups afterwards.
*
* Detecting this isn't really easy. The vendor string doesn't mention Apple. Compile-time checks
* aren't sufficient either because a Linux binary may display on a macos X server via remote X11.
* So try to detect the GL implementation by looking at certain Apple extensions. Some extensions
* like client storage might be supported on other implementations too, but GL_APPLE_flush_render
* is specific to the MacOS window management, and GL_APPLE_ycbcr_422 is a Quicktime specific, so
* it the chance that other implementations support it is rather rare since Win32 Quicktime uses
* DirectDraw, not OpenGL.
*/
if
(
gl_info
->
supported
[
APPLE_FENCE
]
&&
gl_info
->
supported
[
APPLE_CLIENT_STORAGE
]
&&
gl_info
->
supported
[
APPLE_FLUSH_RENDER
]
&&
gl_info
->
supported
[
APPLE_YCBCR_422
])
{
TRACE_
(
d3d_caps
)(
"GL_APPLE_fence, GL_APPLE_client_storage, GL_APPLE_flush_render and GL_ycbcr_422 are supported
\n
"
);
TRACE_
(
d3d_caps
)(
"Activating MacOS fixups
\n
"
);
return
TRUE
;
}
else
{
TRACE_
(
d3d_caps
)(
"Apple extensions are not supported
\n
"
);
TRACE_
(
d3d_caps
)(
"Not activating MacOS fixups
\n
"
);
return
FALSE
;
}
}
#define PUSH1(att) attribs[nAttribs++] = (att);
#define GLINFO_LOCATION (Adapters[0].gl_info)
BOOL
InitAdapters
(
void
)
{
...
...
@@ -2769,6 +2798,7 @@ BOOL InitAdapters(void) {
int
attribute
;
DISPLAY_DEVICEW
DisplayDevice
;
HDC
hdc
;
BOOL
apple
;
TRACE
(
"Initializing default adapter
\n
"
);
Adapters
[
0
].
monitorPoint
.
x
=
-
1
;
...
...
@@ -2853,6 +2883,8 @@ BOOL InitAdapters(void) {
}
WineD3D_ReleaseFakeGLContext
();
apple
=
implementation_is_apple
(
&
Adapters
[
0
].
gl_info
);
select_shader_mode
(
&
Adapters
[
0
].
gl_info
,
WINED3DDEVTYPE_HAL
,
&
ps_selected_mode
,
&
vs_selected_mode
);
select_shader_max_constants
(
ps_selected_mode
,
vs_selected_mode
,
&
Adapters
[
0
].
gl_info
);
...
...
include/wine/wined3d_gl.h
View file @
f79ca75d
...
...
@@ -2854,6 +2854,18 @@ typedef int (WINE_GLAPI * PGLXFNWAITVIDEOSYNCSGIPROC) (int, int, unsigned int *)
#define GL_DEPTH_CLAMP_NV 0x864F
#endif
/* GL_APPLE_flush_render */
typedef
void
(
WINE_GLAPI
*
PGLFNFLUSHRENDERAPPLEPROC
)
(
void
);
typedef
void
(
WINE_GLAPI
*
PGLFNFINISHRENDERAPPLEPROC
)
(
void
);
/* GL_APPLE_ycbcr_422 */
#ifndef GL_APPLE_ycbcr_422
#define GL_APPLE_ycbcr_422
#define GL_YCBCR_422_APPLE 0x85B9
#define UNSIGNED_SHORT_8_8_APPLE 0x85BA
#define UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
#endif
/* GL_VERSION_2_0 */
#ifndef GL_VERSION_2_0
#define GL_VERSION_2_0 1
...
...
@@ -3206,6 +3218,8 @@ typedef enum _GL_SupportedExt {
/* APPLE */
APPLE_FENCE
,
APPLE_CLIENT_STORAGE
,
APPLE_FLUSH_RENDER
,
APPLE_YCBCR_422
,
/* SGI */
SGI_VIDEO_SYNC
,
SGIS_GENERATE_MIPMAP
,
...
...
@@ -3488,6 +3502,9 @@ typedef enum _GL_SupportedExt {
/* GLX_SGI_video_sync */
\
USE_GL_FUNC(PGLXFNGETVIDEOSYNCSGIPROC, glXGetVideoSyncSGI); \
USE_GL_FUNC(PGLXFNWAITVIDEOSYNCSGIPROC, glXWaitVideoSyncSGI); \
/* GL_APPLE_flush_render */
\
USE_GL_FUNC(PGLFNFLUSHRENDERAPPLEPROC, glFlushRenderApple); \
USE_GL_FUNC(PGLFNFINISHRENDERAPPLEPROC, glFinishRenderApple); \
/* OpenGL 2.0 functions */
#define GL2_FUNCS_GEN \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment