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
47f385ad
Commit
47f385ad
authored
May 14, 2013
by
Stefan Dösinger
Committed by
Alexandre Julliard
May 14, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Add a separate function for disabling shaders.
parent
036a62a2
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
79 additions
and
11 deletions
+79
-11
arb_program_shader.c
dlls/wined3d/arb_program_shader.c
+38
-3
context.c
dlls/wined3d/context.c
+2
-2
glsl_shader.c
dlls/wined3d/glsl_shader.c
+25
-4
shader.c
dlls/wined3d/shader.c
+13
-1
wined3d_private.h
dlls/wined3d/wined3d_private.h
+1
-1
No files found.
dlls/wined3d/arb_program_shader.c
View file @
47f385ad
...
...
@@ -4677,7 +4677,7 @@ static void shader_arb_select(const struct wined3d_context *context, enum wined3
checkGLcall
(
"glDisable(GL_FRAGMENT_PROGRAM_ARB)"
);
priv
->
current_fprogram_id
=
0
;
}
priv
->
fragment_pipe
->
enable_extension
(
gl_info
,
fragment_mode
==
WINED3D_SHADER_MODE_FFP
);
priv
->
fragment_pipe
->
enable_extension
(
gl_info
,
TRUE
);
}
if
(
vertex_mode
==
WINED3D_SHADER_MODE_SHADER
)
...
...
@@ -4724,13 +4724,47 @@ static void shader_arb_select(const struct wined3d_context *context, enum wined3
}
}
}
else
if
(
gl_info
->
supported
[
ARB_VERTEX_PROGRAM
])
else
{
if
(
gl_info
->
supported
[
ARB_VERTEX_PROGRAM
])
{
priv
->
current_vprogram_id
=
0
;
gl_info
->
gl_ops
.
gl
.
p_glDisable
(
GL_VERTEX_PROGRAM_ARB
);
checkGLcall
(
"glDisable(GL_VERTEX_PROGRAM_ARB)"
);
}
priv
->
vertex_pipe
->
vp_enable
(
gl_info
,
TRUE
);
}
}
/* Context activation is done by the caller. */
static
void
shader_arb_disable
(
void
*
shader_priv
,
const
struct
wined3d_context
*
context
)
{
const
struct
wined3d_gl_info
*
gl_info
=
context
->
gl_info
;
struct
shader_arb_priv
*
priv
=
shader_priv
;
if
(
gl_info
->
supported
[
ARB_FRAGMENT_PROGRAM
])
{
gl_info
->
gl_ops
.
gl
.
p_glDisable
(
GL_FRAGMENT_PROGRAM_ARB
);
checkGLcall
(
"glDisable(GL_FRAGMENT_PROGRAM_ARB)"
);
priv
->
current_fprogram_id
=
0
;
}
priv
->
fragment_pipe
->
enable_extension
(
gl_info
,
FALSE
);
if
(
gl_info
->
supported
[
ARB_VERTEX_PROGRAM
])
{
priv
->
current_vprogram_id
=
0
;
gl_info
->
gl_ops
.
gl
.
p_glDisable
(
GL_VERTEX_PROGRAM_ARB
);
checkGLcall
(
"glDisable(GL_VERTEX_PROGRAM_ARB)"
);
}
priv
->
vertex_pipe
->
vp_enable
(
gl_info
,
vertex_mode
==
WINED3D_SHADER_MODE_FFP
);
priv
->
vertex_pipe
->
vp_enable
(
gl_info
,
FALSE
);
if
(
gl_info
->
supported
[
ARB_COLOR_BUFFER_FLOAT
]
&&
priv
->
last_vs_color_unclamp
)
{
GL_EXTCALL
(
glClampColorARB
(
GL_CLAMP_VERTEX_COLOR_ARB
,
GL_FIXED_ONLY_ARB
));
checkGLcall
(
"glClampColorARB"
);
priv
->
last_vs_color_unclamp
=
FALSE
;
}
}
/* Context activation is done by the caller. */
...
...
@@ -5628,6 +5662,7 @@ const struct wined3d_shader_backend_ops arb_program_shader_backend =
{
shader_arb_handle_instruction
,
shader_arb_select
,
shader_arb_disable
,
shader_arb_select_depth_blt
,
shader_arb_deselect_depth_blt
,
shader_arb_update_float_vertex_constants
,
...
...
dlls/wined3d/context.c
View file @
47f385ad
/*
* Context and render target management in wined3d
*
* Copyright 2007-20
08
Stefan Dösinger for CodeWeavers
* Copyright 2007-20
11, 2013
Stefan Dösinger for CodeWeavers
* Copyright 2009-2011 Henri Verbeet for CodeWeavers
*
* This library is free software; you can redistribute it and/or
...
...
@@ -1922,7 +1922,7 @@ static void SetupForBlit(const struct wined3d_device *device, struct wined3d_con
set_blit_dimension
(
gl_info
,
rt_size
.
cx
,
rt_size
.
cy
);
/* Disable shaders */
device
->
shader_backend
->
shader_
select
(
context
,
WINED3D_SHADER_MODE_NONE
,
WINED3D_SHADER_MODE_NONE
);
device
->
shader_backend
->
shader_
disable
(
device
->
shader_priv
,
context
);
context
->
select_shader
=
1
;
context
->
load_constants
=
1
;
...
...
dlls/wined3d/glsl_shader.c
View file @
47f385ad
...
...
@@ -3,7 +3,7 @@
*
* Copyright 2006 Jason Green
* Copyright 2006-2007 Henri Verbeet
* Copyright 2007-200
8
Stefan Dösinger for CodeWeavers
* Copyright 2007-200
9, 2013
Stefan Dösinger for CodeWeavers
* Copyright 2009-2011 Henri Verbeet for CodeWeavers
*
* This library is free software; you can redistribute it and/or
...
...
@@ -5824,6 +5824,26 @@ static void shader_glsl_select(const struct wined3d_context *context, enum wined
}
/* Context activation is done by the caller. */
static
void
shader_glsl_disable
(
void
*
shader_priv
,
const
struct
wined3d_context
*
context
)
{
const
struct
wined3d_gl_info
*
gl_info
=
context
->
gl_info
;
struct
shader_glsl_priv
*
priv
=
shader_priv
;
priv
->
glsl_program
=
NULL
;
GL_EXTCALL
(
glUseProgramObjectARB
(
0
));
checkGLcall
(
"glUseProgramObjectARB"
);
priv
->
vertex_pipe
->
vp_enable
(
gl_info
,
FALSE
);
priv
->
fragment_pipe
->
enable_extension
(
gl_info
,
FALSE
);
if
(
gl_info
->
supported
[
ARB_COLOR_BUFFER_FLOAT
])
{
GL_EXTCALL
(
glClampColorARB
(
GL_CLAMP_VERTEX_COLOR_ARB
,
GL_FIXED_ONLY_ARB
));
checkGLcall
(
"glClampColorARB"
);
}
}
/* Context activation is done by the caller. */
static
void
shader_glsl_select_depth_blt
(
void
*
shader_priv
,
const
struct
wined3d_gl_info
*
gl_info
,
enum
tex_types
tex_type
,
const
SIZE
*
ds_mask_size
)
{
...
...
@@ -5907,7 +5927,7 @@ static void shader_glsl_destroy(struct wined3d_shader *shader)
{
TRACE
(
"Deleting pixel shader %u.
\n
"
,
gl_shaders
[
i
].
prgId
);
if
(
priv
->
glsl_program
&&
priv
->
glsl_program
->
ps
.
id
==
gl_shaders
[
i
].
prgId
)
shader_glsl_
select
(
context
,
WINED3D_SHADER_MODE_NONE
,
WINED3D_SHADER_MODE_NONE
);
shader_glsl_
disable
(
priv
,
context
);
GL_EXTCALL
(
glDeleteObjectARB
(
gl_shaders
[
i
].
prgId
));
checkGLcall
(
"glDeleteObjectARB"
);
}
...
...
@@ -5930,7 +5950,7 @@ static void shader_glsl_destroy(struct wined3d_shader *shader)
{
TRACE
(
"Deleting vertex shader %u.
\n
"
,
gl_shaders
[
i
].
prgId
);
if
(
priv
->
glsl_program
&&
priv
->
glsl_program
->
vs
.
id
==
gl_shaders
[
i
].
prgId
)
shader_glsl_
select
(
context
,
WINED3D_SHADER_MODE_NONE
,
WINED3D_SHADER_MODE_NONE
);
shader_glsl_
disable
(
priv
,
context
);
GL_EXTCALL
(
glDeleteObjectARB
(
gl_shaders
[
i
].
prgId
));
checkGLcall
(
"glDeleteObjectARB"
);
}
...
...
@@ -5953,7 +5973,7 @@ static void shader_glsl_destroy(struct wined3d_shader *shader)
{
TRACE
(
"Deleting geometry shader %u.
\n
"
,
gl_shaders
[
i
].
id
);
if
(
priv
->
glsl_program
&&
priv
->
glsl_program
->
gs
.
id
==
gl_shaders
[
i
].
id
)
shader_glsl_
select
(
context
,
WINED3D_SHADER_MODE_NONE
,
WINED3D_SHADER_MODE_NONE
);
shader_glsl_
disable
(
priv
,
context
);
GL_EXTCALL
(
glDeleteObjectARB
(
gl_shaders
[
i
].
id
));
checkGLcall
(
"glDeleteObjectARB"
);
}
...
...
@@ -6342,6 +6362,7 @@ const struct wined3d_shader_backend_ops glsl_shader_backend =
{
shader_glsl_handle_instruction
,
shader_glsl_select
,
shader_glsl_disable
,
shader_glsl_select_depth_blt
,
shader_glsl_deselect_depth_blt
,
shader_glsl_update_float_vertex_constants
,
...
...
dlls/wined3d/shader.c
View file @
47f385ad
...
...
@@ -4,7 +4,7 @@
* Copyright 2004 Christian Costa
* Copyright 2005 Oliver Stieber
* Copyright 2006 Ivan Gyurdiev
* Copyright 2007-2008 Stefan Dösinger for CodeWeavers
* Copyright 2007-2008
, 2013
Stefan Dösinger for CodeWeavers
* Copyright 2009-2011 Henri Verbeet for CodeWeavers
*
* This library is free software; you can redistribute it and/or
...
...
@@ -1516,6 +1516,7 @@ static void shader_none_load_np2fixup_constants(void *shader_priv,
static
void
shader_none_destroy
(
struct
wined3d_shader
*
shader
)
{}
static
void
shader_none_context_destroyed
(
void
*
shader_priv
,
const
struct
wined3d_context
*
context
)
{}
/* Context activation is done by the caller. */
static
void
shader_none_select
(
const
struct
wined3d_context
*
context
,
enum
wined3d_shader_mode
vertex_mode
,
enum
wined3d_shader_mode
fragment_mode
)
{
...
...
@@ -1527,6 +1528,16 @@ static void shader_none_select(const struct wined3d_context *context, enum wined
priv
->
fragment_pipe
->
enable_extension
(
gl_info
,
fragment_mode
==
WINED3D_SHADER_MODE_FFP
);
}
/* Context activation is done by the caller. */
static
void
shader_none_disable
(
void
*
shader_priv
,
const
struct
wined3d_context
*
context
)
{
struct
shader_none_priv
*
priv
=
shader_priv
;
const
struct
wined3d_gl_info
*
gl_info
=
context
->
gl_info
;
priv
->
vertex_pipe
->
vp_enable
(
gl_info
,
FALSE
);
priv
->
fragment_pipe
->
enable_extension
(
gl_info
,
FALSE
);
}
static
HRESULT
shader_none_alloc
(
struct
wined3d_device
*
device
,
const
struct
wined3d_vertex_pipe_ops
*
vertex_pipe
,
const
struct
fragment_pipeline
*
fragment_pipe
)
{
...
...
@@ -1603,6 +1614,7 @@ const struct wined3d_shader_backend_ops none_shader_backend =
{
shader_none_handle_instruction
,
shader_none_select
,
shader_none_disable
,
shader_none_select_depth_blt
,
shader_none_deselect_depth_blt
,
shader_none_update_float_vertex_constants
,
...
...
dlls/wined3d/wined3d_private.h
View file @
47f385ad
...
...
@@ -787,7 +787,6 @@ struct vs_compile_args {
enum
wined3d_shader_mode
{
WINED3D_SHADER_MODE_NONE
,
WINED3D_SHADER_MODE_FFP
,
WINED3D_SHADER_MODE_SHADER
,
};
...
...
@@ -802,6 +801,7 @@ struct wined3d_shader_backend_ops
void
(
*
shader_handle_instruction
)(
const
struct
wined3d_shader_instruction
*
);
void
(
*
shader_select
)(
const
struct
wined3d_context
*
context
,
enum
wined3d_shader_mode
vertex_mode
,
enum
wined3d_shader_mode
fragment_mode
);
void
(
*
shader_disable
)(
void
*
shader_priv
,
const
struct
wined3d_context
*
context
);
void
(
*
shader_select_depth_blt
)(
void
*
shader_priv
,
const
struct
wined3d_gl_info
*
gl_info
,
enum
tex_types
tex_type
,
const
SIZE
*
ds_mask_size
);
void
(
*
shader_deselect_depth_blt
)(
void
*
shader_priv
,
const
struct
wined3d_gl_info
*
gl_info
);
...
...
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