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
eb78c2a0
Commit
eb78c2a0
authored
Nov 25, 2008
by
Henri Verbeet
Committed by
Alexandre Julliard
Nov 26, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Const correctness fixes for utils.c.
parent
5118108c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
57 additions
and
45 deletions
+57
-45
arb_program_shader.c
dlls/wined3d/arb_program_shader.c
+12
-10
ati_fragment_shader.c
dlls/wined3d/ati_fragment_shader.c
+12
-10
glsl_shader.c
dlls/wined3d/glsl_shader.c
+7
-5
utils.c
dlls/wined3d/utils.c
+18
-12
wined3d_private.h
dlls/wined3d/wined3d_private.h
+8
-8
No files found.
dlls/wined3d/arb_program_shader.c
View file @
eb78c2a0
...
...
@@ -3025,7 +3025,7 @@ static void fragment_prog_arbfp(DWORD state, IWineD3DStateBlockImpl *stateblock,
BOOL
use_pshader
=
use_ps
(
device
);
BOOL
use_vshader
=
use_vs
(
device
);
struct
ffp_frag_settings
settings
;
struct
arbfp_ffp_desc
*
desc
;
const
struct
arbfp_ffp_desc
*
desc
;
unsigned
int
i
;
if
(
isStateDirty
(
context
,
STATE_RENDER
(
WINED3DRS_FOGENABLE
)))
{
...
...
@@ -3043,23 +3043,25 @@ static void fragment_prog_arbfp(DWORD state, IWineD3DStateBlockImpl *stateblock,
if
(
!
use_pshader
)
{
/* Find or create a shader implementing the fixed function pipeline settings, then activate it */
gen_ffp_frag_op
(
stateblock
,
&
settings
,
FALSE
);
desc
=
(
struct
arbfp_ffp_desc
*
)
find_ffp_frag_shader
(
priv
->
fragment_shaders
,
&
settings
);
desc
=
(
const
struct
arbfp_ffp_desc
*
)
find_ffp_frag_shader
(
priv
->
fragment_shaders
,
&
settings
);
if
(
!
desc
)
{
desc
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
desc
));
if
(
!
desc
)
{
struct
arbfp_ffp_desc
*
new_desc
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
new_desc
));
if
(
!
new_desc
)
{
ERR
(
"Out of memory
\n
"
);
return
;
}
desc
->
num_textures_used
=
0
;
new_
desc
->
num_textures_used
=
0
;
for
(
i
=
0
;
i
<
GL_LIMITS
(
texture_stages
);
i
++
)
{
if
(
settings
.
op
[
i
].
cop
==
WINED3DTOP_DISABLE
)
break
;
desc
->
num_textures_used
=
i
;
new_
desc
->
num_textures_used
=
i
;
}
memcpy
(
&
desc
->
parent
.
settings
,
&
settings
,
sizeof
(
settings
));
desc
->
shader
=
gen_arbfp_ffp_shader
(
&
settings
,
stateblock
);
add_ffp_frag_shader
(
priv
->
fragment_shaders
,
&
desc
->
parent
);
TRACE
(
"Allocated fixed function replacement shader descriptor %p
\n
"
,
desc
);
memcpy
(
&
new_desc
->
parent
.
settings
,
&
settings
,
sizeof
(
settings
));
new_desc
->
shader
=
gen_arbfp_ffp_shader
(
&
settings
,
stateblock
);
add_ffp_frag_shader
(
priv
->
fragment_shaders
,
&
new_desc
->
parent
);
TRACE
(
"Allocated fixed function replacement shader descriptor %p
\n
"
,
new_desc
);
desc
=
new_desc
;
}
/* Now activate the replacement program. GL_FRAGMENT_PROGRAM_ARB is already active(however, note the
...
...
dlls/wined3d/ati_fragment_shader.c
View file @
eb78c2a0
...
...
@@ -802,30 +802,32 @@ static GLuint gen_ati_shader(struct texture_stage_op op[MAX_TEXTURES], WineD3D_G
#define GLINFO_LOCATION stateblock->wineD3DDevice->adapter->gl_info
static
void
set_tex_op_atifs
(
DWORD
state
,
IWineD3DStateBlockImpl
*
stateblock
,
WineD3DContext
*
context
)
{
IWineD3DDeviceImpl
*
This
=
stateblock
->
wineD3DDevice
;
struct
atifs_ffp_desc
*
desc
;
const
struct
atifs_ffp_desc
*
desc
;
struct
ffp_frag_settings
settings
;
struct
atifs_private_data
*
priv
=
(
struct
atifs_private_data
*
)
This
->
fragment_priv
;
DWORD
mapped_stage
;
unsigned
int
i
;
gen_ffp_frag_op
(
stateblock
,
&
settings
,
TRUE
);
desc
=
(
struct
atifs_ffp_desc
*
)
find_ffp_frag_shader
(
priv
->
fragment_shaders
,
&
settings
);
desc
=
(
const
struct
atifs_ffp_desc
*
)
find_ffp_frag_shader
(
priv
->
fragment_shaders
,
&
settings
);
if
(
!
desc
)
{
desc
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
desc
));
if
(
!
desc
)
{
struct
atifs_ffp_desc
*
new_desc
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
new_desc
));
if
(
!
new_desc
)
{
ERR
(
"Out of memory
\n
"
);
return
;
}
desc
->
num_textures_used
=
0
;
new_
desc
->
num_textures_used
=
0
;
for
(
i
=
0
;
i
<
GL_LIMITS
(
texture_stages
);
i
++
)
{
if
(
settings
.
op
[
i
].
cop
==
WINED3DTOP_DISABLE
)
break
;
desc
->
num_textures_used
=
i
;
new_
desc
->
num_textures_used
=
i
;
}
memcpy
(
&
desc
->
parent
.
settings
,
&
settings
,
sizeof
(
settings
));
desc
->
shader
=
gen_ati_shader
(
settings
.
op
,
&
GLINFO_LOCATION
);
add_ffp_frag_shader
(
priv
->
fragment_shaders
,
&
desc
->
parent
);
TRACE
(
"Allocated fixed function replacement shader descriptor %p
\n
"
,
desc
);
memcpy
(
&
new_desc
->
parent
.
settings
,
&
settings
,
sizeof
(
settings
));
new_desc
->
shader
=
gen_ati_shader
(
settings
.
op
,
&
GLINFO_LOCATION
);
add_ffp_frag_shader
(
priv
->
fragment_shaders
,
&
new_desc
->
parent
);
TRACE
(
"Allocated fixed function replacement shader descriptor %p
\n
"
,
new_desc
);
desc
=
new_desc
;
}
/* GL_ATI_fragment_shader depends on the GL_TEXTURE_xD enable settings. Update the texture stages
...
...
dlls/wined3d/glsl_shader.c
View file @
eb78c2a0
...
...
@@ -3561,8 +3561,9 @@ static void shader_glsl_destroy(IWineD3DBaseShader *iface) {
}
}
static
unsigned
int
glsl_program_key_hash
(
void
*
key
)
{
glsl_program_key_t
*
k
=
(
glsl_program_key_t
*
)
key
;
static
unsigned
int
glsl_program_key_hash
(
const
void
*
key
)
{
const
glsl_program_key_t
*
k
=
(
const
glsl_program_key_t
*
)
key
;
unsigned
int
hash
=
k
->
vshader
|
((
DWORD_PTR
)
k
->
pshader
)
<<
16
;
hash
+=
~
(
hash
<<
15
);
...
...
@@ -3575,9 +3576,10 @@ static unsigned int glsl_program_key_hash(void *key) {
return
hash
;
}
static
BOOL
glsl_program_key_compare
(
void
*
keya
,
void
*
keyb
)
{
glsl_program_key_t
*
ka
=
(
glsl_program_key_t
*
)
keya
;
glsl_program_key_t
*
kb
=
(
glsl_program_key_t
*
)
keyb
;
static
BOOL
glsl_program_key_compare
(
const
void
*
keya
,
const
void
*
keyb
)
{
const
glsl_program_key_t
*
ka
=
(
const
glsl_program_key_t
*
)
keya
;
const
glsl_program_key_t
*
kb
=
(
const
glsl_program_key_t
*
)
keyb
;
return
ka
->
vshader
==
kb
->
vshader
&&
ka
->
pshader
==
kb
->
pshader
&&
(
memcmp
(
&
ka
->
ps_args
,
&
kb
->
ps_args
,
sizeof
(
kb
->
ps_args
))
==
0
);
...
...
dlls/wined3d/utils.c
View file @
eb78c2a0
...
...
@@ -465,7 +465,8 @@ void init_type_lookup(WineD3D_GL_Info *gl_info) {
#define GLINFO_LOCATION This->adapter->gl_info
const
StaticPixelFormatDesc
*
getFormatDescEntry
(
WINED3DFORMAT
fmt
,
WineD3D_GL_Info
*
gl_info
,
const
GlPixelFormatDesc
**
glDesc
)
const
StaticPixelFormatDesc
*
getFormatDescEntry
(
WINED3DFORMAT
fmt
,
const
WineD3D_GL_Info
*
gl_info
,
const
GlPixelFormatDesc
**
glDesc
)
{
int
idx
=
getFmtIdx
(
fmt
);
...
...
@@ -1622,7 +1623,8 @@ void hash_table_destroy(struct hash_table_t *table, void (*free_value)(void *val
HeapFree
(
GetProcessHeap
(),
0
,
table
);
}
static
inline
struct
hash_table_entry_t
*
hash_table_get_by_idx
(
struct
hash_table_t
*
table
,
void
*
key
,
unsigned
int
idx
)
static
inline
struct
hash_table_entry_t
*
hash_table_get_by_idx
(
struct
hash_table_t
*
table
,
const
void
*
key
,
unsigned
int
idx
)
{
struct
hash_table_entry_t
*
entry
;
...
...
@@ -1770,7 +1772,7 @@ void hash_table_remove(struct hash_table_t *table, void *key)
hash_table_put
(
table
,
key
,
NULL
);
}
void
*
hash_table_get
(
struct
hash_table_t
*
table
,
void
*
key
)
void
*
hash_table_get
(
struct
hash_table_t
*
table
,
const
void
*
key
)
{
unsigned
int
idx
;
struct
hash_table_entry_t
*
entry
;
...
...
@@ -2002,9 +2004,11 @@ void gen_ffp_frag_op(IWineD3DStateBlockImpl *stateblock, struct ffp_frag_setting
}
#undef GLINFO_LOCATION
struct
ffp_frag_desc
*
find_ffp_frag_shader
(
struct
hash_table_t
*
fragment_shaders
,
struct
ffp_frag_settings
*
settings
)
const
struct
ffp_frag_desc
*
find_ffp_frag_shader
(
struct
hash_table_t
*
fragment_shaders
,
const
struct
ffp_frag_settings
*
settings
)
{
return
(
struct
ffp_frag_desc
*
)
hash_table_get
(
fragment_shaders
,
settings
);}
return
(
const
struct
ffp_frag_desc
*
)
hash_table_get
(
fragment_shaders
,
settings
);
}
void
add_ffp_frag_shader
(
struct
hash_table_t
*
shaders
,
struct
ffp_frag_desc
*
desc
)
{
struct
ffp_frag_settings
*
key
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
key
));
...
...
@@ -2110,10 +2114,11 @@ void sampler_texdim(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DCont
}
#undef GLINFO_LOCATION
unsigned
int
ffp_frag_program_key_hash
(
void
*
key
)
{
struct
ffp_frag_settings
*
k
=
(
struct
ffp_frag_settings
*
)
key
;
unsigned
int
ffp_frag_program_key_hash
(
const
void
*
key
)
{
const
struct
ffp_frag_settings
*
k
=
(
const
struct
ffp_frag_settings
*
)
key
;
unsigned
int
hash
=
0
,
i
;
DWORD
*
blob
;
const
DWORD
*
blob
;
/* This takes the texture op settings of stage 0 and 1 into account.
* how exactly depends on the memory laybout of the compiler, but it
...
...
@@ -2122,7 +2127,7 @@ unsigned int ffp_frag_program_key_hash(void *key) {
* the ffp setup has distinct stage 0 and 1 settings.
*/
for
(
i
=
0
;
i
<
2
;
i
++
)
{
blob
=
(
DWORD
*
)
&
k
->
op
[
i
];
blob
=
(
const
DWORD
*
)
&
k
->
op
[
i
];
hash
^=
blob
[
0
]
^
blob
[
1
];
}
...
...
@@ -2136,9 +2141,10 @@ unsigned int ffp_frag_program_key_hash(void *key) {
return
hash
;
}
BOOL
ffp_frag_program_key_compare
(
void
*
keya
,
void
*
keyb
)
{
struct
ffp_frag_settings
*
ka
=
(
struct
ffp_frag_settings
*
)
keya
;
struct
ffp_frag_settings
*
kb
=
(
struct
ffp_frag_settings
*
)
keyb
;
BOOL
ffp_frag_program_key_compare
(
const
void
*
keya
,
const
void
*
keyb
)
{
const
struct
ffp_frag_settings
*
ka
=
(
const
struct
ffp_frag_settings
*
)
keya
;
const
struct
ffp_frag_settings
*
kb
=
(
const
struct
ffp_frag_settings
*
)
keyb
;
return
memcmp
(
ka
,
kb
,
sizeof
(
*
ka
))
==
0
;
}
dlls/wined3d/wined3d_private.h
View file @
eb78c2a0
...
...
@@ -44,8 +44,8 @@
#include "wine/list.h"
/* Hash table functions */
typedef
unsigned
int
(
hash_function_t
)(
void
*
key
);
typedef
BOOL
(
compare_function_t
)(
void
*
keya
,
void
*
keyb
);
typedef
unsigned
int
(
hash_function_t
)(
const
void
*
key
);
typedef
BOOL
(
compare_function_t
)(
const
void
*
keya
,
const
void
*
keyb
);
struct
hash_table_entry_t
{
void
*
key
;
...
...
@@ -69,7 +69,7 @@ struct hash_table_t {
struct
hash_table_t
*
hash_table_create
(
hash_function_t
*
hash_function
,
compare_function_t
*
compare_function
);
void
hash_table_destroy
(
struct
hash_table_t
*
table
,
void
(
*
free_value
)(
void
*
value
,
void
*
cb
),
void
*
cb
);
void
*
hash_table_get
(
struct
hash_table_t
*
table
,
void
*
key
);
void
*
hash_table_get
(
struct
hash_table_t
*
table
,
const
void
*
key
);
void
hash_table_put
(
struct
hash_table_t
*
table
,
void
*
key
,
void
*
value
);
void
hash_table_remove
(
struct
hash_table_t
*
table
,
void
*
key
);
...
...
@@ -876,10 +876,11 @@ struct ffp_frag_desc
};
void
gen_ffp_frag_op
(
IWineD3DStateBlockImpl
*
stateblock
,
struct
ffp_frag_settings
*
settings
,
BOOL
ignore_textype
);
struct
ffp_frag_desc
*
find_ffp_frag_shader
(
struct
hash_table_t
*
fragment_shaders
,
struct
ffp_frag_settings
*
settings
);
const
struct
ffp_frag_desc
*
find_ffp_frag_shader
(
struct
hash_table_t
*
fragment_shaders
,
const
struct
ffp_frag_settings
*
settings
);
void
add_ffp_frag_shader
(
struct
hash_table_t
*
shaders
,
struct
ffp_frag_desc
*
desc
);
BOOL
ffp_frag_program_key_compare
(
void
*
keya
,
void
*
keyb
);
unsigned
int
ffp_frag_program_key_hash
(
void
*
key
);
BOOL
ffp_frag_program_key_compare
(
const
void
*
keya
,
const
void
*
keyb
);
unsigned
int
ffp_frag_program_key_hash
(
const
void
*
key
);
/*****************************************************************************
* IWineD3D implementation structure
...
...
@@ -2435,8 +2436,7 @@ typedef struct {
}
StaticPixelFormatDesc
;
const
StaticPixelFormatDesc
*
getFormatDescEntry
(
WINED3DFORMAT
fmt
,
WineD3D_GL_Info
*
gl_info
,
const
GlPixelFormatDesc
**
glDesc
);
const
WineD3D_GL_Info
*
gl_info
,
const
GlPixelFormatDesc
**
glDesc
);
static
inline
BOOL
use_vs
(
IWineD3DDeviceImpl
*
device
)
{
return
(
device
->
vs_selected_mode
!=
SHADER_NONE
...
...
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