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
a54f1726
Commit
a54f1726
authored
Mar 23, 2023
by
Nikolay Sivov
Committed by
Alexandre Julliard
Mar 29, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3d10/effect: Add support for 'movc' instruction.
parent
8a07ffd9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
99 additions
and
29 deletions
+99
-29
effect.c
dlls/d3d10/effect.c
+11
-0
effect.c
dlls/d3d10/tests/effect.c
+88
-29
No files found.
dlls/d3d10/effect.c
View file @
a54f1726
...
@@ -379,6 +379,16 @@ static void pres_imax(float **args, unsigned int n, const struct preshader_instr
...
@@ -379,6 +379,16 @@ static void pres_imax(float **args, unsigned int n, const struct preshader_instr
}
}
}
}
static
void
pres_movc
(
float
**
args
,
unsigned
int
n
,
const
struct
preshader_instr
*
instr
)
{
float
*
arg1
=
args
[
0
],
*
arg2
=
args
[
1
],
*
arg3
=
args
[
2
];
float
*
retval
=
args
[
3
];
unsigned
int
i
;
for
(
i
=
0
;
i
<
instr
->
comp_count
;
++
i
)
retval
[
i
]
=
arg1
[
i
]
?
arg2
[
i
]
:
arg3
[
i
];
}
struct
preshader_op_info
struct
preshader_op_info
{
{
int
opcode
;
int
opcode
;
...
@@ -405,6 +415,7 @@ static const struct preshader_op_info preshader_ops[] =
...
@@ -405,6 +415,7 @@ static const struct preshader_op_info preshader_ops[] =
{
0x208
,
"div"
,
pres_div
},
{
0x208
,
"div"
,
pres_div
},
{
0x21a
,
"udiv"
,
pres_udiv
},
{
0x21a
,
"udiv"
,
pres_udiv
},
{
0x21e
,
"imax"
,
pres_imax
},
{
0x21e
,
"imax"
,
pres_imax
},
{
0x301
,
"movc"
,
pres_movc
},
};
};
static
int
__cdecl
preshader_op_compare
(
const
void
*
a
,
const
void
*
b
)
static
int
__cdecl
preshader_op_compare
(
const
void
*
a
,
const
void
*
b
)
...
...
dlls/d3d10/tests/effect.c
View file @
a54f1726
...
@@ -8189,13 +8189,17 @@ technique10 tech
...
@@ -8189,13 +8189,17 @@ technique10 tech
{
{
SetBlendState( NULL, g_var4.x / g_var4.y, 0 );
SetBlendState( NULL, g_var4.x / g_var4.y, 0 );
}
}
pass p10
{
SetBlendState( NULL, g_var.x ? g_var.y : g_var.z, 0 );
}
}
}
#endif
#endif
static
DWORD
fx_test_value_expression
[]
=
static
DWORD
fx_test_value_expression
[]
=
{
{
0x43425844
,
0x
a05fa168
,
0x4ae376c3
,
0x7d2afd0a
,
0x1f264749
,
0x00000001
,
0x00001524
,
0x00000001
,
0x43425844
,
0x
9a61208c
,
0xd8ca913f
,
0xafbac229
,
0x5c5772ef
,
0x00000001
,
0x0000174c
,
0x00000001
,
0x00000024
,
0x30315846
,
0x00001
4f8
,
0xfeff1001
,
0x00000001
,
0x00000004
,
0x00000001
,
0x00000000
,
0x00000024
,
0x30315846
,
0x00001
720
,
0xfeff1001
,
0x00000001
,
0x00000004
,
0x00000001
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000001
,
0x00001
198
,
0x00000000
,
0x00000000
,
0x00000001
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000001
,
0x00001
384
,
0x00000000
,
0x00000000
,
0x00000001
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x6f6c4724
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x6f6c4724
,
0x736c6162
,
0x6f6c6600
,
0x00347461
,
0x0000000d
,
0x00000001
,
0x00000000
,
0x00000010
,
0x00000010
,
0x736c6162
,
0x6f6c6600
,
0x00347461
,
0x0000000d
,
0x00000001
,
0x00000000
,
0x00000010
,
0x00000010
,
0x00000010
,
0x0000210a
,
0x61765f67
,
0x5f670072
,
0x32726176
,
0x746e6900
,
0x003d0034
,
0x00010000
,
0x00000010
,
0x0000210a
,
0x61765f67
,
0x5f670072
,
0x32726176
,
0x746e6900
,
0x003d0034
,
0x00010000
,
...
@@ -8337,32 +8341,49 @@ static DWORD fx_test_value_expression[] =
...
@@ -8337,32 +8341,49 @@ static DWORD fx_test_value_expression[] =
0x00000000
,
0x00000004
,
0x00000001
,
0x13100001
,
0x00000001
,
0x00000000
,
0x00000007
,
0x00000000
,
0x00000000
,
0x00000004
,
0x00000001
,
0x13100001
,
0x00000001
,
0x00000000
,
0x00000007
,
0x00000000
,
0x00000000
,
0x00000004
,
0x00000002
,
0x13100001
,
0x00000001
,
0x00000000
,
0x00000007
,
0x00000000
,
0x00000000
,
0x00000004
,
0x00000002
,
0x13100001
,
0x00000001
,
0x00000000
,
0x00000007
,
0x00000000
,
0x00000000
,
0x00000004
,
0x00000003
,
0xf0f0f0f0
,
0x0f0f0f0f
,
0x0000ffff
,
0x00000001
,
0x00000002
,
0x00000000
,
0x00000004
,
0x00000003
,
0xf0f0f0f0
,
0x0f0f0f0f
,
0x0000ffff
,
0x00000001
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000002
,
0x00000000
,
0x00000004
,
0x00000040
,
0x00000000
,
0x00000004
,
0x00000000
,
0x00000001
,
0x00000002
,
0x00000000
,
0x00303170
,
0x000001cc
,
0x43425844
,
0x18677c9b
,
0xffffffff
,
0x00000000
,
0x00000030
,
0x00000014
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0xf5e472af
,
0x9ba288a2
,
0xcca43bb2
,
0x00000001
,
0x000001cc
,
0x00000003
,
0x0000002c
,
0x000000a8
,
0x00000000
,
0x00000036
,
0x00000014
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000000
,
0x00000000
,
0x000000b4
,
0x42415443
,
0x00000074
,
0x0000001c
,
0x0000004b
,
0x46580400
,
0x00000001
,
0x0000001c
,
0x0000005e
,
0x00000042
,
0x00000000
,
0x00000020
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000087
,
0x00000100
,
0x00000048
,
0x00000030
,
0x00000002
,
0x00000001
,
0x00000038
,
0x00000000
,
0x61765f67
,
0x0000006b
,
0x00000000
,
0x00000030
,
0x00000000
,
0x00000000
,
0x00000000
,
0x000000bc
,
0x000000a0
,
0xabab0072
,
0x00030001
,
0x00040001
,
0x00000001
,
0x00000000
,
0x4d007874
,
0x6f726369
,
0x74666f73
,
0x00000000
,
0xffffffff
,
0x00000001
,
0x00000019
,
0x00000000
,
0x00000006
,
0x000000c5
,
0x00000000
,
0x29522820
,
0x534c4820
,
0x6853204c
,
0x72656461
,
0x6d6f4320
,
0x656c6970
,
0x30312072
,
0xab00312e
,
0x000001b5
,
0x0000000a
,
0x00000000
,
0x000001ba
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x34494c43
,
0x00000004
,
0x00000000
,
0x434c5846
,
0x00000110
,
0x00000005
,
0x13700001
,
0x00000001
,
0x00000006
,
0x000001bd
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000405
,
0x00000002
,
0x00000000
,
0x00000000
,
0x00000002
,
0x00000000
,
0x00000000
,
0x00000007
,
0x00000000
,
0x30100001
,
0x00000003
,
0x00000001
,
0x00000411
,
0x0000041d
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000000
,
0x00000007
,
0x00000000
,
0x00000000
,
0x00000002
,
0x00000001
,
0x00000000
,
0x00000002
,
0x00000420
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000574
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000002
,
0x00000000
,
0x00000004
,
0x00000000
,
0x30100001
,
0x00000003
,
0x00000000
,
0x00000007
,
0x00000580
,
0x0000058c
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x0000058f
,
0x00000000
,
0x00000000
,
0x00000002
,
0x00000001
,
0x00000000
,
0x00000002
,
0x00000002
,
0x00000000
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x000007bf
,
0x00000002
,
0x00000000
,
0x00000001
,
0x000007cb
,
0x00000004
,
0x00000001
,
0x30100001
,
0x00000003
,
0x00000000
,
0x00000007
,
0x00000000
,
0x00000000
,
0x000007d7
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x000007da
,
0x0000000b
,
0x00000002
,
0x00000001
,
0x00000000
,
0x00000002
,
0x00000002
,
0x00000000
,
0x00000004
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000902
,
0x00000002
,
0x00000000
,
0x00000001
,
0x0000090e
,
0x0000091a
,
0x30100001
,
0x00000003
,
0x00000000
,
0x00000007
,
0x00000000
,
0x00000000
,
0x00000002
,
0x00000001
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x0000091d
,
0x0000000b
,
0x00000000
,
0x00000000
,
0x00000002
,
0x00000002
,
0x00000000
,
0x00000004
,
0x00000003
,
0xf0f0f0f0
,
0x0f0f0f0f
,
0x00000001
,
0x00000a45
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000a51
,
0x00000a5d
,
0x00000003
,
0x0000ffff
,
0x00000001
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000002
,
0x00000000
,
0x00000004
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000a60
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000040
,
0x00000000
,
0x00000004
,
0xffffffff
,
0x00000000
,
0x00000030
,
0x00000014
,
0x00000000
,
0x00000b5c
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000b68
,
0x00000b74
,
0x00000003
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000036
,
0x00000014
,
0x00000000
,
0x00000010
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000b77
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000cc7
,
0x00000000
,
0x00000000
,
0x00000000
,
0x0000005e
,
0x00000042
,
0x00000000
,
0x00000020
,
0x00000000
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000cd3
,
0x00000cdf
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000000
,
0x00000087
,
0x0000006b
,
0x00000000
,
0x00000030
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000006
,
0x00000ce2
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000dd2
,
0x00000002
,
0x00000000
,
0x000000bc
,
0x000000a0
,
0x00000000
,
0xffffffff
,
0x00000001
,
0x00000019
,
0x00000000
,
0x00000000
,
0x00000001
,
0x00000dde
,
0x00000dea
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x000000c5
,
0x00000000
,
0x000001b5
,
0x0000000b
,
0x00000000
,
0x000001ba
,
0x00000003
,
0x00000006
,
0x00000ded
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000fe9
,
0x00000002
,
0x00000000
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x000001bd
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000001
,
0x00000ff5
,
0x00001001
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000405
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000411
,
0x0000041d
,
0x00000003
,
0x00000000
,
0x00001004
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00001180
,
0x00000002
,
0x00000000
,
0x00000001
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000420
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000574
,
0x0000118c
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000580
,
0x0000058c
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x0000058f
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x000007bf
,
0x00000002
,
0x00000000
,
0x00000001
,
0x000007cb
,
0x000007d7
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x000007da
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000902
,
0x00000002
,
0x00000000
,
0x00000001
,
0x0000090e
,
0x0000091a
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x0000091d
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000a45
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000a51
,
0x00000a5d
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000a60
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000b5c
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000b68
,
0x00000b74
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000b77
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000cc7
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000cd3
,
0x00000cdf
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000ce2
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000dd2
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000dde
,
0x00000dea
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00000ded
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00000fe9
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00000ff5
,
0x00001001
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x00001004
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x00001180
,
0x00000002
,
0x00000000
,
0x00000001
,
0x0000118c
,
0x00001198
,
0x00000003
,
0x00000000
,
0x0000000a
,
0x00000000
,
0x00000006
,
0x0000119c
,
0x0000000b
,
0x00000000
,
0x00000001
,
0x0000136c
,
0x00000002
,
0x00000000
,
0x00000001
,
0x00001378
,
};
};
static
float
get_frc
(
float
v
)
static
float
get_frc
(
float
v
)
...
@@ -8566,6 +8587,44 @@ static void test_effect_value_expression(void)
...
@@ -8566,6 +8587,44 @@ static void test_effect_value_expression(void)
ok
(
blend_factor
[
3
]
==
0
.
3
f
,
"Got unexpected blend_factor[3] %.8e.
\n
"
,
blend_factor
[
3
]);
ok
(
blend_factor
[
3
]
==
0
.
3
f
,
"Got unexpected blend_factor[3] %.8e.
\n
"
,
blend_factor
[
3
]);
ok
(
!
sample_mask
,
"Got unexpected sample_mask %#x.
\n
"
,
sample_mask
);
ok
(
!
sample_mask
,
"Got unexpected sample_mask %#x.
\n
"
,
sample_mask
);
/* movc */
pass
=
t
->
lpVtbl
->
GetPassByName
(
t
,
"p10"
);
ok
(
pass
->
lpVtbl
->
IsValid
(
pass
),
"Expected valid pass.
\n
"
);
f
[
0
]
=
0
.
0
f
;
f
[
1
]
=
1
.
1
f
;
f
[
2
]
=
2
.
2
f
;
hr
=
g_var
->
lpVtbl
->
SetFloatVector
(
g_var
,
f
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
pass
->
lpVtbl
->
Apply
(
pass
,
0
);
ok
(
hr
==
S_OK
,
"Got unexpected hr %#lx.
\n
"
,
hr
);
ID3D10Device_OMGetBlendState
(
device
,
&
blend_state
,
blend_factor
,
&
sample_mask
);
ok
(
!
blend_state
,
"Unexpected blend state %p.
\n
"
,
blend_state
);
ok
(
blend_factor
[
0
]
==
2
.
2
f
,
"Got unexpected blend_factor[0] %.8e.
\n
"
,
blend_factor
[
0
]);
ok
(
blend_factor
[
1
]
==
2
.
2
f
,
"Got unexpected blend_factor[1] %.8e.
\n
"
,
blend_factor
[
1
]);
ok
(
blend_factor
[
2
]
==
2
.
2
f
,
"Got unexpected blend_factor[2] %.8e.
\n
"
,
blend_factor
[
2
]);
ok
(
blend_factor
[
3
]
==
2
.
2
f
,
"Got unexpected blend_factor[3] %.8e.
\n
"
,
blend_factor
[
3
]);
ok
(
!
sample_mask
,
"Got unexpected sample_mask %#x.
\n
"
,
sample_mask
);
f
[
0
]
=
0
.
1
f
;
f
[
1
]
=
0
.
1
f
;
f
[
2
]
=
0
.
2
f
;
hr
=
g_var
->
lpVtbl
->
SetFloatVector
(
g_var
,
f
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
pass
->
lpVtbl
->
Apply
(
pass
,
0
);
ok
(
hr
==
S_OK
,
"Got unexpected hr %#lx.
\n
"
,
hr
);
ID3D10Device_OMGetBlendState
(
device
,
&
blend_state
,
blend_factor
,
&
sample_mask
);
ok
(
!
blend_state
,
"Unexpected blend state %p.
\n
"
,
blend_state
);
ok
(
blend_factor
[
0
]
==
0
.
1
f
,
"Got unexpected blend_factor[0] %.8e.
\n
"
,
blend_factor
[
0
]);
ok
(
blend_factor
[
1
]
==
0
.
1
f
,
"Got unexpected blend_factor[1] %.8e.
\n
"
,
blend_factor
[
1
]);
ok
(
blend_factor
[
2
]
==
0
.
1
f
,
"Got unexpected blend_factor[2] %.8e.
\n
"
,
blend_factor
[
2
]);
ok
(
blend_factor
[
3
]
==
0
.
1
f
,
"Got unexpected blend_factor[3] %.8e.
\n
"
,
blend_factor
[
3
]);
ok
(
!
sample_mask
,
"Got unexpected sample_mask %#x.
\n
"
,
sample_mask
);
effect
->
lpVtbl
->
Release
(
effect
);
effect
->
lpVtbl
->
Release
(
effect
);
refcount
=
ID3D10Device_Release
(
device
);
refcount
=
ID3D10Device_Release
(
device
);
...
...
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