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
3b56f259
Commit
3b56f259
authored
Jan 24, 2010
by
Rico Schüller
Committed by
Alexandre Julliard
Jan 25, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3d10: Add anonymous shaders.
parent
4b5f14f5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
9 deletions
+54
-9
d3d10_private.h
dlls/d3d10/d3d10_private.h
+5
-4
effect.c
dlls/d3d10/effect.c
+49
-5
No files found.
dlls/d3d10/d3d10_private.h
View file @
3b56f259
...
...
@@ -76,11 +76,14 @@ struct d3d10_effect_type
{
const
struct
ID3D10EffectTypeVtbl
*
vtbl
;
char
*
name
;
D3D10_SHADER_VARIABLE_TYPE
basetype
;
D3D10_SHADER_VARIABLE_CLASS
type_class
;
DWORD
id
;
struct
wine_rb_entry
entry
;
struct
d3d10_effect
*
effect
;
char
*
name
;
DWORD
element_count
;
DWORD
size_unpacked
;
DWORD
stride
;
...
...
@@ -88,8 +91,6 @@ struct d3d10_effect_type
DWORD
member_count
;
DWORD
column_count
;
DWORD
row_count
;
D3D10_SHADER_VARIABLE_TYPE
basetype
;
D3D10_SHADER_VARIABLE_CLASS
type_class
;
struct
d3d10_effect_type
*
elementtype
;
struct
d3d10_effect_type_member
*
members
;
};
...
...
@@ -109,7 +110,6 @@ struct d3d10_effect_variable
struct
d3d10_effect_variable
*
buffer
;
struct
d3d10_effect_type
*
type
;
struct
d3d10_effect
*
effect
;
void
*
data
;
char
*
name
;
...
...
@@ -118,6 +118,7 @@ struct d3d10_effect_variable
DWORD
annotation_count
;
DWORD
flag
;
DWORD
data_size
;
struct
d3d10_effect
*
effect
;
struct
d3d10_effect_variable
*
elements
;
struct
d3d10_effect_variable
*
members
;
struct
d3d10_effect_variable
*
annotations
;
...
...
dlls/d3d10/effect.c
View file @
3b56f259
...
...
@@ -97,6 +97,24 @@ static struct d3d10_effect_variable null_rasterizer_variable = {(ID3D10EffectVar
static
struct
d3d10_effect_variable
null_sampler_variable
=
{(
ID3D10EffectVariableVtbl
*
)
&
d3d10_effect_sampler_variable_vtbl
,
&
null_local_buffer
,
&
null_type
};
/* anonymous_shader_type and anonymous_shader */
static
char
anonymous_name
[]
=
"$Anonymous"
;
static
char
anonymous_vertexshader_name
[]
=
"vertexshader"
;
static
char
anonymous_pixelshader_name
[]
=
"pixelshader"
;
static
char
anonymous_geometryshader_name
[]
=
"geometryshader"
;
static
struct
d3d10_effect_type
anonymous_vs_type
=
{
&
d3d10_effect_type_vtbl
,
anonymous_vertexshader_name
,
D3D10_SVT_VERTEXSHADER
,
D3D10_SVC_OBJECT
};
static
struct
d3d10_effect_type
anonymous_ps_type
=
{
&
d3d10_effect_type_vtbl
,
anonymous_pixelshader_name
,
D3D10_SVT_PIXELSHADER
,
D3D10_SVC_OBJECT
};
static
struct
d3d10_effect_type
anonymous_gs_type
=
{
&
d3d10_effect_type_vtbl
,
anonymous_geometryshader_name
,
D3D10_SVT_GEOMETRYSHADER
,
D3D10_SVC_OBJECT
};
static
struct
d3d10_effect_variable
anonymous_vs
=
{(
ID3D10EffectVariableVtbl
*
)
&
d3d10_effect_shader_variable_vtbl
,
&
null_local_buffer
,
&
anonymous_vs_type
,
&
null_shader_variable
,
anonymous_name
};
static
struct
d3d10_effect_variable
anonymous_ps
=
{(
ID3D10EffectVariableVtbl
*
)
&
d3d10_effect_shader_variable_vtbl
,
&
null_local_buffer
,
&
anonymous_ps_type
,
&
null_shader_variable
,
anonymous_name
};
static
struct
d3d10_effect_variable
anonymous_gs
=
{(
ID3D10EffectVariableVtbl
*
)
&
d3d10_effect_shader_variable_vtbl
,
&
null_local_buffer
,
&
anonymous_gs_type
,
&
null_shader_variable
,
anonymous_name
};
static
struct
d3d10_effect_type
*
get_fx10_type
(
struct
d3d10_effect
*
effect
,
const
char
*
data
,
DWORD
offset
);
static
inline
void
read_dword
(
const
char
**
ptr
,
DWORD
*
d
)
...
...
@@ -904,10 +922,35 @@ static HRESULT parse_fx10_object(struct d3d10_effect_object *o, const char **ptr
switch
(
operation
)
{
/* FIXME: This probably isn't completely correct. */
case
D3D10_EOO_VALUE
:
FIXME
(
"Copy variable value
\n
"
);
TRACE
(
"Copy variable values
\n
"
);
hr
=
E_FAIL
;
switch
(
o
->
type
)
{
case
D3D10_EOT_VERTEXSHADER
:
TRACE
(
"Vertex shader
\n
"
);
o
->
data
=
&
anonymous_vs
;
hr
=
S_OK
;
break
;
case
D3D10_EOT_PIXELSHADER
:
TRACE
(
"Pixel shader
\n
"
);
o
->
data
=
&
anonymous_ps
;
hr
=
S_OK
;
break
;
case
D3D10_EOT_GEOMETRYSHADER
:
TRACE
(
"Geometry shader
\n
"
);
o
->
data
=
&
anonymous_gs
;
hr
=
S_OK
;
break
;
default:
FIXME
(
"Unhandled object type %#x
\n
"
,
o
->
type
);
hr
=
E_FAIL
;
break
;
}
break
;
case
D3D10_EOO_ANONYMOUS_SHADER
:
...
...
@@ -2454,18 +2497,19 @@ static HRESULT STDMETHODCALLTYPE d3d10_effect_variable_GetDesc(ID3D10EffectVaria
TRACE
(
"iface %p, desc %p
\n
"
,
iface
,
desc
);
if
(
This
==
&
null_variable
)
if
(
!
iface
->
lpVtbl
->
IsValid
(
iface
)
)
{
WARN
(
"Null variable specified
\n
"
);
return
E_FAIL
;
}
if
(
!
desc
)
if
(
!
desc
)
{
WARN
(
"Invalid argument specified
\n
"
);
return
E_INVALIDARG
;
}
/* FIXME: This isn't correct. Anonymous shaders let desc->ExplicitBindPoint untouched, but normal shaders set it! */
memset
(
desc
,
0
,
sizeof
(
*
desc
));
desc
->
Name
=
This
->
name
;
desc
->
Semantic
=
This
->
semantic
;
...
...
@@ -2473,7 +2517,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_effect_variable_GetDesc(ID3D10EffectVaria
desc
->
Annotations
=
This
->
annotation_count
;
desc
->
BufferOffset
=
This
->
buffer_offset
;
if
(
This
->
flag
==
D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT
)
if
(
This
->
flag
&
D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT
)
{
desc
->
ExplicitBindPoint
=
This
->
buffer_offset
;
}
...
...
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