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
c36a2589
Commit
c36a2589
authored
Mar 23, 2022
by
Matteo Bruni
Committed by
Alexandre Julliard
Mar 23, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3d10: Do not accept any compute shader in D3D10ReflectShader().
Signed-off-by:
Matteo Bruni
<
mbruni@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
af454773
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
43 additions
and
7 deletions
+43
-7
reflection.c
dlls/d3dcompiler_43/reflection.c
+9
-2
reflection.c
dlls/d3dcompiler_43/tests/reflection.c
+34
-5
No files found.
dlls/d3dcompiler_43/reflection.c
View file @
c36a2589
...
...
@@ -52,6 +52,8 @@ enum D3DCOMPILER_SIGNATURE_ELEMENT_SIZE
#define D3DCOMPILER_SHADER_TARGET_SHADERTYPE_MASK 0xffff0000
#define D3DCOMPILER_SHADER_TARGET_SHADERTYPE_SHIFT 16
#define D3DCOMPILER_SHDR_SHADER_TYPE_CS 0x4353
enum
d3dcompiler_shader_type
{
D3DCOMPILER_SHADER_TYPE_CS
=
5
,
...
...
@@ -1487,6 +1489,9 @@ static HRESULT d3dcompiler_parse_rdef(struct d3dcompiler_shader_reflection *r, c
size_t
size
=
data_size
>>
2
;
uint32_t
target_version
;
const
char
*
ptr
=
data
;
#if D3D_COMPILER_VERSION < 47
uint32_t
shader_type
;
#endif
HRESULT
hr
;
TRACE
(
"Size %Iu.
\n
"
,
size
);
...
...
@@ -1508,8 +1513,10 @@ static HRESULT d3dcompiler_parse_rdef(struct d3dcompiler_shader_reflection *r, c
target_version
=
r
->
target
&
D3DCOMPILER_SHADER_TARGET_VERSION_MASK
;
#if D3D_COMPILER_VERSION < 47
if
(
target_version
>=
0x501
&&
(
!
D3D_COMPILER_VERSION
||
((
r
->
target
&
D3DCOMPILER_SHADER_TARGET_SHADERTYPE_MASK
)
>>
D3DCOMPILER_SHADER_TARGET_SHADERTYPE_SHIFT
)
!=
0x4353
/* CS */
))
shader_type
=
(
r
->
target
&
D3DCOMPILER_SHADER_TARGET_SHADERTYPE_MASK
)
>>
D3DCOMPILER_SHADER_TARGET_SHADERTYPE_SHIFT
;
if
((
target_version
>=
0x501
&&
shader_type
!=
D3DCOMPILER_SHDR_SHADER_TYPE_CS
)
||
(
!
D3D_COMPILER_VERSION
&&
shader_type
==
D3DCOMPILER_SHDR_SHADER_TYPE_CS
))
{
WARN
(
"Target version %#x is not supported in d3dcompiler %u.
\n
"
,
target_version
,
D3D_COMPILER_VERSION
);
return
E_INVALIDARG
;
...
...
dlls/d3dcompiler_43/tests/reflection.c
View file @
c36a2589
...
...
@@ -1198,10 +1198,33 @@ static const D3D12_SHADER_INPUT_BIND_DESC test_reflection_bound_resources_result
{
"c2"
,
D3D_SIT_CBUFFER
,
1
,
1
,
0
,
0
,
D3D_SRV_DIMENSION_UNKNOWN
,
0
,
0
,
1
},
};
#if D3D_COMPILER_VERSION
static
void
test_reflection_cs
(
void
)
{
/*
* fxc.exe /T cs_4_0 /Fo
*/
#if 0
[numthreads(16, 8, 4)]
void main( uint3 DTid : SV_DispatchThreadID )
{
}
#endif
static
const
DWORD
test_blob_cs_4_0
[]
=
{
0x43425844
,
0x698a31ca
,
0x8c6eee35
,
0x2377107a
,
0xe1e69066
,
0x00000001
,
0x00000150
,
0x00000005
,
0x00000034
,
0x0000008c
,
0x0000009c
,
0x000000ac
,
0x000000d4
,
0x46454452
,
0x00000050
,
0x00000000
,
0x00000000
,
0x00000000
,
0x0000001c
,
0x43530400
,
0x00000100
,
0x0000001c
,
0x7263694d
,
0x666f736f
,
0x52282074
,
0x4c482029
,
0x53204c53
,
0x65646168
,
0x6f432072
,
0x6c69706d
,
0x39207265
,
0x2e39322e
,
0x2e323539
,
0x31313133
,
0xababab00
,
0x4e475349
,
0x00000008
,
0x00000000
,
0x00000008
,
0x4e47534f
,
0x00000008
,
0x00000000
,
0x00000008
,
0x58454853
,
0x00000020
,
0x00050040
,
0x00000008
,
0x0100086a
,
0x0400009b
,
0x00000010
,
0x00000008
,
0x00000004
,
0x0100003e
,
0x54415453
,
0x00000074
,
0x00000001
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000001
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
};
/*
* fxc.exe /T cs_5_1 /Fo
*/
#if 0
...
...
@@ -1228,10 +1251,17 @@ static void test_reflection_cs(void)
};
UINT
size_x
,
size_y
,
size_z
,
size_total
;
ID3D11ShaderReflection
*
ref11
;
HRESULT
hr
;
HRESULT
hr
,
expected
;
expected
=
D3D_COMPILER_VERSION
?
S_OK
:
E_INVALIDARG
;
hr
=
call_reflect
(
test_blob_cs_4_0
,
test_blob_cs_4_0
[
6
],
&
IID_ID3D11ShaderReflection
,
(
void
**
)
&
ref11
);
ok
(
hr
==
expected
,
"Unexpected hr %#lx.
\n
"
,
hr
);
if
(
SUCCEEDED
(
hr
))
ref11
->
lpVtbl
->
Release
(
ref11
);
hr
=
call_reflect
(
test_blob
,
test_blob
[
6
],
&
IID_ID3D11ShaderReflection
,
(
void
**
)
&
ref11
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
hr
==
expected
,
"Unexpected hr %#lx.
\n
"
,
hr
);
if
(
FAILED
(
hr
))
return
;
size_total
=
ref11
->
lpVtbl
->
GetThreadGroupSize
(
ref11
,
&
size_x
,
&
size_y
,
&
size_z
);
...
...
@@ -1242,7 +1272,6 @@ static void test_reflection_cs(void)
ref11
->
lpVtbl
->
Release
(
ref11
);
}
#endif
static
void
test_reflection_bound_resources
(
const
DWORD
*
blob
,
const
D3D12_SHADER_INPUT_BIND_DESC
*
result
,
unsigned
int
result_count
,
unsigned
int
target_version
)
...
...
@@ -2208,10 +2237,10 @@ START_TEST(reflection)
#if D3D_COMPILER_VERSION
test_reflection_references
();
test_reflection_interfaces
();
test_reflection_cs
();
#else
test_d3d10_interfaces
();
#endif
test_reflection_cs
();
test_reflection_desc_vs
();
test_reflection_desc_ps
();
test_reflection_desc_ps_output
();
...
...
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