Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
8a7f4279
Commit
8a7f4279
authored
Nov 27, 2006
by
H. Verbeet
Committed by
Alexandre Julliard
Nov 28, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Select the right shader backend when creating the device.
parent
df6f482a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
12 additions
and
18 deletions
+12
-18
directx.c
dlls/wined3d/directx.c
+7
-0
drawprim.c
dlls/wined3d/drawprim.c
+4
-18
wined3d_private.h
dlls/wined3d/wined3d_private.h
+1
-0
No files found.
dlls/wined3d/directx.c
View file @
8a7f4279
...
...
@@ -2438,6 +2438,13 @@ static HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter,
IWineD3DImpl_FillGLCaps
(
iface
,
IWineD3DImpl_GetAdapterDisplay
(
iface
,
Adapter
));
LEAVE_GL
();
select_shader_mode
(
&
This
->
gl_info
,
DeviceType
,
&
object
->
ps_selected_mode
,
&
object
->
vs_selected_mode
);
if
(
object
->
ps_selected_mode
==
SHADER_GLSL
||
object
->
vs_selected_mode
==
SHADER_GLSL
)
{
object
->
shader_backend
=
&
glsl_shader_backend
;
}
else
if
(
object
->
ps_selected_mode
==
SHADER_ARB
||
object
->
vs_selected_mode
==
SHADER_ARB
)
{
object
->
shader_backend
=
&
arb_program_shader_backend
;
}
else
{
object
->
shader_backend
=
&
none_shader_backend
;
}
/* This function should *not* be modifying GL caps
* TODO: move the functionality where it belongs */
...
...
dlls/wined3d/drawprim.c
View file @
8a7f4279
...
...
@@ -1802,18 +1802,10 @@ inline static void drawPrimitiveDrawStrided(
}
/* Make any shaders active */
if
(
This
->
vs_selected_mode
==
SHADER_GLSL
||
This
->
ps_selected_mode
==
SHADER_GLSL
)
{
glsl_shader_backend
.
shader_select
(
iface
,
usePixelShaderFunction
,
useVertexShaderFunction
);
}
else
if
(
This
->
vs_selected_mode
==
SHADER_ARB
||
This
->
ps_selected_mode
==
SHADER_ARB
)
{
arb_program_shader_backend
.
shader_select
(
iface
,
usePixelShaderFunction
,
useVertexShaderFunction
);
}
This
->
shader_backend
->
shader_select
(
iface
,
usePixelShaderFunction
,
useVertexShaderFunction
);
/* Load any global constants/uniforms that may have been set by the application */
if
(
This
->
vs_selected_mode
==
SHADER_GLSL
||
This
->
ps_selected_mode
==
SHADER_GLSL
)
{
glsl_shader_backend
.
shader_load_constants
(
iface
,
usePixelShaderFunction
,
useVertexShaderFunction
);
}
else
if
(
This
->
vs_selected_mode
==
SHADER_ARB
||
This
->
ps_selected_mode
==
SHADER_ARB
)
{
arb_program_shader_backend
.
shader_load_constants
(
iface
,
usePixelShaderFunction
,
useVertexShaderFunction
);
}
This
->
shader_backend
->
shader_load_constants
(
iface
,
usePixelShaderFunction
,
useVertexShaderFunction
);
/* Draw vertex-by-vertex */
if
(
useDrawStridedSlow
)
...
...
@@ -1822,11 +1814,7 @@ inline static void drawPrimitiveDrawStrided(
drawStridedFast
(
iface
,
numberOfIndicies
,
glPrimType
,
idxData
,
idxSize
,
minIndex
,
StartIdx
);
/* Cleanup any shaders */
if
(
This
->
vs_selected_mode
==
SHADER_GLSL
||
This
->
ps_selected_mode
==
SHADER_GLSL
)
{
glsl_shader_backend
.
shader_cleanup
(
usePixelShaderFunction
,
useVertexShaderFunction
);
}
else
if
(
This
->
vs_selected_mode
==
SHADER_ARB
||
This
->
ps_selected_mode
==
SHADER_ARB
)
{
arb_program_shader_backend
.
shader_cleanup
(
usePixelShaderFunction
,
useVertexShaderFunction
);
}
This
->
shader_backend
->
shader_cleanup
(
usePixelShaderFunction
,
useVertexShaderFunction
);
/* Unload vertex data */
if
(
useVertexShaderFunction
)
{
...
...
@@ -2046,7 +2034,6 @@ static void check_fbo_status(IWineD3DDevice *iface) {
static
void
depth_blt
(
IWineD3DDevice
*
iface
,
GLuint
texture
)
{
IWineD3DDeviceImpl
*
This
=
(
IWineD3DDeviceImpl
*
)
iface
;
BOOL
glsl_mode
=
This
->
vs_selected_mode
==
SHADER_GLSL
||
This
->
ps_selected_mode
==
SHADER_GLSL
;
glPushAttrib
(
GL_ENABLE_BIT
|
GL_DEPTH_BUFFER_BIT
);
...
...
@@ -2061,8 +2048,7 @@ static void depth_blt(IWineD3DDevice *iface, GLuint texture) {
glBindTexture
(
GL_TEXTURE_2D
,
texture
);
glEnable
(
GL_TEXTURE_2D
);
if
(
glsl_mode
)
glsl_shader_backend
.
shader_select_depth_blt
(
iface
);
else
arb_program_shader_backend
.
shader_select_depth_blt
(
iface
);
This
->
shader_backend
->
shader_select_depth_blt
(
iface
);
glBegin
(
GL_TRIANGLE_STRIP
);
glVertex2f
(
-
1
.
0
f
,
-
1
.
0
f
);
...
...
dlls/wined3d/wined3d_private.h
View file @
8a7f4279
...
...
@@ -515,6 +515,7 @@ typedef struct IWineD3DDeviceImpl
/* Selected capabilities */
int
vs_selected_mode
;
int
ps_selected_mode
;
const
shader_backend_t
*
shader_backend
;
/* Optimization */
BOOL
modelview_valid
;
...
...
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