mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Fix D3D11 mix-blending when the source alpha is 0. (bug 1281593 part 1, r=mstange)
--HG-- extra : rebase_source : bec9c0b07e07200e3b770a15f0b120d5d62dbbd7
This commit is contained in:
parent
a4aada5894
commit
334f06fca3
@ -389,7 +389,7 @@ float4 BlendShader(const VS_BLEND_OUTPUT aVertex) : SV_Target
|
||||
return source;
|
||||
}
|
||||
if (source.a == 0.0) {
|
||||
return backdrop;
|
||||
return float4(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// The spec assumes there is no premultiplied alpha. The backdrop is always
|
||||
|
@ -6121,75 +6121,75 @@ ShaderBytes sLayerQuadBlendMaskVS = { LayerQuadBlendMaskVS, sizeof(LayerQuadBlen
|
||||
mad r1.w, r6.x, -r0.w, r1.w
|
||||
mad r1.w, r9.x, r1.w, r8.x
|
||||
mad r9, r6.xyzx, -r0.w, -c11.wwwy
|
||||
mad r10.xyz, r6, r0.w, c3.x
|
||||
mul r10.xyz, r10, r10
|
||||
mad r6.xyz, r6, r0.w, c3.x
|
||||
mul r6.xyz, r6, r6
|
||||
mad r0.w, r11.x, -r9.w, r8.x
|
||||
cmp r13.x, r14.w, r0.w, r1.w
|
||||
cmp r0.xyz, -r7.z, r13, r0
|
||||
add r11.xyz, r8, r8
|
||||
mad r13.xyz, r4, -c3.y, r11
|
||||
add r13.xyz, r13, c3.x
|
||||
mad r15.xyz, r4, -r11, r13
|
||||
mul r11.xyz, r4, r11
|
||||
add r16.xyz, r4, r4
|
||||
mul r17.xyz, r8, r16
|
||||
mad r13.xyz, r16, -r8, r13
|
||||
cmp r9.xyz, r9, r11, r13
|
||||
cmp r5.yz, r5.xxyw, r17, r15
|
||||
cmp r5.x, r14.w, r17.x, r15.x
|
||||
add r10.xyz, r8, r8
|
||||
mad r11.xyz, r4, -c3.y, r10
|
||||
add r11.xyz, r11, c3.x
|
||||
mad r13.xyz, r4, -r10, r11
|
||||
mul r10.xyz, r4, r10
|
||||
add r15.xyz, r4, r4
|
||||
mul r16.xyz, r8, r15
|
||||
mad r11.xyz, r15, -r8, r11
|
||||
cmp r9.xyz, r9, r10, r11
|
||||
cmp r5.yz, r5.xxyw, r16, r13
|
||||
cmp r5.x, r14.w, r16.x, r13.x
|
||||
cmp r0.xyz, -r7.y, r5, r0
|
||||
rcp r0.w, r4.x
|
||||
mad r0.w, r9.w, -r0.w, -c3.x
|
||||
max r1.w, r0.w, -c11.z
|
||||
mul r5.xyz, r4, r4
|
||||
cmp r0.w, -r5.x, -c11.z, r1.w
|
||||
cmp r11.x, -r10.x, -c3.x, r0.w
|
||||
cmp r10.x, -r6.x, -c3.x, r0.w
|
||||
rcp r0.w, r4.y
|
||||
mad r0.w, r12.x, -r0.w, -c3.x
|
||||
max r1.w, r0.w, -c11.z
|
||||
cmp r0.w, -r5.y, -c11.z, r1.w
|
||||
cmp r11.y, -r10.y, -c3.x, r0.w
|
||||
cmp r10.y, -r6.y, -c3.x, r0.w
|
||||
rcp r0.w, r4.z
|
||||
mad r0.w, r12.y, -r0.w, -c3.x
|
||||
max r1.w, r0.w, -c11.z
|
||||
cmp r0.w, -r5.z, -c11.z, r1.w
|
||||
cmp r11.z, -r10.z, -c3.x, r0.w
|
||||
cmp r0.xyz, -r7.x, r11, r0
|
||||
cmp r10.z, -r6.z, -c3.x, r0.w
|
||||
cmp r0.xyz, -r7.x, r10, r0
|
||||
add r5, r4.w, c5
|
||||
mul r5, r5, r5
|
||||
add r7.xyz, r4, c3.x
|
||||
mul r7.xyz, r7, r7
|
||||
add r6.xyz, r4, c3.x
|
||||
mul r6.xyz, r6, r6
|
||||
rcp r0.w, r14.x
|
||||
mul r0.w, r0.w, r8.x
|
||||
min r1.w, r0.w, -c3.x
|
||||
cmp r0.w, -r7.x, -c3.x, r1.w
|
||||
mul r10.xyz, r8, r8
|
||||
cmp r11.x, -r10.x, -c11.z, r0.w
|
||||
cmp r0.w, -r6.x, -c3.x, r1.w
|
||||
mul r7.xyz, r8, r8
|
||||
cmp r10.x, -r7.x, -c11.z, r0.w
|
||||
rcp r0.w, r14.y
|
||||
rcp r1.w, r14.z
|
||||
mul r1.w, r1.w, r8.z
|
||||
min r2.w, r1.w, -c3.x
|
||||
cmp r1.w, -r7.z, -c3.x, r2.w
|
||||
cmp r11.z, -r10.z, -c11.z, r1.w
|
||||
cmp r1.w, -r6.z, -c3.x, r2.w
|
||||
cmp r10.z, -r7.z, -c11.z, r1.w
|
||||
mul r0.w, r0.w, r8.y
|
||||
min r1.w, r0.w, -c3.x
|
||||
cmp r0.w, -r7.y, -c3.x, r1.w
|
||||
cmp r11.y, -r10.y, -c11.z, r0.w
|
||||
cmp r0.xyz, -r5.w, r11, r0
|
||||
max r7.xyz, r8, r4
|
||||
min r10.xyz, r4, r8
|
||||
cmp r0.xyz, -r5.z, r7, r0
|
||||
cmp r0.xyz, -r5.y, r10, r0
|
||||
cmp r0.w, -r6.y, -c3.x, r1.w
|
||||
cmp r10.y, -r7.y, -c11.z, r0.w
|
||||
cmp r0.xyz, -r5.w, r10, r0
|
||||
max r6.xyz, r8, r4
|
||||
min r7.xyz, r4, r8
|
||||
cmp r0.xyz, -r5.z, r6, r0
|
||||
cmp r0.xyz, -r5.y, r7, r0
|
||||
cmp r0.xyz, -r5.x, r9, r0
|
||||
cmp r0.xyz, -r10.w, r1, r0
|
||||
cmp r0.xyz, -c2.z, r2, r0
|
||||
lrp r1.xyz, r6.w, r0, r4
|
||||
mul r1.w, r6.w, r6.w
|
||||
mul r0.xyz, r3.w, r1
|
||||
mul r1.x, r3.w, r3.w
|
||||
mov r0.w, r3.w
|
||||
cmp r0, -r1.x, r6, r0
|
||||
mul r1.x, r6.w, r6.w
|
||||
cmp r0, -r1.x, r3, r0
|
||||
cmp r0, -r1.x, -c11.z, r0
|
||||
cmp r0, -r1.w, r3, r0
|
||||
mov oC0, r0
|
||||
|
||||
// approximately 326 instruction slots used (6 texture, 320 arithmetic)
|
||||
@ -6300,7 +6300,7 @@ if_nz r2.x
|
||||
endif
|
||||
eq r2.x, r1.w, l(0.000000)
|
||||
if_nz r2.x
|
||||
mov o0.xyzw, r0.xyzw
|
||||
mov o0.xyzw, l(0,0,0,0)
|
||||
ret
|
||||
endif
|
||||
div r0.xyz, r0.xyzx, r0.wwww
|
||||
@ -6551,15 +6551,15 @@ ret
|
||||
|
||||
const BYTE BlendShader[] =
|
||||
{
|
||||
68, 88, 66, 67, 122, 174,
|
||||
220, 58, 170, 47, 87, 82,
|
||||
85, 5, 178, 49, 217, 101,
|
||||
104, 140, 1, 0, 0, 0,
|
||||
184, 67, 0, 0, 6, 0,
|
||||
68, 88, 66, 67, 112, 63,
|
||||
111, 12, 13, 48, 235, 163,
|
||||
54, 75, 30, 70, 47, 59,
|
||||
134, 187, 1, 0, 0, 0,
|
||||
196, 67, 0, 0, 6, 0,
|
||||
0, 0, 56, 0, 0, 0,
|
||||
92, 23, 0, 0, 8, 63,
|
||||
0, 0, 132, 63, 0, 0,
|
||||
252, 66, 0, 0, 132, 67,
|
||||
92, 23, 0, 0, 20, 63,
|
||||
0, 0, 144, 63, 0, 0,
|
||||
8, 67, 0, 0, 144, 67,
|
||||
0, 0, 65, 111, 110, 57,
|
||||
28, 23, 0, 0, 28, 23,
|
||||
0, 0, 0, 2, 255, 255,
|
||||
@ -7342,12 +7342,12 @@ const BYTE BlendShader[] =
|
||||
9, 0, 15, 128, 6, 0,
|
||||
36, 128, 0, 0, 255, 129,
|
||||
11, 0, 127, 161, 4, 0,
|
||||
0, 4, 10, 0, 7, 128,
|
||||
0, 4, 6, 0, 7, 128,
|
||||
6, 0, 228, 128, 0, 0,
|
||||
255, 128, 3, 0, 0, 160,
|
||||
5, 0, 0, 3, 10, 0,
|
||||
7, 128, 10, 0, 228, 128,
|
||||
10, 0, 228, 128, 4, 0,
|
||||
5, 0, 0, 3, 6, 0,
|
||||
7, 128, 6, 0, 228, 128,
|
||||
6, 0, 228, 128, 4, 0,
|
||||
0, 4, 0, 0, 8, 128,
|
||||
11, 0, 0, 128, 9, 0,
|
||||
255, 129, 8, 0, 0, 128,
|
||||
@ -7358,39 +7358,39 @@ const BYTE BlendShader[] =
|
||||
0, 0, 7, 128, 7, 0,
|
||||
170, 129, 13, 0, 228, 128,
|
||||
0, 0, 228, 128, 2, 0,
|
||||
0, 3, 11, 0, 7, 128,
|
||||
0, 3, 10, 0, 7, 128,
|
||||
8, 0, 228, 128, 8, 0,
|
||||
228, 128, 4, 0, 0, 4,
|
||||
13, 0, 7, 128, 4, 0,
|
||||
11, 0, 7, 128, 4, 0,
|
||||
228, 128, 3, 0, 85, 161,
|
||||
11, 0, 228, 128, 2, 0,
|
||||
0, 3, 13, 0, 7, 128,
|
||||
13, 0, 228, 128, 3, 0,
|
||||
0, 160, 4, 0, 0, 4,
|
||||
15, 0, 7, 128, 4, 0,
|
||||
228, 128, 11, 0, 228, 129,
|
||||
13, 0, 228, 128, 5, 0,
|
||||
10, 0, 228, 128, 2, 0,
|
||||
0, 3, 11, 0, 7, 128,
|
||||
4, 0, 228, 128, 11, 0,
|
||||
11, 0, 228, 128, 3, 0,
|
||||
0, 160, 4, 0, 0, 4,
|
||||
13, 0, 7, 128, 4, 0,
|
||||
228, 128, 10, 0, 228, 129,
|
||||
11, 0, 228, 128, 5, 0,
|
||||
0, 3, 10, 0, 7, 128,
|
||||
4, 0, 228, 128, 10, 0,
|
||||
228, 128, 2, 0, 0, 3,
|
||||
16, 0, 7, 128, 4, 0,
|
||||
15, 0, 7, 128, 4, 0,
|
||||
228, 128, 4, 0, 228, 128,
|
||||
5, 0, 0, 3, 17, 0,
|
||||
5, 0, 0, 3, 16, 0,
|
||||
7, 128, 8, 0, 228, 128,
|
||||
16, 0, 228, 128, 4, 0,
|
||||
0, 4, 13, 0, 7, 128,
|
||||
16, 0, 228, 128, 8, 0,
|
||||
228, 129, 13, 0, 228, 128,
|
||||
15, 0, 228, 128, 4, 0,
|
||||
0, 4, 11, 0, 7, 128,
|
||||
15, 0, 228, 128, 8, 0,
|
||||
228, 129, 11, 0, 228, 128,
|
||||
88, 0, 0, 4, 9, 0,
|
||||
7, 128, 9, 0, 228, 128,
|
||||
11, 0, 228, 128, 13, 0,
|
||||
10, 0, 228, 128, 11, 0,
|
||||
228, 128, 88, 0, 0, 4,
|
||||
5, 0, 6, 128, 5, 0,
|
||||
208, 128, 17, 0, 228, 128,
|
||||
15, 0, 228, 128, 88, 0,
|
||||
208, 128, 16, 0, 228, 128,
|
||||
13, 0, 228, 128, 88, 0,
|
||||
0, 4, 5, 0, 1, 128,
|
||||
14, 0, 255, 128, 17, 0,
|
||||
0, 128, 15, 0, 0, 128,
|
||||
14, 0, 255, 128, 16, 0,
|
||||
0, 128, 13, 0, 0, 128,
|
||||
88, 0, 0, 4, 0, 0,
|
||||
7, 128, 7, 0, 85, 129,
|
||||
5, 0, 228, 128, 0, 0,
|
||||
@ -7409,7 +7409,7 @@ const BYTE BlendShader[] =
|
||||
8, 128, 5, 0, 0, 129,
|
||||
11, 0, 170, 161, 1, 0,
|
||||
255, 128, 88, 0, 0, 4,
|
||||
11, 0, 1, 128, 10, 0,
|
||||
10, 0, 1, 128, 6, 0,
|
||||
0, 129, 3, 0, 0, 161,
|
||||
0, 0, 255, 128, 6, 0,
|
||||
0, 2, 0, 0, 8, 128,
|
||||
@ -7423,8 +7423,8 @@ const BYTE BlendShader[] =
|
||||
0, 4, 0, 0, 8, 128,
|
||||
5, 0, 85, 129, 11, 0,
|
||||
170, 161, 1, 0, 255, 128,
|
||||
88, 0, 0, 4, 11, 0,
|
||||
2, 128, 10, 0, 85, 129,
|
||||
88, 0, 0, 4, 10, 0,
|
||||
2, 128, 6, 0, 85, 129,
|
||||
3, 0, 0, 161, 0, 0,
|
||||
255, 128, 6, 0, 0, 2,
|
||||
0, 0, 8, 128, 4, 0,
|
||||
@ -7438,23 +7438,23 @@ const BYTE BlendShader[] =
|
||||
0, 0, 8, 128, 5, 0,
|
||||
170, 129, 11, 0, 170, 161,
|
||||
1, 0, 255, 128, 88, 0,
|
||||
0, 4, 11, 0, 4, 128,
|
||||
10, 0, 170, 129, 3, 0,
|
||||
0, 4, 10, 0, 4, 128,
|
||||
6, 0, 170, 129, 3, 0,
|
||||
0, 161, 0, 0, 255, 128,
|
||||
88, 0, 0, 4, 0, 0,
|
||||
7, 128, 7, 0, 0, 129,
|
||||
11, 0, 228, 128, 0, 0,
|
||||
10, 0, 228, 128, 0, 0,
|
||||
228, 128, 2, 0, 0, 3,
|
||||
5, 0, 15, 128, 4, 0,
|
||||
255, 128, 5, 0, 228, 160,
|
||||
5, 0, 0, 3, 5, 0,
|
||||
15, 128, 5, 0, 228, 128,
|
||||
5, 0, 228, 128, 2, 0,
|
||||
0, 3, 7, 0, 7, 128,
|
||||
0, 3, 6, 0, 7, 128,
|
||||
4, 0, 228, 128, 3, 0,
|
||||
0, 160, 5, 0, 0, 3,
|
||||
7, 0, 7, 128, 7, 0,
|
||||
228, 128, 7, 0, 228, 128,
|
||||
6, 0, 7, 128, 6, 0,
|
||||
228, 128, 6, 0, 228, 128,
|
||||
6, 0, 0, 2, 0, 0,
|
||||
8, 128, 14, 0, 0, 128,
|
||||
5, 0, 0, 3, 0, 0,
|
||||
@ -7463,13 +7463,13 @@ const BYTE BlendShader[] =
|
||||
0, 3, 1, 0, 8, 128,
|
||||
0, 0, 255, 128, 3, 0,
|
||||
0, 161, 88, 0, 0, 4,
|
||||
0, 0, 8, 128, 7, 0,
|
||||
0, 0, 8, 128, 6, 0,
|
||||
0, 129, 3, 0, 0, 161,
|
||||
1, 0, 255, 128, 5, 0,
|
||||
0, 3, 10, 0, 7, 128,
|
||||
0, 3, 7, 0, 7, 128,
|
||||
8, 0, 228, 128, 8, 0,
|
||||
228, 128, 88, 0, 0, 4,
|
||||
11, 0, 1, 128, 10, 0,
|
||||
10, 0, 1, 128, 7, 0,
|
||||
0, 129, 11, 0, 170, 161,
|
||||
0, 0, 255, 128, 6, 0,
|
||||
0, 2, 0, 0, 8, 128,
|
||||
@ -7482,10 +7482,10 @@ const BYTE BlendShader[] =
|
||||
2, 0, 8, 128, 1, 0,
|
||||
255, 128, 3, 0, 0, 161,
|
||||
88, 0, 0, 4, 1, 0,
|
||||
8, 128, 7, 0, 170, 129,
|
||||
8, 128, 6, 0, 170, 129,
|
||||
3, 0, 0, 161, 2, 0,
|
||||
255, 128, 88, 0, 0, 4,
|
||||
11, 0, 4, 128, 10, 0,
|
||||
10, 0, 4, 128, 7, 0,
|
||||
170, 129, 11, 0, 170, 161,
|
||||
1, 0, 255, 128, 5, 0,
|
||||
0, 3, 0, 0, 8, 128,
|
||||
@ -7494,26 +7494,26 @@ const BYTE BlendShader[] =
|
||||
1, 0, 8, 128, 0, 0,
|
||||
255, 128, 3, 0, 0, 161,
|
||||
88, 0, 0, 4, 0, 0,
|
||||
8, 128, 7, 0, 85, 129,
|
||||
8, 128, 6, 0, 85, 129,
|
||||
3, 0, 0, 161, 1, 0,
|
||||
255, 128, 88, 0, 0, 4,
|
||||
11, 0, 2, 128, 10, 0,
|
||||
10, 0, 2, 128, 7, 0,
|
||||
85, 129, 11, 0, 170, 161,
|
||||
0, 0, 255, 128, 88, 0,
|
||||
0, 4, 0, 0, 7, 128,
|
||||
5, 0, 255, 129, 11, 0,
|
||||
5, 0, 255, 129, 10, 0,
|
||||
228, 128, 0, 0, 228, 128,
|
||||
11, 0, 0, 3, 7, 0,
|
||||
11, 0, 0, 3, 6, 0,
|
||||
7, 128, 8, 0, 228, 128,
|
||||
4, 0, 228, 128, 10, 0,
|
||||
0, 3, 10, 0, 7, 128,
|
||||
0, 3, 7, 0, 7, 128,
|
||||
4, 0, 228, 128, 8, 0,
|
||||
228, 128, 88, 0, 0, 4,
|
||||
0, 0, 7, 128, 5, 0,
|
||||
170, 129, 7, 0, 228, 128,
|
||||
170, 129, 6, 0, 228, 128,
|
||||
0, 0, 228, 128, 88, 0,
|
||||
0, 4, 0, 0, 7, 128,
|
||||
5, 0, 85, 129, 10, 0,
|
||||
5, 0, 85, 129, 7, 0,
|
||||
228, 128, 0, 0, 228, 128,
|
||||
88, 0, 0, 4, 0, 0,
|
||||
7, 128, 5, 0, 0, 129,
|
||||
@ -7529,27 +7529,27 @@ const BYTE BlendShader[] =
|
||||
7, 128, 6, 0, 255, 128,
|
||||
0, 0, 228, 128, 4, 0,
|
||||
228, 128, 5, 0, 0, 3,
|
||||
0, 0, 7, 128, 3, 0,
|
||||
255, 128, 1, 0, 228, 128,
|
||||
5, 0, 0, 3, 1, 0,
|
||||
1, 128, 3, 0, 255, 128,
|
||||
3, 0, 255, 128, 1, 0,
|
||||
0, 2, 0, 0, 8, 128,
|
||||
3, 0, 255, 128, 88, 0,
|
||||
1, 0, 8, 128, 6, 0,
|
||||
255, 128, 6, 0, 255, 128,
|
||||
5, 0, 0, 3, 0, 0,
|
||||
7, 128, 3, 0, 255, 128,
|
||||
1, 0, 228, 128, 5, 0,
|
||||
0, 3, 1, 0, 1, 128,
|
||||
3, 0, 255, 128, 3, 0,
|
||||
255, 128, 1, 0, 0, 2,
|
||||
0, 0, 8, 128, 3, 0,
|
||||
255, 128, 88, 0, 0, 4,
|
||||
0, 0, 15, 128, 1, 0,
|
||||
0, 129, 11, 0, 170, 161,
|
||||
0, 0, 228, 128, 88, 0,
|
||||
0, 4, 0, 0, 15, 128,
|
||||
1, 0, 0, 129, 6, 0,
|
||||
228, 128, 0, 0, 228, 128,
|
||||
5, 0, 0, 3, 1, 0,
|
||||
1, 128, 6, 0, 255, 128,
|
||||
6, 0, 255, 128, 88, 0,
|
||||
0, 4, 0, 0, 15, 128,
|
||||
1, 0, 0, 129, 3, 0,
|
||||
1, 0, 255, 129, 3, 0,
|
||||
228, 128, 0, 0, 228, 128,
|
||||
1, 0, 0, 2, 0, 8,
|
||||
15, 128, 0, 0, 228, 128,
|
||||
255, 255, 0, 0, 83, 72,
|
||||
68, 82, 164, 39, 0, 0,
|
||||
64, 0, 0, 0, 233, 9,
|
||||
68, 82, 176, 39, 0, 0,
|
||||
64, 0, 0, 0, 236, 9,
|
||||
0, 0, 89, 0, 0, 4,
|
||||
70, 142, 32, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
@ -7962,9 +7962,11 @@ const BYTE BlendShader[] =
|
||||
0, 0, 0, 0, 31, 0,
|
||||
4, 3, 10, 0, 16, 0,
|
||||
2, 0, 0, 0, 54, 0,
|
||||
0, 5, 242, 32, 16, 0,
|
||||
0, 0, 0, 0, 70, 14,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 8, 242, 32, 16, 0,
|
||||
0, 0, 0, 0, 2, 64,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
62, 0, 0, 1, 21, 0,
|
||||
0, 1, 14, 0, 0, 7,
|
||||
114, 0, 16, 0, 0, 0,
|
||||
|
Loading…
Reference in New Issue
Block a user