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
43c31e68
Commit
43c31e68
authored
May 17, 2016
by
Henri Verbeet
Committed by
Alexandre Julliard
May 18, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Store vertex shader integer constants as wined3d_ivec4 structures.
Signed-off-by:
Henri Verbeet
<
hverbeet@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
4f1acfeb
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
36 additions
and
26 deletions
+36
-26
arb_program_shader.c
dlls/wined3d/arb_program_shader.c
+6
-6
device.c
dlls/wined3d/device.c
+2
-2
glsl_shader.c
dlls/wined3d/glsl_shader.c
+7
-7
stateblock.c
dlls/wined3d/stateblock.c
+3
-10
utils.c
dlls/wined3d/utils.c
+8
-0
wined3d_private.h
dlls/wined3d/wined3d_private.h
+2
-1
wined3d.h
include/wine/wined3d.h
+8
-0
No files found.
dlls/wined3d/arb_program_shader.c
View file @
43c31e68
...
...
@@ -625,9 +625,9 @@ static void shader_arb_vs_local_constants(const struct arb_vs_compiled_shader *g
if
(
gl_shader
->
int_consts
[
i
]
!=
WINED3D_CONST_NUM_UNUSED
)
{
float
val
[
4
];
val
[
0
]
=
(
float
)
state
->
vs_consts_i
[
4
*
i
]
;
val
[
1
]
=
(
float
)
state
->
vs_consts_i
[
4
*
i
+
1
]
;
val
[
2
]
=
(
float
)
state
->
vs_consts_i
[
4
*
i
+
2
]
;
val
[
0
]
=
(
float
)
state
->
vs_consts_i
[
i
].
x
;
val
[
1
]
=
(
float
)
state
->
vs_consts_i
[
i
].
y
;
val
[
2
]
=
(
float
)
state
->
vs_consts_i
[
i
].
z
;
val
[
3
]
=
-
1
.
0
f
;
GL_EXTCALL
(
glProgramLocalParameter4fvARB
(
GL_VERTEX_PROGRAM_ARB
,
gl_shader
->
int_consts
[
i
],
val
));
...
...
@@ -4675,9 +4675,9 @@ static void find_arb_vs_compile_args(const struct wined3d_state *state,
}
else
{
args
->
loop_ctrl
[
i
][
0
]
=
state
->
vs_consts_i
[
i
*
4
]
;
args
->
loop_ctrl
[
i
][
1
]
=
state
->
vs_consts_i
[
i
*
4
+
1
]
;
args
->
loop_ctrl
[
i
][
2
]
=
state
->
vs_consts_i
[
i
*
4
+
2
]
;
args
->
loop_ctrl
[
i
][
0
]
=
state
->
vs_consts_i
[
i
].
x
;
args
->
loop_ctrl
[
i
][
1
]
=
state
->
vs_consts_i
[
i
].
y
;
args
->
loop_ctrl
[
i
][
2
]
=
state
->
vs_consts_i
[
i
].
z
;
}
}
}
...
...
dlls/wined3d/device.c
View file @
43c31e68
...
...
@@ -2430,7 +2430,7 @@ HRESULT CDECL wined3d_device_set_vs_consts_i(struct wined3d_device *device,
if
(
!
constants
||
start_register
>=
WINED3D_MAX_CONSTS_I
)
return
WINED3DERR_INVALIDCALL
;
memcpy
(
&
device
->
update_state
->
vs_consts_i
[
start_register
*
4
],
constants
,
count
*
sizeof
(
int
)
*
4
);
memcpy
(
&
device
->
update_state
->
vs_consts_i
[
start_register
],
constants
,
count
*
sizeof
(
int
)
*
4
);
for
(
i
=
0
;
i
<
count
;
++
i
)
TRACE
(
"Set INT constant %u to {%d, %d, %d, %d}.
\n
"
,
start_register
+
i
,
constants
[
i
*
4
],
constants
[
i
*
4
+
1
],
...
...
@@ -2460,7 +2460,7 @@ HRESULT CDECL wined3d_device_get_vs_consts_i(const struct wined3d_device *device
if
(
!
constants
||
start_register
>=
WINED3D_MAX_CONSTS_I
)
return
WINED3DERR_INVALIDCALL
;
memcpy
(
constants
,
&
device
->
state
.
vs_consts_i
[
start_register
*
4
],
count
*
sizeof
(
int
)
*
4
);
memcpy
(
constants
,
&
device
->
state
.
vs_consts_i
[
start_register
],
count
*
sizeof
(
int
)
*
4
);
return
WINED3D_OK
;
}
...
...
dlls/wined3d/glsl_shader.c
View file @
43c31e68
...
...
@@ -728,8 +728,8 @@ static void shader_glsl_load_constants_f(const struct wined3d_shader *shader, co
}
/* Context activation is done by the caller. */
static
void
shader_glsl_load_constants
I
(
const
struct
wined3d_shader
*
shader
,
const
struct
wined3d_gl_info
*
gl_info
,
const
GLint
locations
[
WINED3D_MAX_CONSTS_I
],
const
int
*
constants
,
WORD
constants_set
)
static
void
shader_glsl_load_constants
_i
(
const
struct
wined3d_shader
*
shader
,
const
struct
wined3d_gl_info
*
gl_info
,
const
struct
wined3d_ivec4
*
constants
,
const
GLint
locations
[
WINED3D_MAX_CONSTS_I
]
,
WORD
constants_set
)
{
unsigned
int
i
;
struct
list
*
ptr
;
...
...
@@ -739,7 +739,7 @@ static void shader_glsl_load_constantsI(const struct wined3d_shader *shader, con
if
(
!
(
constants_set
&
1
))
continue
;
/* We found this uniform name in the program - go ahead and send the data */
GL_EXTCALL
(
glUniform4iv
(
locations
[
i
],
1
,
&
constants
[
i
*
4
]
));
GL_EXTCALL
(
glUniform4iv
(
locations
[
i
],
1
,
&
constants
[
i
].
x
));
}
/* Load immediate constants */
...
...
@@ -1335,8 +1335,8 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
prog
->
vs
.
uniform_f_locations
,
&
priv
->
vconst_heap
,
priv
->
stack
,
constant_version
);
if
(
update_mask
&
WINED3D_SHADER_CONST_VS_I
)
shader_glsl_load_constants
I
(
vshader
,
gl_info
,
prog
->
vs
.
uniform_i_locations
,
state
->
vs_consts_i
,
vshader
->
reg_maps
.
integer_constants
);
shader_glsl_load_constants
_i
(
vshader
,
gl_info
,
state
->
vs_consts_i
,
prog
->
vs
.
uniform_i_locations
,
vshader
->
reg_maps
.
integer_constants
);
if
(
update_mask
&
WINED3D_SHADER_CONST_VS_B
)
shader_glsl_load_constantsB
(
vshader
,
gl_info
,
prog
->
vs
.
uniform_b_locations
,
state
->
vs_consts_b
,
...
...
@@ -1408,8 +1408,8 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
prog
->
ps
.
uniform_f_locations
,
&
priv
->
pconst_heap
,
priv
->
stack
,
constant_version
);
if
(
update_mask
&
WINED3D_SHADER_CONST_PS_I
)
shader_glsl_load_constants
I
(
pshader
,
gl_info
,
prog
->
ps
.
uniform_i_locations
,
state
->
ps_consts_i
,
pshader
->
reg_maps
.
integer_constants
);
shader_glsl_load_constants
_i
(
pshader
,
gl_info
,
(
const
struct
wined3d_ivec4
*
)
state
->
ps_consts_i
,
p
rog
->
ps
.
uniform_i_locations
,
p
shader
->
reg_maps
.
integer_constants
);
if
(
update_mask
&
WINED3D_SHADER_CONST_PS_B
)
shader_glsl_load_constantsB
(
pshader
,
gl_info
,
prog
->
ps
.
uniform_b_locations
,
state
->
ps_consts_b
,
...
...
dlls/wined3d/stateblock.c
View file @
43c31e68
...
...
@@ -643,16 +643,9 @@ void CDECL wined3d_stateblock_capture(struct wined3d_stateblock *stateblock)
{
unsigned
int
idx
=
stateblock
->
contained_vs_consts_i
[
i
];
TRACE
(
"Setting vs_consts[%u] to {%d, %d, %d, %d}.
\n
"
,
idx
,
src_state
->
vs_consts_i
[
idx
*
4
+
0
],
src_state
->
vs_consts_i
[
idx
*
4
+
1
],
src_state
->
vs_consts_i
[
idx
*
4
+
2
],
src_state
->
vs_consts_i
[
idx
*
4
+
3
]);
TRACE
(
"Setting vs_consts[%u] to %s.
\n
"
,
idx
,
debug_ivec4
(
&
src_state
->
vs_consts_i
[
idx
]));
stateblock
->
state
.
vs_consts_i
[
idx
*
4
+
0
]
=
src_state
->
vs_consts_i
[
idx
*
4
+
0
];
stateblock
->
state
.
vs_consts_i
[
idx
*
4
+
1
]
=
src_state
->
vs_consts_i
[
idx
*
4
+
1
];
stateblock
->
state
.
vs_consts_i
[
idx
*
4
+
2
]
=
src_state
->
vs_consts_i
[
idx
*
4
+
2
];
stateblock
->
state
.
vs_consts_i
[
idx
*
4
+
3
]
=
src_state
->
vs_consts_i
[
idx
*
4
+
3
];
stateblock
->
state
.
vs_consts_i
[
idx
]
=
src_state
->
vs_consts_i
[
idx
];
}
/* Vertex shader boolean constants. */
...
...
@@ -919,7 +912,7 @@ void CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblock)
for
(
i
=
0
;
i
<
stateblock
->
num_contained_vs_consts_i
;
++
i
)
{
wined3d_device_set_vs_consts_i
(
device
,
stateblock
->
contained_vs_consts_i
[
i
],
stateblock
->
state
.
vs_consts_i
+
stateblock
->
contained_vs_consts_i
[
i
]
*
4
,
1
);
&
stateblock
->
state
.
vs_consts_i
[
stateblock
->
contained_vs_consts_i
[
i
]].
x
,
1
);
}
for
(
i
=
0
;
i
<
stateblock
->
num_contained_vs_consts_b
;
++
i
)
{
...
...
dlls/wined3d/utils.c
View file @
43c31e68
...
...
@@ -3365,6 +3365,14 @@ const char *debug_color(const struct wined3d_color *color)
color
->
r
,
color
->
g
,
color
->
b
,
color
->
a
);
}
const
char
*
debug_ivec4
(
const
struct
wined3d_ivec4
*
v
)
{
if
(
!
v
)
return
"(null)"
;
return
wine_dbg_sprintf
(
"{%d, %d, %d, %d}"
,
v
->
x
,
v
->
y
,
v
->
z
,
v
->
w
);
}
const
char
*
debug_vec4
(
const
struct
wined3d_vec4
*
v
)
{
if
(
!
v
)
...
...
dlls/wined3d/wined3d_private.h
View file @
43c31e68
...
...
@@ -2213,7 +2213,7 @@ struct wined3d_state
struct
wined3d_shader_resource_view
*
shader_resource_view
[
WINED3D_SHADER_TYPE_COUNT
][
MAX_SHADER_RESOURCE_VIEWS
];
BOOL
vs_consts_b
[
MAX_CONST_B
];
INT
vs_consts_i
[
WINED3D_MAX_CONSTS_I
*
4
];
struct
wined3d_ivec4
vs_consts_i
[
WINED3D_MAX_CONSTS_I
];
struct
wined3d_vec4
vs_consts_f
[
WINED3D_MAX_VS_CONSTS_F
];
BOOL
ps_consts_b
[
MAX_CONST_B
];
...
...
@@ -3103,6 +3103,7 @@ const char *debug_d3dpool(enum wined3d_pool pool) DECLSPEC_HIDDEN;
const
char
*
debug_fboattachment
(
GLenum
attachment
)
DECLSPEC_HIDDEN
;
const
char
*
debug_fbostatus
(
GLenum
status
)
DECLSPEC_HIDDEN
;
const
char
*
debug_glerror
(
GLenum
error
)
DECLSPEC_HIDDEN
;
const
char
*
debug_ivec4
(
const
struct
wined3d_ivec4
*
v
)
DECLSPEC_HIDDEN
;
const
char
*
debug_shader_type
(
enum
wined3d_shader_type
shader_type
)
DECLSPEC_HIDDEN
;
const
char
*
debug_vec4
(
const
struct
wined3d_vec4
*
v
)
DECLSPEC_HIDDEN
;
void
dump_color_fixup_desc
(
struct
color_fixup_desc
fixup
)
DECLSPEC_HIDDEN
;
...
...
include/wine/wined3d.h
View file @
43c31e68
...
...
@@ -1505,6 +1505,14 @@ struct wined3d_vec4
float
w
;
};
struct
wined3d_ivec4
{
int
x
;
int
y
;
int
z
;
int
w
;
};
struct
wined3d_matrix
{
float
_11
,
_12
,
_13
,
_14
;
...
...
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