ReactOS 0.4.15-dev-7918-g2a2556c
reflection.c
Go to the documentation of this file.
1/*
2 * Copyright 2010 Rico Schüller
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19/*
20 * Nearly all compiler functions need the shader blob and the size. The size
21 * is always located at DWORD #6 in the shader blob (blob[6]).
22 * The functions are e.g.: D3DGet*SignatureBlob, D3DReflect
23 */
24
25#define COBJMACROS
26#include "initguid.h"
27#include "d3dcompiler.h"
28#include "wine/test.h"
29
30/* includes for older reflection interfaces */
31#ifndef __REACTOS__
32#include "d3d10.h"
33#include "d3d10_1shader.h"
34#endif
35
36/*
37 * This doesn't belong here, but for some functions it is possible to return that value,
38 * see http://msdn.microsoft.com/en-us/library/bb205278%28v=VS.85%29.aspx
39 * The original definition is in D3DX10core.h.
40 */
41#define D3DERR_INVALIDCALL 0x8876086c
42
43static HRESULT (WINAPI *pD3DReflect)(const void *, SIZE_T, REFIID, void **);
44
45/* Creator string for comparison - Version 9.29.952.3111 (43) */
470x7263694d, 0x666f736f, 0x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d,
480x39207265, 0x2e39322e, 0x2e323539, 0x31313133, 0xababab00,
49};
50
51/*
52 * fxc.exe /E VS /Tvs_4_0 /Fx
53 */
54#if 0
55float4 VS(float4 position : POSITION, float4 pos : SV_POSITION) : SV_POSITION
56{
57 return position;
58}
59#endif
60
61#ifndef __REACTOS__
62
640x43425844, 0x77c6324f, 0xfd27948a, 0xe6958d31, 0x53361cba, 0x00000001, 0x000001d8, 0x00000005,
650x00000034, 0x0000008c, 0x000000e4, 0x00000118, 0x0000015c, 0x46454452, 0x00000050, 0x00000000,
660x00000000, 0x00000000, 0x0000001c, 0xfffe0400, 0x00000100, 0x0000001c, 0x7263694d, 0x666f736f,
670x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39322e,
680x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x00000050, 0x00000002, 0x00000008, 0x00000038,
690x00000000, 0x00000000, 0x00000003, 0x00000000, 0x00000f0f, 0x00000041, 0x00000000, 0x00000000,
700x00000003, 0x00000001, 0x0000000f, 0x49534f50, 0x4e4f4954, 0x5f565300, 0x49534f50, 0x4e4f4954,
710xababab00, 0x4e47534f, 0x0000002c, 0x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000001,
720x00000003, 0x00000000, 0x0000000f, 0x505f5653, 0x5449534f, 0x004e4f49, 0x52444853, 0x0000003c,
730x00010040, 0x0000000f, 0x0300005f, 0x001010f2, 0x00000000, 0x04000067, 0x001020f2, 0x00000000,
740x00000001, 0x05000036, 0x001020f2, 0x00000000, 0x00101e46, 0x00000000, 0x0100003e, 0x54415453,
750x00000074, 0x00000002, 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000,
760x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
770x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
780x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
79};
80
82{
83 HRESULT hr;
85 ID3D11ShaderReflection *ref11, *ref11_test;
86 ID3D10ShaderReflection *ref10;
87 ID3D10ShaderReflection1 *ref10_1;
88
89 hr = pD3DReflect(test_reflection_blob, test_reflection_blob[6], &IID_ID3D11ShaderReflection, (void **)&ref11);
90 ok(hr == S_OK, "D3DReflect failed, got %x, expected %x\n", hr, S_OK);
91
92 hr = ref11->lpVtbl->QueryInterface(ref11, &IID_ID3D11ShaderReflection, (void **)&ref11_test);
93 ok(hr == S_OK, "QueryInterface failed, got %x, expected %x\n", hr, S_OK);
94
95 count = ref11_test->lpVtbl->Release(ref11_test);
96 ok(count == 1, "Release failed %u\n", count);
97
98 hr = ref11->lpVtbl->QueryInterface(ref11, &IID_ID3D10ShaderReflection, (void **)&ref10);
99 ok(hr == E_NOINTERFACE, "QueryInterface failed, got %x, expected %x\n", hr, E_NOINTERFACE);
100
101 hr = ref11->lpVtbl->QueryInterface(ref11, &IID_ID3D10ShaderReflection1, (void **)&ref10_1);
102 ok(hr == E_NOINTERFACE, "QueryInterface failed, got %x, expected %x\n", hr, E_NOINTERFACE);
103
104 count = ref11->lpVtbl->Release(ref11);
105 ok(count == 0, "Release failed %u\n", count);
106
107 /* check invalid cases */
108 hr = pD3DReflect(test_reflection_blob, test_reflection_blob[6], &IID_ID3D10ShaderReflection, (void **)&ref10);
109 ok(hr == E_NOINTERFACE, "D3DReflect failed, got %x, expected %x\n", hr, E_NOINTERFACE);
110
111 hr = pD3DReflect(test_reflection_blob, test_reflection_blob[6], &IID_ID3D10ShaderReflection1, (void **)&ref10_1);
112 ok(hr == E_NOINTERFACE, "D3DReflect failed, got %x, expected %x\n", hr, E_NOINTERFACE);
113
114 hr = pD3DReflect(NULL, test_reflection_blob[6], &IID_ID3D10ShaderReflection1, (void **)&ref10_1);
115 ok(hr == D3DERR_INVALIDCALL, "D3DReflect failed, got %x, expected %x\n", hr, D3DERR_INVALIDCALL);
116
117 hr = pD3DReflect(NULL, test_reflection_blob[6], &IID_ID3D11ShaderReflection, (void **)&ref11);
118 ok(hr == D3DERR_INVALIDCALL, "D3DReflect failed, got %x, expected %x\n", hr, D3DERR_INVALIDCALL);
119
120 /* returns different errors with different sizes */
121 hr = pD3DReflect(test_reflection_blob, 31, &IID_ID3D10ShaderReflection1, (void **)&ref10_1);
122 ok(hr == D3DERR_INVALIDCALL, "D3DReflect failed, got %x, expected %x\n", hr, D3DERR_INVALIDCALL);
123
124 hr = pD3DReflect(test_reflection_blob, 32, &IID_ID3D10ShaderReflection1, (void **)&ref10_1);
125 ok(hr == E_FAIL, "D3DReflect failed, got %x, expected %x\n", hr, E_FAIL);
126
127 hr = pD3DReflect(test_reflection_blob, test_reflection_blob[6]-1, &IID_ID3D10ShaderReflection1, (void **)&ref10_1);
128 ok(hr == E_FAIL, "D3DReflect failed, got %x, expected %x\n", hr, E_FAIL);
129
130 hr = pD3DReflect(test_reflection_blob, 31, &IID_ID3D11ShaderReflection, (void **)&ref11);
131 ok(hr == D3DERR_INVALIDCALL, "D3DReflect failed, got %x, expected %x\n", hr, D3DERR_INVALIDCALL);
132
133 hr = pD3DReflect(test_reflection_blob, 32, &IID_ID3D11ShaderReflection, (void **)&ref11);
134 ok(hr == E_FAIL, "D3DReflect failed, got %x, expected %x\n", hr, E_FAIL);
135
136 hr = pD3DReflect(test_reflection_blob, test_reflection_blob[6]-1, &IID_ID3D11ShaderReflection, (void **)&ref11);
137 ok(hr == E_FAIL, "D3DReflect failed, got %x, expected %x\n", hr, E_FAIL);
138}
139
140#endif /* !__REACTOS__ */
141
142/*
143 * fxc.exe /E VS /Tvs_4_1 /Fx
144 */
145#if 0
146struct vsin
147{
148 float4 x : SV_position;
149 float4 a : BINORMAL;
150 uint b : BLENDINDICES;
151 float c : BLENDWEIGHT;
152 float4 d : COLOR;
153 float4 d1 : COLOR1;
154 float4 e : NORMAL;
155 float4 f : POSITION;
156 float4 g : POSITIONT;
157 float h : PSIZE;
158 float4 i : TANGENT;
159 float4 j : TEXCOORD;
160 uint k : SV_VertexID;
161 uint l : SV_InstanceID;
162 float m : testin;
163};
164struct vsout
165{
166 float4 x : SV_position;
167 float4 a : COLOR0;
168 float b : FOG;
169 float4 c : POSITION0;
170 float d : PSIZE;
171 float e : TESSFACTOR0;
172 float4 f : TEXCOORD0;
173 float g : SV_ClipDistance0;
174 float h : SV_CullDistance0;
175 uint i : SV_InstanceID;
176 float j : testout;
177};
178vsout VS(vsin x)
179{
180 vsout s;
181 s.x = float4(1.6f, 0.3f, 0.1f, 0.0f);
182 int y = 1;
183 int p[5] = {1, 2, 3, 5, 4};
184 y = y << (int) x.x.x & 0xf;
185 s.x.x = p[y];
186 s.a = x.d;
187 s.b = x.c;
188 s.c = x.f;
189 s.d = x.h;
190 s.e = x.h;
191 s.f = x.j;
192 s.g = 1.0f;
193 s.h = 1.0f;
194 s.i = 2;
195 s.j = x.m;
196 return s;
197}
198#endif
2000x43425844, 0xb65955ac, 0xcea1cb75, 0x06c5a1ad, 0x8a555fa1, 0x00000001, 0x0000076c, 0x00000005,
2010x00000034, 0x0000008c, 0x0000028c, 0x00000414, 0x000006f0, 0x46454452, 0x00000050, 0x00000000,
2020x00000000, 0x00000000, 0x0000001c, 0xfffe0401, 0x00000100, 0x0000001c, 0x7263694d, 0x666f736f,
2030x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39322e,
2040x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x000001f8, 0x0000000f, 0x00000008, 0x00000170,
2050x00000000, 0x00000000, 0x00000003, 0x00000000, 0x0000010f, 0x0000017c, 0x00000000, 0x00000000,
2060x00000003, 0x00000001, 0x0000000f, 0x00000185, 0x00000000, 0x00000000, 0x00000001, 0x00000002,
2070x00000001, 0x00000192, 0x00000000, 0x00000000, 0x00000003, 0x00000003, 0x00000101, 0x0000019e,
2080x00000000, 0x00000000, 0x00000003, 0x00000004, 0x00000f0f, 0x0000019e, 0x00000001, 0x00000000,
2090x00000003, 0x00000005, 0x0000000f, 0x000001a4, 0x00000000, 0x00000000, 0x00000003, 0x00000006,
2100x0000000f, 0x000001ab, 0x00000000, 0x00000000, 0x00000003, 0x00000007, 0x00000f0f, 0x000001b4,
2110x00000000, 0x00000000, 0x00000003, 0x00000008, 0x0000000f, 0x000001be, 0x00000000, 0x00000000,
2120x00000003, 0x00000009, 0x00000101, 0x000001c4, 0x00000000, 0x00000000, 0x00000003, 0x0000000a,
2130x0000000f, 0x000001cc, 0x00000000, 0x00000000, 0x00000003, 0x0000000b, 0x00000f0f, 0x000001d5,
2140x00000000, 0x00000006, 0x00000001, 0x0000000c, 0x00000001, 0x000001e1, 0x00000000, 0x00000008,
2150x00000001, 0x0000000d, 0x00000001, 0x000001ef, 0x00000000, 0x00000000, 0x00000003, 0x0000000e,
2160x00000101, 0x705f5653, 0x7469736f, 0x006e6f69, 0x4f4e4942, 0x4c414d52, 0x454c4200, 0x4e49444e,
2170x45434944, 0x4c420053, 0x57444e45, 0x48474945, 0x4f430054, 0x00524f4c, 0x4d524f4e, 0x50004c41,
2180x5449534f, 0x004e4f49, 0x49534f50, 0x4e4f4954, 0x53500054, 0x00455a49, 0x474e4154, 0x00544e45,
2190x43584554, 0x44524f4f, 0x5f565300, 0x74726556, 0x44497865, 0x5f565300, 0x74736e49, 0x65636e61,
2200x74004449, 0x69747365, 0xabab006e, 0x4e47534f, 0x00000180, 0x0000000b, 0x00000008, 0x00000110,
2210x00000000, 0x00000001, 0x00000003, 0x00000000, 0x0000000f, 0x0000011c, 0x00000000, 0x00000000,
2220x00000003, 0x00000001, 0x0000000f, 0x00000122, 0x00000000, 0x00000000, 0x00000003, 0x00000002,
2230x00000e01, 0x00000126, 0x00000000, 0x00000000, 0x00000003, 0x00000002, 0x00000d02, 0x0000012c,
2240x00000000, 0x00000000, 0x00000003, 0x00000002, 0x00000b04, 0x00000137, 0x00000000, 0x00000000,
2250x00000003, 0x00000002, 0x00000708, 0x0000013f, 0x00000000, 0x00000000, 0x00000003, 0x00000003,
2260x0000000f, 0x00000148, 0x00000000, 0x00000000, 0x00000003, 0x00000004, 0x0000000f, 0x00000151,
2270x00000000, 0x00000002, 0x00000003, 0x00000005, 0x00000e01, 0x00000161, 0x00000000, 0x00000003,
2280x00000003, 0x00000005, 0x00000d02, 0x00000171, 0x00000000, 0x00000000, 0x00000001, 0x00000006,
2290x00000e01, 0x705f5653, 0x7469736f, 0x006e6f69, 0x4f4c4f43, 0x4f460052, 0x53500047, 0x00455a49,
2300x53534554, 0x54434146, 0x7400524f, 0x6f747365, 0x50007475, 0x5449534f, 0x004e4f49, 0x43584554,
2310x44524f4f, 0x5f565300, 0x70696c43, 0x74736944, 0x65636e61, 0x5f565300, 0x6c6c7543, 0x74736944,
2320x65636e61, 0x5f565300, 0x74736e49, 0x65636e61, 0xab004449, 0x52444853, 0x000002d4, 0x00010041,
2330x000000b5, 0x0100086a, 0x0300005f, 0x00101012, 0x00000000, 0x0300005f, 0x00101012, 0x00000003,
2340x0300005f, 0x001010f2, 0x00000004, 0x0300005f, 0x001010f2, 0x00000007, 0x0300005f, 0x00101012,
2350x00000009, 0x0300005f, 0x001010f2, 0x0000000b, 0x0300005f, 0x00101012, 0x0000000e, 0x04000067,
2360x001020f2, 0x00000000, 0x00000001, 0x03000065, 0x001020f2, 0x00000001, 0x03000065, 0x00102012,
2370x00000002, 0x03000065, 0x00102022, 0x00000002, 0x03000065, 0x00102042, 0x00000002, 0x03000065,
2380x00102082, 0x00000002, 0x03000065, 0x001020f2, 0x00000003, 0x03000065, 0x001020f2, 0x00000004,
2390x04000067, 0x00102012, 0x00000005, 0x00000002, 0x04000067, 0x00102022, 0x00000005, 0x00000003,
2400x03000065, 0x00102012, 0x00000006, 0x02000068, 0x00000001, 0x04000069, 0x00000000, 0x00000005,
2410x00000004, 0x06000036, 0x00203012, 0x00000000, 0x00000000, 0x00004001, 0x00000001, 0x06000036,
2420x00203012, 0x00000000, 0x00000001, 0x00004001, 0x00000002, 0x06000036, 0x00203012, 0x00000000,
2430x00000002, 0x00004001, 0x00000003, 0x06000036, 0x00203012, 0x00000000, 0x00000003, 0x00004001,
2440x00000005, 0x06000036, 0x00203012, 0x00000000, 0x00000004, 0x00004001, 0x00000004, 0x0500001b,
2450x00100012, 0x00000000, 0x0010100a, 0x00000000, 0x07000029, 0x00100012, 0x00000000, 0x00004001,
2460x00000001, 0x0010000a, 0x00000000, 0x07000001, 0x00100012, 0x00000000, 0x0010000a, 0x00000000,
2470x00004001, 0x0000000f, 0x07000036, 0x00100012, 0x00000000, 0x0420300a, 0x00000000, 0x0010000a,
2480x00000000, 0x0500002b, 0x00102012, 0x00000000, 0x0010000a, 0x00000000, 0x08000036, 0x001020e2,
2490x00000000, 0x00004002, 0x00000000, 0x3e99999a, 0x3dcccccd, 0x00000000, 0x05000036, 0x001020f2,
2500x00000001, 0x00101e46, 0x00000004, 0x05000036, 0x00102012, 0x00000002, 0x0010100a, 0x00000003,
2510x05000036, 0x00102062, 0x00000002, 0x00101006, 0x00000009, 0x05000036, 0x00102082, 0x00000002,
2520x0010100a, 0x0000000e, 0x05000036, 0x001020f2, 0x00000003, 0x00101e46, 0x00000007, 0x05000036,
2530x001020f2, 0x00000004, 0x00101e46, 0x0000000b, 0x05000036, 0x00102012, 0x00000005, 0x00004001,
2540x3f800000, 0x05000036, 0x00102022, 0x00000005, 0x00004001, 0x3f800000, 0x05000036, 0x00102012,
2550x00000006, 0x00004001, 0x00000002, 0x0100003e, 0x54415453, 0x00000074, 0x00000015, 0x00000001,
2560x00000000, 0x00000012, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000000,
2570x00000005, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2580x00000000, 0x0000000a, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2590x00000000, 0x00000000, 0x00000000,
260};
261
263{
264 {"SV_position", 0, 0, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x1, 0},
265 {"BINORMAL", 0, 1, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
266 {"BLENDINDICES", 0, 2, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_UINT32, 0x1, 0x0, 0},
267 {"BLENDWEIGHT", 0, 3, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0x1, 0},
268 {"COLOR", 0, 4, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0xf, 0},
269 {"COLOR", 1, 5, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
270 {"NORMAL", 0, 6, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
271 {"POSITION", 0, 7, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0xf, 0},
272 {"POSITIONT", 0, 8, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
273 {"PSIZE", 0, 9, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0x1, 0},
274 {"TANGENT", 0, 10, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
275 {"TEXCOORD", 0, 11, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0xf, 0},
276 {"SV_VertexID", 0, 12, D3D_NAME_VERTEX_ID, D3D_REGISTER_COMPONENT_UINT32, 0x1, 0x0, 0},
277 {"SV_InstanceID", 0, 13, D3D_NAME_INSTANCE_ID, D3D_REGISTER_COMPONENT_UINT32, 0x1, 0x0, 0},
278 {"testin", 0, 14, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0x1, 0},
279};
280
282{
283 {"SV_position", 0, 0, D3D_NAME_POSITION, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
284 {"COLOR", 0, 1, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
285 {"FOG", 0, 2, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
286 {"PSIZE", 0, 2, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x2, 0xd, 0},
287 {"TESSFACTOR", 0, 2, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x4, 0xb, 0},
288 {"testout", 0, 2, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x8, 0x7, 0},
289 {"POSITION", 0, 3, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
290 {"TEXCOORD", 0, 4, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
291 {"SV_ClipDistance", 0, 5, D3D_NAME_CLIP_DISTANCE, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
292 {"SV_CullDistance", 0, 5, D3D_NAME_CULL_DISTANCE, D3D_REGISTER_COMPONENT_FLOAT32, 0x2, 0xd, 0},
293 {"SV_InstanceID", 0, 6, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_UINT32, 0x1, 0xe, 0},
294};
295
296static void test_reflection_desc_vs(void)
297{
298 HRESULT hr;
299 ULONG count;
300 ID3D11ShaderReflection *ref11;
301 D3D11_SHADER_DESC sdesc11 = {0};
304 UINT ret;
305 unsigned int i;
306
307 hr = pD3DReflect(test_reflection_desc_vs_blob, test_reflection_desc_vs_blob[6], &IID_ID3D11ShaderReflection, (void **)&ref11);
308 ok(hr == S_OK, "D3DReflect failed %x\n", hr);
309
310 hr = ref11->lpVtbl->GetDesc(ref11, NULL);
311 ok(hr == E_FAIL, "GetDesc failed %x\n", hr);
312
313 hr = ref11->lpVtbl->GetDesc(ref11, &sdesc11);
314 ok(hr == S_OK, "GetDesc failed %x\n", hr);
315
316 ok(sdesc11.Version == 65601, "GetDesc failed, got %u, expected %u\n", sdesc11.Version, 65601);
317 ok(strcmp(sdesc11.Creator, (char*) shader_creator) == 0, "GetDesc failed, got \"%s\", expected \"%s\"\n", sdesc11.Creator, (char*)shader_creator);
318 ok(sdesc11.Flags == 256, "GetDesc failed, got %u, expected %u\n", sdesc11.Flags, 256);
319 ok(sdesc11.ConstantBuffers == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.ConstantBuffers, 0);
320 ok(sdesc11.BoundResources == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.BoundResources, 0);
321 ok(sdesc11.InputParameters == 15, "GetDesc failed, got %u, expected %u\n", sdesc11.InputParameters, 15);
322 ok(sdesc11.OutputParameters == 11, "GetDesc failed, got %u, expected %u\n", sdesc11.OutputParameters, 11);
323 ok(sdesc11.InstructionCount == 21, "GetDesc failed, got %u, expected %u\n", sdesc11.InstructionCount, 21);
324 ok(sdesc11.TempRegisterCount == 1, "GetDesc failed, got %u, expected %u\n", sdesc11.TempRegisterCount, 1);
325 ok(sdesc11.TempArrayCount == 5, "GetDesc failed, got %u, expected %u\n", sdesc11.TempArrayCount, 5);
326 ok(sdesc11.DefCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.DefCount, 0);
327 ok(sdesc11.DclCount == 18, "GetDesc failed, got %u, expected %u\n", sdesc11.DclCount, 18);
328 ok(sdesc11.TextureNormalInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureNormalInstructions, 0);
329 ok(sdesc11.TextureLoadInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureLoadInstructions, 0);
330 ok(sdesc11.TextureCompInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureCompInstructions, 0);
331 ok(sdesc11.TextureBiasInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureBiasInstructions, 0);
332 ok(sdesc11.TextureGradientInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureGradientInstructions, 0);
333 ok(sdesc11.FloatInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.FloatInstructionCount, 0);
334 ok(sdesc11.IntInstructionCount == 1, "GetDesc failed, got %u, expected %u\n", sdesc11.IntInstructionCount, 1);
335 ok(sdesc11.UintInstructionCount == 1, "GetDesc failed, got %u, expected %u\n", sdesc11.UintInstructionCount, 1);
336 ok(sdesc11.StaticFlowControlCount == 1, "GetDesc failed, got %u, expected %u\n", sdesc11.StaticFlowControlCount, 1);
337 ok(sdesc11.DynamicFlowControlCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.DynamicFlowControlCount, 0);
338 ok(sdesc11.MacroInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.MacroInstructionCount, 0);
339 ok(sdesc11.ArrayInstructionCount == 6, "GetDesc failed, got %u, expected %u\n", sdesc11.ArrayInstructionCount, 6);
340 ok(sdesc11.CutInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.CutInstructionCount, 0);
341 ok(sdesc11.EmitInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.EmitInstructionCount, 0);
342 ok(sdesc11.GSOutputTopology == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.GSOutputTopology, 0);
343 ok(sdesc11.GSMaxOutputVertexCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.GSMaxOutputVertexCount, 0);
344 ok(sdesc11.InputPrimitive == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.InputPrimitive, 0);
345 ok(sdesc11.PatchConstantParameters == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.PatchConstantParameters, 0);
346 ok(sdesc11.cGSInstanceCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cGSInstanceCount, 0);
347 ok(sdesc11.cControlPoints == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cControlPoints, 0);
348 ok(sdesc11.HSOutputPrimitive == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.HSOutputPrimitive, 0);
349 ok(sdesc11.HSPartitioning == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.HSPartitioning, 0);
350 ok(sdesc11.TessellatorDomain == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.TessellatorDomain, 0);
351 ok(sdesc11.cBarrierInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cBarrierInstructions, 0);
352 ok(sdesc11.cInterlockedInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cInterlockedInstructions, 0);
353 ok(sdesc11.cTextureStoreInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cTextureStoreInstructions, 0);
354
355 ret = ref11->lpVtbl->GetBitwiseInstructionCount(ref11);
356 ok(ret == 0, "GetBitwiseInstructionCount failed, got %u, expected %u\n", ret, 0);
357
358 ret = ref11->lpVtbl->GetConversionInstructionCount(ref11);
359 ok(ret == 2, "GetConversionInstructionCount failed, got %u, expected %u\n", ret, 2);
360
361 ret = ref11->lpVtbl->GetMovInstructionCount(ref11);
362 ok(ret == 10, "GetMovInstructionCount failed, got %u, expected %u\n", ret, 10);
363
364 ret = ref11->lpVtbl->GetMovcInstructionCount(ref11);
365 ok(ret == 0, "GetMovcInstructionCount failed, got %u, expected %u\n", ret, 0);
366
367 /* GetIn/OutputParameterDesc */
369 {
371
372 hr = ref11->lpVtbl->GetInputParameterDesc(ref11, i, &desc);
373 ok(hr == S_OK, "GetInputParameterDesc(%u) failed, got %x, expected %x\n", i, hr, S_OK);
374
375 ok(!strcmp(desc.SemanticName, pdesc->SemanticName), "GetInputParameterDesc(%u) SemanticName failed, got \"%s\", expected \"%s\"\n",
376 i, desc.SemanticName, pdesc->SemanticName);
377 ok(desc.SemanticIndex == pdesc->SemanticIndex, "GetInputParameterDesc(%u) SemanticIndex failed, got %u, expected %u\n",
378 i, desc.SemanticIndex, pdesc->SemanticIndex);
379 ok(desc.Register == pdesc->Register, "GetInputParameterDesc(%u) Register failed, got %u, expected %u\n",
380 i, desc.Register, pdesc->Register);
381 ok(desc.SystemValueType == pdesc->SystemValueType, "GetInputParameterDesc(%u) SystemValueType failed, got %x, expected %x\n",
382 i, desc.SystemValueType, pdesc->SystemValueType);
383 ok(desc.ComponentType == pdesc->ComponentType, "GetInputParameterDesc(%u) ComponentType failed, got %x, expected %x\n",
384 i, desc.ComponentType, pdesc->ComponentType);
385 ok(desc.Mask == pdesc->Mask, "GetInputParameterDesc(%u) Mask failed, got %x, expected %x\n",
386 i, desc.Mask, pdesc->Mask);
387 ok(desc.ReadWriteMask == pdesc->ReadWriteMask, "GetInputParameterDesc(%u) ReadWriteMask failed, got %x, expected %x\n",
388 i, desc.ReadWriteMask, pdesc->ReadWriteMask);
389 ok(desc.Stream == pdesc->Stream, "GetInputParameterDesc(%u) Stream failed, got %u, expected %u\n",
390 i, desc.Stream, pdesc->ReadWriteMask);
391 }
392
394 {
396
397 hr = ref11->lpVtbl->GetOutputParameterDesc(ref11, i, &desc);
398 ok(hr == S_OK, "GetOutputParameterDesc(%u) failed, got %x, expected %x\n", i, hr, S_OK);
399
400 ok(!strcmp(desc.SemanticName, pdesc->SemanticName), "GetOutputParameterDesc(%u) SemanticName failed, got \"%s\", expected \"%s\"\n",
401 i, desc.SemanticName, pdesc->SemanticName);
402 ok(desc.SemanticIndex == pdesc->SemanticIndex, "GetOutputParameterDesc(%u) SemanticIndex failed, got %u, expected %u\n",
403 i, desc.SemanticIndex, pdesc->SemanticIndex);
404 ok(desc.Register == pdesc->Register, "GetOutputParameterDesc(%u) Register failed, got %u, expected %u\n",
405 i, desc.Register, pdesc->Register);
406 ok(desc.SystemValueType == pdesc->SystemValueType, "GetOutputParameterDesc(%u) SystemValueType failed, got %x, expected %x\n",
407 i, desc.SystemValueType, pdesc->SystemValueType);
408 ok(desc.ComponentType == pdesc->ComponentType, "GetOutputParameterDesc(%u) ComponentType failed, got %x, expected %x\n",
409 i, desc.ComponentType, pdesc->ComponentType);
410 ok(desc.Mask == pdesc->Mask, "GetOutputParameterDesc(%u) Mask failed, got %x, expected %x\n",
411 i, desc.Mask, pdesc->Mask);
412 ok(desc.ReadWriteMask == pdesc->ReadWriteMask, "GetOutputParameterDesc(%u) ReadWriteMask failed, got %x, expected %x\n",
413 i, desc.ReadWriteMask, pdesc->ReadWriteMask);
414 ok(desc.Stream == pdesc->Stream, "GetOutputParameterDesc(%u) Stream failed, got %u, expected %u\n",
415 i, desc.Stream, pdesc->ReadWriteMask);
416 }
417
418 count = ref11->lpVtbl->Release(ref11);
419 ok(count == 0, "Release failed %u\n", count);
420}
421
422/*
423 * fxc.exe /E PS /Tps_4_1 /Fx
424 */
425#if 0
426Texture2D tex1;
427Texture2D tex2;
428SamplerState sam
429{
430 Filter = MIN_MAG_MIP_LINEAR;
431 AddressU = Wrap;
432 AddressV = Wrap;
433};
434SamplerComparisonState samc
435{
436 Filter = MIN_MAG_MIP_LINEAR;
437 AddressU = w1;
438 AddressV = Wrap;
439 ComparisonFunc = LESS;
440};
441struct psin
442{
443 uint f : SV_RenderTargetArrayIndex;
444 uint g : SV_InstanceID;
445 uint h : SV_PrimitiveID;
446 float2 uv : TEXCOORD;
447 float4 a : COLOR3;
448 float b : VFACE;
449 float4 c : SV_position;
450 bool d : SV_Coverage;
451 bool e : SV_IsFrontFace;
452};
453struct psout
454{
455 float a : SV_Target1;
456 float b : SV_Depth;
457 float x : SV_Target;
458 bool c : SV_Coverage;
459};
460psout PS(psin p)
461{
462 psout a;
463 float4 x = tex1.Sample(sam, p.uv);
464 x += tex1.SampleCmp(samc, p.uv, 0.3f);
465 if (x.y < 0.1f)
466 x += tex2.SampleCmp(samc, p.uv, 0.4f);
467 else if (x.y < 0.2f)
468 x += tex2.SampleCmp(samc, p.uv, 0.1f);
469 else if (x.y < 0.3f)
470 x += tex2.SampleBias(sam, p.uv, 0.1f);
471 else if (x.y < 0.4f)
472 x += tex2.SampleBias(sam, p.uv, 0.2f);
473 else if (x.y < 0.5f)
474 x += tex2.SampleBias(sam, p.uv, 0.3f);
475 else
476 x += tex2.SampleBias(sam, p.uv, 0.4f);
477 x += tex2.SampleGrad(sam, p.uv, x.xy, x.xy);
478 x += tex2.SampleGrad(sam, p.uv, x.xz, x.xz);
479 x += tex2.SampleGrad(sam, p.uv, x.xz, x.zy);
480 x += tex2.SampleGrad(sam, p.uv, x.xz, x.zw);
481 x += tex2.SampleGrad(sam, p.uv, x.xz, x.wz);
482 a.a = x.y;
483 a.b = x.x;
484 a.x = x.x;
485 a.c = true;
486 return a;
487}
488#endif
4900x43425844, 0x19e2f325, 0xf1ec39a3, 0x3c5a8b53, 0x5bd5fb65, 0x00000001, 0x000008d0, 0x00000005,
4910x00000034, 0x0000011c, 0x00000254, 0x000002e4, 0x00000854, 0x46454452, 0x000000e0, 0x00000000,
4920x00000000, 0x00000004, 0x0000001c, 0xffff0401, 0x00000100, 0x000000af, 0x0000009c, 0x00000003,
4930x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x000000a0, 0x00000003,
4940x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000002, 0x000000a5, 0x00000002,
4950x00000005, 0x00000004, 0xffffffff, 0x00000000, 0x00000001, 0x0000000c, 0x000000aa, 0x00000002,
4960x00000005, 0x00000004, 0xffffffff, 0x00000001, 0x00000001, 0x0000000c, 0x006d6173, 0x636d6173,
4970x78657400, 0x65740031, 0x4d003278, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c,
4980x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131, 0x4e475349,
4990x00000130, 0x00000008, 0x00000008, 0x000000c8, 0x00000000, 0x00000004, 0x00000001, 0x00000000,
5000x00000001, 0x000000e2, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000002, 0x000000f0,
5010x00000000, 0x00000007, 0x00000001, 0x00000000, 0x00000004, 0x000000ff, 0x00000000, 0x00000009,
5020x00000001, 0x00000000, 0x00000008, 0x0000010e, 0x00000000, 0x00000000, 0x00000003, 0x00000001,
5030x00000303, 0x00000117, 0x00000000, 0x00000000, 0x00000003, 0x00000001, 0x00000004, 0x0000011d,
5040x00000003, 0x00000000, 0x00000003, 0x00000002, 0x0000000f, 0x00000123, 0x00000000, 0x00000001,
5050x00000003, 0x00000003, 0x0000000f, 0x525f5653, 0x65646e65, 0x72615472, 0x41746567, 0x79617272,
5060x65646e49, 0x56530078, 0x736e495f, 0x636e6174, 0x00444965, 0x505f5653, 0x696d6972, 0x65766974,
5070x53004449, 0x73495f56, 0x6e6f7246, 0x63614674, 0x45540065, 0x4f4f4358, 0x56004452, 0x45434146,
5080x4c4f4300, 0x5300524f, 0x6f705f56, 0x69746973, 0xab006e6f, 0x4e47534f, 0x00000088, 0x00000004,
5090x00000008, 0x00000068, 0x00000000, 0x00000000, 0x00000003, 0x00000000, 0x00000e01, 0x00000068,
5100x00000001, 0x00000000, 0x00000003, 0x00000001, 0x00000e01, 0x00000072, 0x00000000, 0x00000000,
5110x00000001, 0xffffffff, 0x00000e01, 0x0000007e, 0x00000000, 0x00000000, 0x00000003, 0xffffffff,
5120x00000e01, 0x545f5653, 0x65677261, 0x56530074, 0x766f435f, 0x67617265, 0x56530065, 0x7065445f,
5130xab006874, 0x52444853, 0x00000568, 0x00000041, 0x0000015a, 0x0100086a, 0x0300005a, 0x00106000,
5140x00000000, 0x0300085a, 0x00106000, 0x00000001, 0x04001858, 0x00107000, 0x00000000, 0x00005555,
5150x04001858, 0x00107000, 0x00000001, 0x00005555, 0x03001062, 0x00101032, 0x00000001, 0x03000065,
5160x00102012, 0x00000000, 0x03000065, 0x00102012, 0x00000001, 0x02000065, 0x0000f000, 0x02000065,
5170x0000c001, 0x02000068, 0x00000003, 0x09000045, 0x001000f2, 0x00000000, 0x00101046, 0x00000001,
5180x00107e46, 0x00000000, 0x00106000, 0x00000000, 0x0b000046, 0x00100012, 0x00000001, 0x00101046,
5190x00000001, 0x00107006, 0x00000000, 0x00106000, 0x00000001, 0x00004001, 0x3e99999a, 0x07000000,
5200x001000f2, 0x00000000, 0x00100e46, 0x00000000, 0x00100006, 0x00000001, 0x07000031, 0x00100012,
5210x00000001, 0x0010001a, 0x00000000, 0x00004001, 0x3dcccccd, 0x0304001f, 0x0010000a, 0x00000001,
5220x0b000046, 0x00100012, 0x00000001, 0x00101046, 0x00000001, 0x00107006, 0x00000001, 0x00106000,
5230x00000001, 0x00004001, 0x3ecccccd, 0x07000000, 0x001000f2, 0x00000001, 0x00100e46, 0x00000000,
5240x00100006, 0x00000001, 0x01000012, 0x07000031, 0x00100012, 0x00000002, 0x0010001a, 0x00000000,
5250x00004001, 0x3e4ccccd, 0x0304001f, 0x0010000a, 0x00000002, 0x0b000046, 0x00100012, 0x00000002,
5260x00101046, 0x00000001, 0x00107006, 0x00000001, 0x00106000, 0x00000001, 0x00004001, 0x3dcccccd,
5270x07000000, 0x001000f2, 0x00000001, 0x00100e46, 0x00000000, 0x00100006, 0x00000002, 0x01000012,
5280x07000031, 0x00100012, 0x00000002, 0x0010001a, 0x00000000, 0x00004001, 0x3e99999a, 0x0304001f,
5290x0010000a, 0x00000002, 0x0b00004a, 0x001000f2, 0x00000002, 0x00101046, 0x00000001, 0x00107e46,
5300x00000001, 0x00106000, 0x00000000, 0x00004001, 0x3dcccccd, 0x07000000, 0x001000f2, 0x00000001,
5310x00100e46, 0x00000000, 0x00100e46, 0x00000002, 0x01000012, 0x07000031, 0x00100012, 0x00000002,
5320x0010001a, 0x00000000, 0x00004001, 0x3ecccccd, 0x0304001f, 0x0010000a, 0x00000002, 0x0b00004a,
5330x001000f2, 0x00000002, 0x00101046, 0x00000001, 0x00107e46, 0x00000001, 0x00106000, 0x00000000,
5340x00004001, 0x3e4ccccd, 0x07000000, 0x001000f2, 0x00000001, 0x00100e46, 0x00000000, 0x00100e46,
5350x00000002, 0x01000012, 0x07000031, 0x00100012, 0x00000002, 0x0010001a, 0x00000000, 0x00004001,
5360x3f000000, 0x0304001f, 0x0010000a, 0x00000002, 0x0b00004a, 0x001000f2, 0x00000002, 0x00101046,
5370x00000001, 0x00107e46, 0x00000001, 0x00106000, 0x00000000, 0x00004001, 0x3e99999a, 0x07000000,
5380x001000f2, 0x00000001, 0x00100e46, 0x00000000, 0x00100e46, 0x00000002, 0x01000012, 0x0b00004a,
5390x001000f2, 0x00000002, 0x00101046, 0x00000001, 0x00107e46, 0x00000001, 0x00106000, 0x00000000,
5400x00004001, 0x3ecccccd, 0x07000000, 0x001000f2, 0x00000001, 0x00100e46, 0x00000000, 0x00100e46,
5410x00000002, 0x01000015, 0x01000015, 0x01000015, 0x01000015, 0x01000015, 0x0d000049, 0x001000f2,
5420x00000000, 0x00101046, 0x00000001, 0x00107e46, 0x00000001, 0x00106000, 0x00000000, 0x00100046,
5430x00000001, 0x00100046, 0x00000001, 0x07000000, 0x001000f2, 0x00000000, 0x00100e46, 0x00000000,
5440x00100e46, 0x00000001, 0x0d000049, 0x001000f2, 0x00000001, 0x00101046, 0x00000001, 0x00107e46,
5450x00000001, 0x00106000, 0x00000000, 0x00100086, 0x00000000, 0x00100086, 0x00000000, 0x07000000,
5460x001000f2, 0x00000000, 0x00100e46, 0x00000000, 0x00100e46, 0x00000001, 0x0d000049, 0x001000f2,
5470x00000001, 0x00101046, 0x00000001, 0x00107e46, 0x00000001, 0x00106000, 0x00000000, 0x00100086,
5480x00000000, 0x00100a66, 0x00000000, 0x07000000, 0x001000f2, 0x00000000, 0x00100e46, 0x00000000,
5490x00100e46, 0x00000001, 0x0d000049, 0x001000f2, 0x00000001, 0x00101046, 0x00000001, 0x00107e46,
5500x00000001, 0x00106000, 0x00000000, 0x00100086, 0x00000000, 0x00100ae6, 0x00000000, 0x07000000,
5510x001000f2, 0x00000000, 0x00100e46, 0x00000000, 0x00100e46, 0x00000001, 0x0d000049, 0x001000c2,
5520x00000000, 0x00101046, 0x00000001, 0x001074e6, 0x00000001, 0x00106000, 0x00000000, 0x00100086,
5530x00000000, 0x00100fb6, 0x00000000, 0x07000000, 0x00100032, 0x00000000, 0x00100ae6, 0x00000000,
5540x00100046, 0x00000000, 0x05000036, 0x00102012, 0x00000001, 0x0010001a, 0x00000000, 0x04000036,
5550x0000c001, 0x0010000a, 0x00000000, 0x05000036, 0x00102012, 0x00000000, 0x0010000a, 0x00000000,
5560x04000036, 0x0000f001, 0x00004001, 0xffffffff, 0x0100003e, 0x54415453, 0x00000074, 0x00000032,
5570x00000003, 0x00000000, 0x00000005, 0x00000011, 0x00000000, 0x00000000, 0x00000006, 0x00000005,
5580x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000003,
5590x00000004, 0x00000005, 0x00000018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5600x00000000, 0x00000000, 0x00000000, 0x00000000,
561};
562
564{
565 {"SV_RenderTargetArrayIndex", 0, 0, D3D_NAME_RENDER_TARGET_ARRAY_INDEX, D3D_REGISTER_COMPONENT_UINT32, 0x1, 0x0, 0},
566 {"SV_InstanceID", 0, 0, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_UINT32, 0x2, 0x0, 0},
567 {"SV_PrimitiveID", 0, 0, D3D_NAME_PRIMITIVE_ID, D3D_REGISTER_COMPONENT_UINT32, 0x4, 0x0, 0},
568 {"SV_IsFrontFace", 0, 0, D3D_NAME_IS_FRONT_FACE, D3D_REGISTER_COMPONENT_UINT32, 0x8, 0x0, 0},
569 {"TEXCOORD", 0, 1, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x3, 0x3, 0},
570 {"VFACE", 0, 1, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0x4, 0x0, 0},
571 {"COLOR", 3, 2, D3D_NAME_UNDEFINED, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
572 {"SV_position", 0, 3, D3D_NAME_POSITION, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0x0, 0},
573};
574
576{
577 {"SV_Target", 0, 0, D3D_NAME_TARGET, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
578 {"SV_Target", 1, 1, D3D_NAME_TARGET, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
579 {"SV_Coverage", 0, 0xffffffff, D3D_NAME_COVERAGE, D3D_REGISTER_COMPONENT_UINT32, 0x1, 0xe, 0},
580 {"SV_Depth", 0, 0xffffffff, D3D_NAME_DEPTH, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
581};
582
583static void test_reflection_desc_ps(void)
584{
585 HRESULT hr;
586 ULONG count;
587 ID3D11ShaderReflection *ref11;
588 D3D11_SHADER_DESC sdesc11 = {0};
591 UINT ret;
592 unsigned int i;
593
594 hr = pD3DReflect(test_reflection_desc_ps_blob, test_reflection_desc_ps_blob[6], &IID_ID3D11ShaderReflection, (void **)&ref11);
595 ok(hr == S_OK, "D3DReflect failed %x\n", hr);
596
597 hr = ref11->lpVtbl->GetDesc(ref11, &sdesc11);
598 ok(hr == S_OK, "GetDesc failed %x\n", hr);
599
600 ok(sdesc11.Version == 65, "GetDesc failed, got %u, expected %u\n", sdesc11.Version, 65);
601 ok(strcmp(sdesc11.Creator, (char*) shader_creator) == 0, "GetDesc failed, got \"%s\", expected \"%s\"\n", sdesc11.Creator, (char*)shader_creator);
602 ok(sdesc11.Flags == 256, "GetDesc failed, got %u, expected %u\n", sdesc11.Flags, 256);
603 ok(sdesc11.ConstantBuffers == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.ConstantBuffers, 0);
604 ok(sdesc11.BoundResources == 4, "GetDesc failed, got %u, expected %u\n", sdesc11.BoundResources, 4);
605 ok(sdesc11.InputParameters == 8, "GetDesc failed, got %u, expected %u\n", sdesc11.InputParameters, 8);
606 ok(sdesc11.OutputParameters == 4, "GetDesc failed, got %u, expected %u\n", sdesc11.OutputParameters, 4);
607 ok(sdesc11.InstructionCount == 50, "GetDesc failed, got %u, expected %u\n", sdesc11.InstructionCount, 50);
608 ok(sdesc11.TempRegisterCount == 3, "GetDesc failed, got %u, expected %u\n", sdesc11.TempRegisterCount, 3);
609 ok(sdesc11.TempArrayCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.TempArrayCount, 0);
610 ok(sdesc11.DefCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.DefCount, 0);
611 ok(sdesc11.DclCount == 5, "GetDesc failed, got %u, expected %u\n", sdesc11.DclCount, 5);
612 ok(sdesc11.TextureNormalInstructions == 1, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureNormalInstructions, 1);
613 ok(sdesc11.TextureLoadInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureLoadInstructions, 0);
614 ok(sdesc11.TextureCompInstructions == 3, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureCompInstructions, 3);
615 ok(sdesc11.TextureBiasInstructions == 4, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureBiasInstructions, 4);
616 ok(sdesc11.TextureGradientInstructions == 5, "GetDesc failed, got %u, expected %u\n", sdesc11.TextureGradientInstructions, 5);
617 ok(sdesc11.FloatInstructionCount == 17, "GetDesc failed, got %u, expected %u\n", sdesc11.FloatInstructionCount, 17);
618 ok(sdesc11.IntInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.IntInstructionCount, 0);
619 ok(sdesc11.UintInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.UintInstructionCount, 0);
620 ok(sdesc11.StaticFlowControlCount == 6, "GetDesc failed, got %u, expected %u\n", sdesc11.StaticFlowControlCount, 6);
621 ok(sdesc11.DynamicFlowControlCount == 5, "GetDesc failed, got %u, expected %u\n", sdesc11.DynamicFlowControlCount, 5);
622 ok(sdesc11.MacroInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.MacroInstructionCount, 0);
623 ok(sdesc11.ArrayInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.ArrayInstructionCount, 0);
624 ok(sdesc11.CutInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.CutInstructionCount, 0);
625 ok(sdesc11.EmitInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.EmitInstructionCount, 0);
626 ok(sdesc11.GSOutputTopology == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.GSOutputTopology, 0);
627 ok(sdesc11.GSMaxOutputVertexCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.GSMaxOutputVertexCount, 0);
628 ok(sdesc11.InputPrimitive == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.InputPrimitive, 0);
629 ok(sdesc11.PatchConstantParameters == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.PatchConstantParameters, 0);
630 ok(sdesc11.cGSInstanceCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cGSInstanceCount, 0);
631 ok(sdesc11.cControlPoints == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cControlPoints, 0);
632 ok(sdesc11.HSOutputPrimitive == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.HSOutputPrimitive, 0);
633 ok(sdesc11.HSPartitioning == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.HSPartitioning, 0);
634 ok(sdesc11.TessellatorDomain == 0, "GetDesc failed, got %x, expected %x\n", sdesc11.TessellatorDomain, 0);
635 ok(sdesc11.cBarrierInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cBarrierInstructions, 0);
636 ok(sdesc11.cInterlockedInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cInterlockedInstructions, 0);
637 ok(sdesc11.cTextureStoreInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc11.cTextureStoreInstructions, 0);
638
639 ret = ref11->lpVtbl->GetBitwiseInstructionCount(ref11);
640 ok(ret == 0, "GetBitwiseInstructionCount failed, got %u, expected %u\n", ret, 0);
641
642 ret = ref11->lpVtbl->GetConversionInstructionCount(ref11);
643 ok(ret == 0, "GetConversionInstructionCount failed, got %u, expected %u\n", ret, 0);
644
645 ret = ref11->lpVtbl->GetMovInstructionCount(ref11);
646 ok(ret == 24, "GetMovInstructionCount failed, got %u, expected %u\n", ret, 24);
647
648 ret = ref11->lpVtbl->GetMovcInstructionCount(ref11);
649 ok(ret == 0, "GetMovcInstructionCount failed, got %u, expected %u\n", ret, 0);
650
651 /* check invalid Get*ParameterDesc cases*/
652 hr = ref11->lpVtbl->GetInputParameterDesc(ref11, 0, NULL);
653 ok(hr == E_INVALIDARG, "GetInputParameterDesc failed, got %x, expected %x\n", hr, E_INVALIDARG);
654
655 hr = ref11->lpVtbl->GetInputParameterDesc(ref11, 0xffffffff, &desc);
656 ok(hr == E_INVALIDARG, "GetInputParameterDesc failed, got %x, expected %x\n", hr, E_INVALIDARG);
657
658 hr = ref11->lpVtbl->GetOutputParameterDesc(ref11, 0, NULL);
659 ok(hr == E_INVALIDARG, "GetOutputParameterDesc failed, got %x, expected %x\n", hr, E_INVALIDARG);
660
661 hr = ref11->lpVtbl->GetOutputParameterDesc(ref11, 0xffffffff, &desc);
662 ok(hr == E_INVALIDARG, "GetOutputParameterDesc failed, got %x, expected %x\n", hr, E_INVALIDARG);
663
664 hr = ref11->lpVtbl->GetPatchConstantParameterDesc(ref11, 0, &desc);
665 ok(hr == E_INVALIDARG, "GetPatchConstantParameterDesc failed, got %x, expected %x\n", hr, E_INVALIDARG);
666
667 /* GetIn/OutputParameterDesc */
669 {
671
672 hr = ref11->lpVtbl->GetInputParameterDesc(ref11, i, &desc);
673 ok(hr == S_OK, "GetInputParameterDesc(%u) failed, got %x, expected %x\n", i, hr, S_OK);
674
675 ok(!strcmp(desc.SemanticName, pdesc->SemanticName), "GetInputParameterDesc(%u) SemanticName failed, got \"%s\", expected \"%s\"\n",
676 i, desc.SemanticName, pdesc->SemanticName);
677 ok(desc.SemanticIndex == pdesc->SemanticIndex, "GetInputParameterDesc(%u) SemanticIndex failed, got %u, expected %u\n",
678 i, desc.SemanticIndex, pdesc->SemanticIndex);
679 ok(desc.Register == pdesc->Register, "GetInputParameterDesc(%u) Register failed, got %u, expected %u\n",
680 i, desc.Register, pdesc->Register);
681 ok(desc.SystemValueType == pdesc->SystemValueType, "GetInputParameterDesc(%u) SystemValueType failed, got %x, expected %x\n",
682 i, desc.SystemValueType, pdesc->SystemValueType);
683 ok(desc.ComponentType == pdesc->ComponentType, "GetInputParameterDesc(%u) ComponentType failed, got %x, expected %x\n",
684 i, desc.ComponentType, pdesc->ComponentType);
685 ok(desc.Mask == pdesc->Mask, "GetInputParameterDesc(%u) Mask failed, got %x, expected %x\n",
686 i, desc.Mask, pdesc->Mask);
687 ok(desc.ReadWriteMask == pdesc->ReadWriteMask, "GetInputParameterDesc(%u) ReadWriteMask failed, got %x, expected %x\n",
688 i, desc.ReadWriteMask, pdesc->ReadWriteMask);
689 ok(desc.Stream == pdesc->Stream, "GetInputParameterDesc(%u) Stream failed, got %u, expected %u\n",
690 i, desc.Stream, pdesc->ReadWriteMask);
691 }
692
694 {
696
697 hr = ref11->lpVtbl->GetOutputParameterDesc(ref11, i, &desc);
698 ok(hr == S_OK, "GetOutputParameterDesc(%u) failed, got %x, expected %x\n", i, hr, S_OK);
699
700 ok(!strcmp(desc.SemanticName, pdesc->SemanticName), "GetOutputParameterDesc(%u) SemanticName failed, got \"%s\", expected \"%s\"\n",
701 i, desc.SemanticName, pdesc->SemanticName);
702 ok(desc.SemanticIndex == pdesc->SemanticIndex, "GetOutputParameterDesc(%u) SemanticIndex failed, got %u, expected %u\n",
703 i, desc.SemanticIndex, pdesc->SemanticIndex);
704 ok(desc.Register == pdesc->Register, "GetOutputParameterDesc(%u) Register failed, got %u, expected %u\n",
705 i, desc.Register, pdesc->Register);
706 ok(desc.SystemValueType == pdesc->SystemValueType, "GetOutputParameterDesc(%u) SystemValueType failed, got %x, expected %x\n",
707 i, desc.SystemValueType, pdesc->SystemValueType);
708 ok(desc.ComponentType == pdesc->ComponentType, "GetOutputParameterDesc(%u) ComponentType failed, got %x, expected %x\n",
709 i, desc.ComponentType, pdesc->ComponentType);
710 ok(desc.Mask == pdesc->Mask, "GetOutputParameterDesc(%u) Mask failed, got %x, expected %x\n",
711 i, desc.Mask, pdesc->Mask);
712 ok(desc.ReadWriteMask == pdesc->ReadWriteMask, "GetOutputParameterDesc(%u) ReadWriteMask failed, got %x, expected %x\n",
713 i, desc.ReadWriteMask, pdesc->ReadWriteMask);
714 ok(desc.Stream == pdesc->Stream, "GetOutputParameterDesc(%u) Stream failed, got %u, expected %u\n",
715 i, desc.Stream, pdesc->ReadWriteMask);
716 }
717
718 count = ref11->lpVtbl->Release(ref11);
719 ok(count == 0, "Release failed %u\n", count);
720}
721
722/*
723 * fxc.exe /E PS /Tps_5_0 /Fx
724 */
725#if 0
726float4 PS() : SV_Target3
727{
728 float4 a = float4(1.2f, 1.0f, 0.2f, 0.0f);
729 return a;
730}
731#endif
7330x43425844, 0x3e7b77e6, 0xe4e920b7, 0x9cad0533, 0x240117cc, 0x00000001, 0x0000018c, 0x00000005,
7340x00000034, 0x0000008c, 0x0000009c, 0x000000d0, 0x00000110, 0x46454452, 0x00000050, 0x00000000,
7350x00000000, 0x00000000, 0x0000001c, 0xffff0400, 0x00000100, 0x0000001c, 0x7263694d, 0x666f736f,
7360x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39322e,
7370x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x00000008, 0x00000000, 0x00000008, 0x4e47534f,
7380x0000002c, 0x00000001, 0x00000008, 0x00000020, 0x00000003, 0x00000000, 0x00000003, 0x00000003,
7390x0000000f, 0x545f5653, 0x65677261, 0xabab0074, 0x52444853, 0x00000038, 0x00000040, 0x0000000e,
7400x03000065, 0x001020f2, 0x00000003, 0x08000036, 0x001020f2, 0x00000003, 0x00004002, 0x3f99999a,
7410x3f800000, 0x3e4ccccd, 0x00000000, 0x0100003e, 0x54415453, 0x00000074, 0x00000002, 0x00000000,
7420x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000,
7430x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
7440x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
7450x00000000, 0x00000000, 0x00000000
746};
747
748/*
749 * fxc.exe /E PS /Tps_5_0 /Fx
750 */
751#if 0
752float PS() : SV_DepthLessEqual
753{
754 float a = 1.2f;
755 return a;
756}
757#endif
7590x43425844, 0xd8ead3ec, 0x61276ada, 0x70cdaa9e, 0x2cfd7f4c, 0x00000001, 0x000001c4, 0x00000005,
7600x00000034, 0x000000ac, 0x000000bc, 0x000000f8, 0x00000128, 0x46454452, 0x00000070, 0x00000000,
7610x00000000, 0x00000000, 0x0000003c, 0xffff0500, 0x00000100, 0x0000003c, 0x31314452, 0x0000003c,
7620x00000018, 0x00000020, 0x00000028, 0x00000024, 0x0000000c, 0x00000000, 0x7263694d, 0x666f736f,
7630x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39322e,
7640x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x00000008, 0x00000000, 0x00000008, 0x4e47534f,
7650x00000034, 0x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000000, 0x00000003, 0xffffffff,
7660x00000e01, 0x445f5653, 0x68747065, 0x7373654c, 0x61757145, 0xabab006c, 0x58454853, 0x00000028,
7670x00000050, 0x0000000a, 0x0100086a, 0x02000065, 0x00027001, 0x04000036, 0x00027001, 0x00004001,
7680x3f99999a, 0x0100003e, 0x54415453, 0x00000094, 0x00000002, 0x00000000, 0x00000000, 0x00000001,
7690x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
7700x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001,
7710x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
7720x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
7730x00000000,
774};
775
776/*
777 * fxc.exe /E PS /Tps_5_0 /Fx
778 */
779#if 0
780float PS() : SV_DepthGreaterEqual
781{
782 float a = 1.2f;
783 return a;
784}
785#endif
7870x43425844, 0x9f61c8df, 0x612cbb1f, 0x9e1d039e, 0xf925a074, 0x00000001, 0x000001c8, 0x00000005,
7880x00000034, 0x000000ac, 0x000000bc, 0x000000fc, 0x0000012c, 0x46454452, 0x00000070, 0x00000000,
7890x00000000, 0x00000000, 0x0000003c, 0xffff0500, 0x00000100, 0x0000003c, 0x31314452, 0x0000003c,
7900x00000018, 0x00000020, 0x00000028, 0x00000024, 0x0000000c, 0x00000000, 0x7263694d, 0x666f736f,
7910x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39322e,
7920x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x00000008, 0x00000000, 0x00000008, 0x4e47534f,
7930x00000038, 0x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000000, 0x00000003, 0xffffffff,
7940x00000e01, 0x445f5653, 0x68747065, 0x61657247, 0x45726574, 0x6c617571, 0xababab00, 0x58454853,
7950x00000028, 0x00000050, 0x0000000a, 0x0100086a, 0x02000065, 0x00026001, 0x04000036, 0x00026001,
7960x00004001, 0x3f99999a, 0x0100003e, 0x54415453, 0x00000094, 0x00000002, 0x00000000, 0x00000000,
7970x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
7980x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
7990x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
8000x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
8010x00000000, 0x00000000,
802};
803
804/*
805 * fxc.exe /E PS /Tps_5_0 /Fx
806 */
807#if 0
808float PS() : sV_DePtH
809{
810 float a = 1.2f;
811 return a;
812}
813#endif
8150x43425844, 0x32cec0e6, 0x3873ed32, 0x2e86ffd0, 0x21bb00e8, 0x00000001, 0x000001bc, 0x00000005,
8160x00000034, 0x000000ac, 0x000000bc, 0x000000f0, 0x00000120, 0x46454452, 0x00000070, 0x00000000,
8170x00000000, 0x00000000, 0x0000003c, 0xffff0500, 0x00000100, 0x0000003c, 0x31314452, 0x0000003c,
8180x00000018, 0x00000020, 0x00000028, 0x00000024, 0x0000000c, 0x00000000, 0x7263694d, 0x666f736f,
8190x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39322e,
8200x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x00000008, 0x00000000, 0x00000008, 0x4e47534f,
8210x0000002c, 0x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000000, 0x00000003, 0xffffffff,
8220x00000e01, 0x445f5673, 0x48745065, 0xababab00, 0x58454853, 0x00000028, 0x00000050, 0x0000000a,
8230x0100086a, 0x02000065, 0x0000c001, 0x04000036, 0x0000c001, 0x00004001, 0x3f99999a, 0x0100003e,
8240x54415453, 0x00000094, 0x00000002, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000,
8250x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
8260x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000,
8270x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
8280x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
829};
830
831/*
832 * fxc.exe /E PS /Tps_4_0 /Fx
833 */
834#if 0
835float PS() : SV_Depth
836{
837 float a = 1.2f;
838 return a;
839}
840#endif
8420x43425844, 0x7af34874, 0x975f09ad, 0xf6e50764, 0xdfb1255f, 0x00000001, 0x00000178, 0x00000005,
8430x00000034, 0x0000008c, 0x0000009c, 0x000000d0, 0x000000fc, 0x46454452, 0x00000050, 0x00000000,
8440x00000000, 0x00000000, 0x0000001c, 0xffff0400, 0x00000100, 0x0000001c, 0x7263694d, 0x666f736f,
8450x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39322e,
8460x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x00000008, 0x00000000, 0x00000008, 0x4e47534f,
8470x0000002c, 0x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000000, 0x00000003, 0xffffffff,
8480x00000e01, 0x445f5653, 0x68747065, 0xababab00, 0x52444853, 0x00000024, 0x00000040, 0x00000009,
8490x02000065, 0x0000c001, 0x04000036, 0x0000c001, 0x00004001, 0x3f99999a, 0x0100003e, 0x54415453,
8500x00000074, 0x00000002, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
8510x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
8520x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
8530x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
854};
855
856/*
857 * fxc.exe /E PS /Tps_4_0 /Fx
858 */
859#if 0
860bool PS() : SV_COVERAGE
861{
862 bool a = true;
863 return a;
864}
865#endif
8670x43425844, 0x40ae32a7, 0xe944bb1c, 0x1a2b1923, 0xea25962d, 0x00000001, 0x000001bc, 0x00000005,
8680x00000034, 0x000000ac, 0x000000bc, 0x000000f0, 0x00000120, 0x46454452, 0x00000070, 0x00000000,
8690x00000000, 0x00000000, 0x0000003c, 0xffff0500, 0x00000100, 0x0000003c, 0x31314452, 0x0000003c,
8700x00000018, 0x00000020, 0x00000028, 0x00000024, 0x0000000c, 0x00000000, 0x7263694d, 0x666f736f,
8710x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39322e,
8720x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x00000008, 0x00000000, 0x00000008, 0x4e47534f,
8730x0000002c, 0x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000000, 0x00000001, 0xffffffff,
8740x00000e01, 0x435f5653, 0x5245564f, 0x00454741, 0x58454853, 0x00000028, 0x00000050, 0x0000000a,
8750x0100086a, 0x02000065, 0x0000f000, 0x04000036, 0x0000f001, 0x00004001, 0xffffffff, 0x0100003e,
8760x54415453, 0x00000094, 0x00000002, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000,
8770x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
8780x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000,
8790x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
8800x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
881};
882
890};
891
893{
894 {"SV_Target", 3, 3, D3D_NAME_TARGET, D3D_REGISTER_COMPONENT_FLOAT32, 0xf, 0, 0},
895 {"SV_DepthLessEqual", 0, 0xffffffff, D3D_NAME_DEPTH_LESS_EQUAL, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
896 {"SV_DepthGreaterEqual", 0, 0xffffffff, D3D11_NAME_DEPTH_GREATER_EQUAL, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
897 {"sV_DePtH", 0, 0xffffffff, D3D_NAME_DEPTH, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
898 {"SV_Depth", 0, 0xffffffff, D3D_NAME_DEPTH, D3D_REGISTER_COMPONENT_FLOAT32, 0x1, 0xe, 0},
899 {"SV_COVERAGE", 0, 0xffffffff, D3D_NAME_COVERAGE, D3D_REGISTER_COMPONENT_UINT32, 0x1, 0xe, 0},
900};
901
903{
904 HRESULT hr;
905 ULONG count;
906 ID3D11ShaderReflection *ref11;
909 unsigned int i;
910
912 {
913 hr = pD3DReflect(test_reflection_desc_ps_output_blob[i], test_reflection_desc_ps_output_blob[i][6], &IID_ID3D11ShaderReflection, (void **)&ref11);
914 ok(hr == S_OK, "(%u): D3DReflect failed %x\n", i, hr);
915
917
918 hr = ref11->lpVtbl->GetOutputParameterDesc(ref11, 0, &desc);
919 ok(hr == S_OK, "(%u): GetOutputParameterDesc failed, got %x, expected %x\n", i, hr, S_OK);
920
921 ok(!strcmp(desc.SemanticName, pdesc->SemanticName), "(%u): GetOutputParameterDesc SemanticName failed, got \"%s\", expected \"%s\"\n",
922 i, desc.SemanticName, pdesc->SemanticName);
923 ok(desc.SemanticIndex == pdesc->SemanticIndex, "(%u): GetOutputParameterDesc SemanticIndex failed, got %u, expected %u\n",
924 i, desc.SemanticIndex, pdesc->SemanticIndex);
925 ok(desc.Register == pdesc->Register, "(%u): GetOutputParameterDesc Register failed, got %u, expected %u\n",
926 i, desc.Register, pdesc->Register);
927 ok(desc.SystemValueType == pdesc->SystemValueType, "(%u): GetOutputParameterDesc SystemValueType failed, got %x, expected %x\n",
928 i, desc.SystemValueType, pdesc->SystemValueType);
929 ok(desc.ComponentType == pdesc->ComponentType, "(%u): GetOutputParameterDesc ComponentType failed, got %x, expected %x\n",
930 i, desc.ComponentType, pdesc->ComponentType);
931 ok(desc.Mask == pdesc->Mask, "(%u): GetOutputParameterDesc Mask failed, got %x, expected %x\n",
932 i, desc.Mask, pdesc->Mask);
933 ok(desc.ReadWriteMask == pdesc->ReadWriteMask, "(%u): GetOutputParameterDesc ReadWriteMask failed, got %x, expected %x\n",
934 i, desc.ReadWriteMask, pdesc->ReadWriteMask);
935 ok(desc.Stream == pdesc->Stream, "(%u): GetOutputParameterDesc Stream failed, got %u, expected %u\n",
936 i, desc.Stream, pdesc->ReadWriteMask);
937
938 count = ref11->lpVtbl->Release(ref11);
939 ok(count == 0, "(%u): Release failed %u\n", i, count);
940 }
941}
942
943/*
944 * fxc.exe /E PS /Tps_4_0 /Fx
945 */
946#if 0
947Texture2D tex1;
948SamplerState sam
949{
950 Filter = MIN_MAG_MIP_LINEAR;
951 AddressU = Wrap;
952 AddressV = Wrap;
953};
954cbuffer c1
955{
956 float x;
957 float y[2];
958 int z;
959};
960cbuffer c2
961{
962 float t;
963};
964
965float4 PS(float2 uv : TEXCOORD0) : sv_target
966{
967 float4 q = tex1.Sample(sam, uv);
968 q.x = q.x + x;
969 q.w = q.w + y[0] + y[1] + t;
970 return q;
971}
972#endif
9740x43425844, 0xe4af0279, 0x690268fc, 0x76bf6a72, 0xe5aff43b, 0x00000001, 0x000003f4, 0x00000005,
9750x00000034, 0x000001e8, 0x0000021c, 0x00000250, 0x00000378, 0x46454452, 0x000001ac, 0x00000002,
9760x000000ac, 0x00000004, 0x0000001c, 0xffff0400, 0x00000100, 0x0000017a, 0x0000009c, 0x00000003,
9770x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x000000a0, 0x00000002,
9780x00000005, 0x00000004, 0xffffffff, 0x00000000, 0x00000001, 0x0000000c, 0x000000a5, 0x00000000,
9790x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x000000a8, 0x00000000,
9800x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x006d6173, 0x31786574,
9810x00316300, 0xab003263, 0x000000a5, 0x00000003, 0x000000dc, 0x00000030, 0x00000000, 0x00000000,
9820x000000a8, 0x00000001, 0x00000160, 0x00000010, 0x00000000, 0x00000000, 0x00000124, 0x00000000,
9830x00000004, 0x00000002, 0x00000128, 0x00000000, 0x00000138, 0x00000010, 0x00000014, 0x00000002,
9840x0000013c, 0x00000000, 0x0000014c, 0x00000024, 0x00000004, 0x00000000, 0x00000150, 0x00000000,
9850xabab0078, 0x00030000, 0x00010001, 0x00000000, 0x00000000, 0xabab0079, 0x00030000, 0x00010001,
9860x00000002, 0x00000000, 0xabab007a, 0x00020000, 0x00010001, 0x00000000, 0x00000000, 0x00000178,
9870x00000000, 0x00000004, 0x00000002, 0x00000128, 0x00000000, 0x694d0074, 0x736f7263, 0x2074666f,
9880x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69, 0x322e3920, 0x35392e39,
9890x31332e32, 0xab003131, 0x4e475349, 0x0000002c, 0x00000001, 0x00000008, 0x00000020, 0x00000000,
9900x00000000, 0x00000003, 0x00000000, 0x00000303, 0x43584554, 0x44524f4f, 0xababab00, 0x4e47534f,
9910x0000002c, 0x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000000, 0x00000003, 0x00000000,
9920x0000000f, 0x745f7673, 0x65677261, 0xabab0074, 0x52444853, 0x00000120, 0x00000040, 0x00000048,
9930x04000059, 0x00208e46, 0x00000000, 0x00000003, 0x04000059, 0x00208e46, 0x00000001, 0x00000001,
9940x0300005a, 0x00106000, 0x00000000, 0x04001858, 0x00107000, 0x00000000, 0x00005555, 0x03001062,
9950x00101032, 0x00000000, 0x03000065, 0x001020f2, 0x00000000, 0x02000068, 0x00000001, 0x09000045,
9960x001000f2, 0x00000000, 0x00101046, 0x00000000, 0x00107e46, 0x00000000, 0x00106000, 0x00000000,
9970x08000000, 0x00100082, 0x00000000, 0x0010003a, 0x00000000, 0x0020800a, 0x00000000, 0x00000001,
9980x08000000, 0x00100082, 0x00000000, 0x0010003a, 0x00000000, 0x0020800a, 0x00000000, 0x00000002,
9990x08000000, 0x00102082, 0x00000000, 0x0010003a, 0x00000000, 0x0020800a, 0x00000001, 0x00000000,
10000x08000000, 0x00102012, 0x00000000, 0x0010000a, 0x00000000, 0x0020800a, 0x00000000, 0x00000000,
10010x05000036, 0x00102062, 0x00000000, 0x00100656, 0x00000000, 0x0100003e, 0x54415453, 0x00000074,
10020x00000007, 0x00000001, 0x00000000, 0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000001,
10030x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
10040x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
10050x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1006};
1007
1009{
1010 {"sam", D3D_SIT_SAMPLER, 0, 1, 0, 0, D3D_SRV_DIMENSION_UNKNOWN, 0},
1011 {"tex1", D3D_SIT_TEXTURE, 0, 1, 12, D3D_RETURN_TYPE_FLOAT, D3D_SRV_DIMENSION_TEXTURE2D, 0xffffffff},
1012 {"c1", D3D_SIT_CBUFFER, 0, 1, 0, 0, D3D_SRV_DIMENSION_UNKNOWN, 0},
1013 {"c2", D3D_SIT_CBUFFER, 1, 1, 0, 0, D3D_SRV_DIMENSION_UNKNOWN, 0},
1014};
1015
1017{
1018 HRESULT hr;
1019 ULONG count;
1020 ID3D11ShaderReflection *ref11;
1022 const D3D11_SHADER_INPUT_BIND_DESC *pdesc;
1023 unsigned int i;
1024
1025 hr = pD3DReflect(test_reflection_bound_resources_blob, test_reflection_bound_resources_blob[6], &IID_ID3D11ShaderReflection, (void **)&ref11);
1026 ok(hr == S_OK, "D3DReflect failed %x\n", hr);
1027
1028 /* check invalid cases */
1029 hr = ref11->lpVtbl->GetResourceBindingDesc(ref11, 0, NULL);
1030 ok(hr == E_INVALIDARG, "GetResourceBindingDesc failed, got %x, expected %x\n", hr, E_INVALIDARG);
1031
1032 hr = ref11->lpVtbl->GetResourceBindingDesc(ref11, 0xffffffff, &desc);
1033 ok(hr == E_INVALIDARG, "GetResourceBindingDesc failed, got %x, expected %x\n", hr, E_INVALIDARG);
1034
1035 hr = ref11->lpVtbl->GetResourceBindingDescByName(ref11, NULL, &desc);
1036 ok(hr == E_INVALIDARG, "GetResourceBindingDescByName failed, got %x, expected %x\n", hr, E_INVALIDARG);
1037
1038 hr = ref11->lpVtbl->GetResourceBindingDescByName(ref11, "sam", NULL);
1039 ok(hr == E_INVALIDARG, "GetResourceBindingDescByName failed, got %x, expected %x\n", hr, E_INVALIDARG);
1040
1041 hr = ref11->lpVtbl->GetResourceBindingDescByName(ref11, "invalid", NULL);
1042 ok(hr == E_INVALIDARG, "GetResourceBindingDescByName failed, got %x, expected %x\n", hr, E_INVALIDARG);
1043
1044 hr = ref11->lpVtbl->GetResourceBindingDescByName(ref11, "invalid", &desc);
1045 ok(hr == E_INVALIDARG, "GetResourceBindingDescByName failed, got %x, expected %x\n", hr, E_INVALIDARG);
1046
1047 /* GetResourceBindingDesc */
1049 {
1051
1052 hr = ref11->lpVtbl->GetResourceBindingDesc(ref11, i, &desc);
1053 ok(hr == S_OK, "GetResourceBindingDesc(%u) failed, got %x, expected %x\n", i, hr, S_OK);
1054
1055 ok(!strcmp(desc.Name, pdesc->Name), "GetResourceBindingDesc(%u) Name failed, got \"%s\", expected \"%s\"\n",
1056 i, desc.Name, pdesc->Name);
1057 ok(desc.Type == pdesc->Type, "GetResourceBindingDesc(%u) Type failed, got %x, expected %x\n",
1058 i, desc.Type, pdesc->Type);
1059 ok(desc.BindPoint == pdesc->BindPoint, "GetResourceBindingDesc(%u) BindPoint failed, got %u, expected %u\n",
1060 i, desc.BindPoint, pdesc->BindPoint);
1061 ok(desc.BindCount == pdesc->BindCount, "GetResourceBindingDesc(%u) BindCount failed, got %u, expected %u\n",
1062 i, desc.BindCount, pdesc->BindCount);
1063 ok(desc.uFlags == pdesc->uFlags, "GetResourceBindingDesc(%u) uFlags failed, got %u, expected %u\n",
1064 i, desc.uFlags, pdesc->uFlags);
1065 ok(desc.ReturnType == pdesc->ReturnType, "GetResourceBindingDesc(%u) ReturnType failed, got %x, expected %x\n",
1066 i, desc.ReturnType, pdesc->ReturnType);
1067 ok(desc.Dimension == pdesc->Dimension, "GetResourceBindingDesc(%u) Dimension failed, got %x, expected %x\n",
1068 i, desc.Dimension, pdesc->Dimension);
1069 ok(desc.NumSamples == pdesc->NumSamples, "GetResourceBindingDesc(%u) NumSamples failed, got %u, expected %u\n",
1070 i, desc.NumSamples, pdesc->NumSamples);
1071 }
1072
1073 /* GetResourceBindingDescByName */
1075 {
1077
1078 hr = ref11->lpVtbl->GetResourceBindingDescByName(ref11, pdesc->Name, &desc);
1079 ok(hr == S_OK, "GetResourceBindingDescByName(%u) failed, got %x, expected %x\n", i, hr, S_OK);
1080
1081 ok(!strcmp(desc.Name, pdesc->Name), "GetResourceBindingDescByName(%u) Name failed, got \"%s\", expected \"%s\"\n",
1082 i, desc.Name, pdesc->Name);
1083 ok(desc.Type == pdesc->Type, "GetResourceBindingDescByName(%u) Type failed, got %x, expected %x\n",
1084 i, desc.Type, pdesc->Type);
1085 ok(desc.BindPoint == pdesc->BindPoint, "GetResourceBindingDescByName(%u) BindPoint failed, got %u, expected %u\n",
1086 i, desc.BindPoint, pdesc->BindPoint);
1087 ok(desc.BindCount == pdesc->BindCount, "GetResourceBindingDescByName(%u) BindCount failed, got %u, expected %u\n",
1088 i, desc.BindCount, pdesc->BindCount);
1089 ok(desc.uFlags == pdesc->uFlags, "GetResourceBindingDescByName(%u) uFlags failed, got %u, expected %u\n",
1090 i, desc.uFlags, pdesc->uFlags);
1091 ok(desc.ReturnType == pdesc->ReturnType, "GetResourceBindingDescByName(%u) ReturnType failed, got %x, expected %x\n",
1092 i, desc.ReturnType, pdesc->ReturnType);
1093 ok(desc.Dimension == pdesc->Dimension, "GetResourceBindingDescByName(%u) Dimension failed, got %x, expected %x\n",
1094 i, desc.Dimension, pdesc->Dimension);
1095 ok(desc.NumSamples == pdesc->NumSamples, "GetResourceBindingDescByName(%u) NumSamples failed, got %u, expected %u\n",
1096 i, desc.NumSamples, pdesc->NumSamples);
1097 }
1098
1099 count = ref11->lpVtbl->Release(ref11);
1100 ok(count == 0, "Release failed %u\n", count);
1101}
1102
1103/*
1104 * fxc.exe /E PS /Tps_5_0 /Fx
1105 */
1106#if 0
1107cbuffer c1
1108{
1109 float a;
1110 float b[2];
1111 int i;
1112 struct s {
1113 float a;
1114 float b;
1115 } t;
1116};
1117
1118interface iTest
1119{
1120 float4 test(float2 vec);
1121};
1122
1123class cTest : iTest
1124{
1125 bool m_on;
1126 float4 test(float2 vec);
1127};
1128
1129float4 cTest::test(float2 vec)
1130{
1131 float4 res;
1132 if(m_on)
1133 res = float4(vec.x, vec.y, vec.x+vec.y, 0);
1134 else
1135 res = 0;
1136 return res;
1137}
1138
1139iTest g_Test;
1140
1141
1142float4 PS(float2 uv : TEXCOORD0) : sv_target
1143{
1144 float4 q = g_Test.test(uv);
1145 q.x = q.x + t.a;
1146 return q;
1147}
1148#endif
11500x43425844, 0xe6470e0d, 0x0d5698bb, 0x29373c30, 0x64a5d268, 0x00000001, 0x00000590, 0x00000006,
11510x00000038, 0x00000318, 0x0000034c, 0x00000380, 0x000003d8, 0x000004f4, 0x46454452, 0x000002d8,
11520x00000002, 0x00000060, 0x00000001, 0x0000003c, 0xffff0500, 0x00000100, 0x000002a4, 0x31314452,
11530x0000003c, 0x00000018, 0x00000020, 0x00000028, 0x00000024, 0x0000000c, 0x00000001, 0x0000005c,
11540x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0xab003163,
11550x00000090, 0x00000001, 0x000000a0, 0x00000010, 0x00000000, 0x00000002, 0x0000005c, 0x00000004,
11560x00000120, 0x00000040, 0x00000000, 0x00000000, 0x69685424, 0x696f5073, 0x7265746e, 0xababab00,
11570x000000c8, 0x00000000, 0x00000001, 0x00000006, 0x000000fc, 0x00000000, 0xffffffff, 0x00000000,
11580xffffffff, 0x00000000, 0x65545f67, 0x69007473, 0x74736554, 0xababab00, 0x00000006, 0x00000001,
11590x00000000, 0x000000d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000cf, 0x00250007,
11600x00040001, 0x00000000, 0x00000000, 0x000000d8, 0x00000000, 0x00000000, 0x00000000, 0x000000cf,
11610x000001c0, 0x00000000, 0x00000004, 0x00000000, 0x000001c8, 0x00000000, 0xffffffff, 0x00000000,
11620xffffffff, 0x00000000, 0x000001ec, 0x00000010, 0x00000014, 0x00000000, 0x000001f0, 0x00000000,
11630xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0x00000214, 0x00000024, 0x00000004, 0x00000000,
11640x0000021c, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0x00000240, 0x00000030,
11650x00000008, 0x00000002, 0x00000280, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000,
11660x6c660061, 0x0074616f, 0x00030000, 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11670x00000000, 0x00000000, 0x000001c2, 0xabab0062, 0x00030000, 0x00010001, 0x00000002, 0x00000000,
11680x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000001c2, 0x6e690069, 0xabab0074, 0x00020000,
11690x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000216,
11700x00730074, 0x00030000, 0x00010001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11710x00000000, 0x000001c2, 0x000001c0, 0x00000244, 0x00000000, 0x000001ec, 0x00000244, 0x00000004,
11720x00000005, 0x00020001, 0x00020000, 0x00000268, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11730x00000242, 0x7263694d, 0x666f736f, 0x52282074, 0x4c482029, 0x53204c53, 0x65646168, 0x6f432072,
11740x6c69706d, 0x39207265, 0x2e39322e, 0x2e323539, 0x31313133, 0xababab00, 0x4e475349, 0x0000002c,
11750x00000001, 0x00000008, 0x00000020, 0x00000000, 0x00000000, 0x00000003, 0x00000000, 0x00000303,
11760x43584554, 0x44524f4f, 0xababab00, 0x4e47534f, 0x0000002c, 0x00000001, 0x00000008, 0x00000020,
11770x00000000, 0x00000000, 0x00000003, 0x00000000, 0x0000000f, 0x745f7673, 0x65677261, 0xabab0074,
11780x45434649, 0x00000050, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000040, 0x00000034,
11790x00000024, 0x00000000, 0x4e47534f, 0x00000001, 0x00000001, 0x00000040, 0x00000044, 0x00000048,
11800x00010000, 0x00000000, 0xabab0000, 0x00000000, 0x73655463, 0xabab0074, 0x58454853, 0x00000114,
11810x00000050, 0x00000045, 0x0100086a, 0x04000059, 0x00208e46, 0x00000000, 0x00000004, 0x03000091,
11820x00000000, 0x00000000, 0x05000092, 0x00000000, 0x00000000, 0x00010001, 0x00000000, 0x03001062,
11830x00101032, 0x00000000, 0x03000065, 0x001020f2, 0x00000000, 0x02000068, 0x00000002, 0x07000000,
11840x00100042, 0x00000000, 0x0010101a, 0x00000000, 0x0010100a, 0x00000000, 0x05000036, 0x00100032,
11850x00000000, 0x00101046, 0x00000000, 0x05000036, 0x00100082, 0x00000000, 0x00004001, 0x00000000,
11860x05000036, 0x00100032, 0x00000001, 0x0011d516, 0x00000000, 0x0a000001, 0x001000f2, 0x00000000,
11870x00100e46, 0x00000000, 0x04a08006, 0x0010001a, 0x00000001, 0x0010000a, 0x00000001, 0x08000000,
11880x00102012, 0x00000000, 0x0010000a, 0x00000000, 0x0020800a, 0x00000000, 0x00000003, 0x05000036,
11890x001020e2, 0x00000000, 0x00100e56, 0x00000000, 0x0100003e, 0x54415453, 0x00000094, 0x00000008,
11900x00000002, 0x00000000, 0x00000002, 0x00000002, 0x00000000, 0x00000001, 0x00000001, 0x00000000,
11910x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11920x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11930x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
11940x00000000, 0x00000000, 0x00000000, 0x00000000,
1195};
1196
1198{
1199 {"$ThisPointer", D3D_CT_INTERFACE_POINTERS, 1, 16, 0},
1200 {"c1", D3D_CT_CBUFFER, 4, 64, 0},
1201};
1202
1203static const struct {
1205 unsigned int type;
1207{
1208 {{"g_Test", 0, 1, 6, 0}, 0},
1209 {{"a", 0, 4, 0, 0}, 1},
1210 {{"b", 16, 20, 0, 0}, 2},
1211 {{"i", 36, 4, 0, 0}, 3},
1212 {{"t", 48, 8, 2, 0}, 4},
1214
1216{
1218 {D3D_SVC_SCALAR, D3D_SVT_FLOAT, 1, 1, 0, 1, 0, "float"},
1219 {D3D_SVC_SCALAR, D3D_SVT_FLOAT, 1, 1, 2, 1, 0, "float"},
1220 {D3D_SVC_SCALAR, D3D_SVT_INT, 1, 1, 0, 1, 0, "int"},
1221 {D3D_SVC_STRUCT, D3D_SVT_VOID, 1, 2, 0, 1, 0, "s"},
1222};
1223
1225{
1226 HRESULT hr;
1227 ULONG count;
1228 ID3D11ShaderReflection *ref11;
1229 ID3D11ShaderReflectionConstantBuffer *cb11, *cb11_dummy = NULL, *cb11_valid = NULL;
1230 ID3D11ShaderReflectionVariable *v11, *v11_dummy = NULL, *v11_valid = NULL;
1231 ID3D11ShaderReflectionType *t11, *t, *t2, *t11_dummy = NULL, *t11_valid = NULL;
1232 D3D11_SHADER_BUFFER_DESC cbdesc = {0};
1233 D3D11_SHADER_VARIABLE_DESC vdesc = {0};
1234 D3D11_SHADER_TYPE_DESC tdesc = {0};
1235 D3D11_SHADER_DESC sdesc = {0};
1236 const D3D11_SHADER_BUFFER_DESC *pcbdesc;
1237 const D3D11_SHADER_VARIABLE_DESC *pvdesc;
1238 const D3D11_SHADER_TYPE_DESC *ptdesc;
1239 unsigned int i;
1240 LPCSTR string;
1241
1242 hr = pD3DReflect(test_reflection_constant_buffer_blob, test_reflection_constant_buffer_blob[6], &IID_ID3D11ShaderReflection, (void **)&ref11);
1243 ok(hr == S_OK, "D3DReflect failed %x\n", hr);
1244
1245 hr = ref11->lpVtbl->GetDesc(ref11, &sdesc);
1246 ok(hr == S_OK, "GetDesc failed %x\n", hr);
1247
1248 ok(sdesc.Version == 80, "GetDesc failed, got %u, expected %u\n", sdesc.Version, 80);
1249 ok(strcmp(sdesc.Creator, (char*) shader_creator) == 0, "GetDesc failed, got \"%s\", expected \"%s\"\n", sdesc.Creator, (char*)shader_creator);
1250 ok(sdesc.Flags == 256, "GetDesc failed, got %u, expected %u\n", sdesc.Flags, 256);
1251 ok(sdesc.ConstantBuffers == 2, "GetDesc failed, got %u, expected %u\n", sdesc.ConstantBuffers, 2);
1252 ok(sdesc.BoundResources == 1, "GetDesc failed, got %u, expected %u\n", sdesc.BoundResources, 1);
1253 ok(sdesc.InputParameters == 1, "GetDesc failed, got %u, expected %u\n", sdesc.InputParameters, 1);
1254 ok(sdesc.OutputParameters == 1, "GetDesc failed, got %u, expected %u\n", sdesc.OutputParameters, 1);
1255 ok(sdesc.InstructionCount == 8, "GetDesc failed, got %u, expected %u\n", sdesc.InstructionCount, 8);
1256 ok(sdesc.TempRegisterCount == 2, "GetDesc failed, got %u, expected %u\n", sdesc.TempRegisterCount, 2);
1257 ok(sdesc.TempArrayCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.TempArrayCount, 0);
1258 ok(sdesc.DefCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.DefCount, 0);
1259 ok(sdesc.DclCount == 2, "GetDesc failed, got %u, expected %u\n", sdesc.DclCount, 2);
1260 ok(sdesc.TextureNormalInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc.TextureNormalInstructions, 0);
1261 ok(sdesc.TextureLoadInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc.TextureLoadInstructions, 0);
1262 ok(sdesc.TextureCompInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc.TextureCompInstructions, 0);
1263 ok(sdesc.TextureBiasInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc.TextureBiasInstructions, 0);
1264 ok(sdesc.TextureGradientInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc.TextureGradientInstructions, 0);
1265 ok(sdesc.FloatInstructionCount == 2, "GetDesc failed, got %u, expected %u\n", sdesc.FloatInstructionCount, 2);
1266 ok(sdesc.IntInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.IntInstructionCount, 0);
1267 ok(sdesc.UintInstructionCount == 1, "GetDesc failed, got %u, expected %u\n", sdesc.UintInstructionCount, 1);
1268 ok(sdesc.StaticFlowControlCount == 1, "GetDesc failed, got %u, expected %u\n", sdesc.StaticFlowControlCount, 1);
1269 ok(sdesc.DynamicFlowControlCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.DynamicFlowControlCount, 0);
1270 ok(sdesc.MacroInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.MacroInstructionCount, 0);
1271 ok(sdesc.ArrayInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.ArrayInstructionCount, 0);
1272 ok(sdesc.CutInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.CutInstructionCount, 0);
1273 ok(sdesc.EmitInstructionCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.EmitInstructionCount, 0);
1274 ok(sdesc.GSOutputTopology == 0, "GetDesc failed, got %x, expected %x\n", sdesc.GSOutputTopology, 0);
1275 ok(sdesc.GSMaxOutputVertexCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.GSMaxOutputVertexCount, 0);
1276 ok(sdesc.InputPrimitive == 0, "GetDesc failed, got %x, expected %x\n", sdesc.InputPrimitive, 0);
1277 ok(sdesc.PatchConstantParameters == 0, "GetDesc failed, got %u, expected %u\n", sdesc.PatchConstantParameters, 0);
1278 ok(sdesc.cGSInstanceCount == 0, "GetDesc failed, got %u, expected %u\n", sdesc.cGSInstanceCount, 0);
1279 ok(sdesc.cControlPoints == 0, "GetDesc failed, got %u, expected %u\n", sdesc.cControlPoints, 0);
1280 ok(sdesc.HSOutputPrimitive == 0, "GetDesc failed, got %x, expected %x\n", sdesc.HSOutputPrimitive, 0);
1281 ok(sdesc.HSPartitioning == 0, "GetDesc failed, got %x, expected %x\n", sdesc.HSPartitioning, 0);
1282 ok(sdesc.TessellatorDomain == 0, "GetDesc failed, got %x, expected %x\n", sdesc.TessellatorDomain, 0);
1283 ok(sdesc.cBarrierInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc.cBarrierInstructions, 0);
1284 ok(sdesc.cInterlockedInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc.cInterlockedInstructions, 0);
1285 ok(sdesc.cTextureStoreInstructions == 0, "GetDesc failed, got %u, expected %u\n", sdesc.cTextureStoreInstructions, 0);
1286
1287 /* get the dummys for comparison */
1288 cb11_dummy = ref11->lpVtbl->GetConstantBufferByIndex(ref11, 0xffffffff);
1289 ok(cb11_dummy != NULL, "GetConstantBufferByIndex failed\n");
1290
1291 v11_dummy = cb11_dummy->lpVtbl->GetVariableByIndex(cb11_dummy, 0xffffffff);
1292 ok(v11_dummy != NULL, "GetVariableByIndex failed\n");
1293
1294 t11_dummy = v11_dummy->lpVtbl->GetType(v11_dummy);
1295 ok(t11_dummy != NULL, "GetType failed\n");
1296
1297 /* get the valid variables */
1298 cb11_valid = ref11->lpVtbl->GetConstantBufferByIndex(ref11, 1);
1299 ok(cb11_valid != cb11_dummy && cb11_valid, "GetConstantBufferByIndex failed\n");
1300
1301 v11_valid = cb11_valid->lpVtbl->GetVariableByIndex(cb11_valid, 0);
1302 ok(v11_valid != v11_dummy && v11_valid, "GetVariableByIndex failed\n");
1303
1304 t11_valid = v11_valid->lpVtbl->GetType(v11_valid);
1305 ok(t11_valid != t11_dummy && t11_valid, "GetType failed\n");
1306
1307 /* reflection calls */
1308 cb11 = ref11->lpVtbl->GetConstantBufferByName(ref11, "invalid");
1309 ok(cb11_dummy == cb11, "GetConstantBufferByName failed, got %p, expected %p\n", cb11, cb11_dummy);
1310
1311 cb11 = ref11->lpVtbl->GetConstantBufferByName(ref11, NULL);
1312 ok(cb11_dummy == cb11, "GetConstantBufferByName failed, got %p, expected %p\n", cb11, cb11_dummy);
1313
1314 v11 = ref11->lpVtbl->GetVariableByName(ref11, NULL);
1315 ok(v11_dummy == v11, "GetVariableByIndex failed, got %p, expected %p\n", v11, v11_dummy);
1316
1317 v11 = ref11->lpVtbl->GetVariableByName(ref11, "invalid");
1318 ok(v11_dummy == v11, "GetVariableByName failed, got %p, expected %p\n", v11, v11_dummy);
1319
1320 v11 = ref11->lpVtbl->GetVariableByName(ref11, "a");
1321 ok(v11_valid == v11, "GetVariableByName failed, got %p, expected %p\n", v11, v11_valid);
1322
1323 /* constant buffer calls */
1324 v11 = cb11_dummy->lpVtbl->GetVariableByName(cb11_dummy, NULL);
1325 ok(v11_dummy == v11, "GetVariableByName failed, got %p, expected %p\n", v11, v11_dummy);
1326
1327 v11 = cb11_dummy->lpVtbl->GetVariableByName(cb11_dummy, "invalid");
1328 ok(v11_dummy == v11, "GetVariableByName failed, got %p, expected %p\n", v11, v11_dummy);
1329
1330 v11 = cb11_valid->lpVtbl->GetVariableByName(cb11_valid, NULL);
1331 ok(v11_dummy == v11, "GetVariableByName failed, got %p, expected %p\n", v11, v11_dummy);
1332
1333 v11 = cb11_valid->lpVtbl->GetVariableByName(cb11_valid, "invalid");
1334 ok(v11_dummy == v11, "GetVariableByName failed, got %p, expected %p\n", v11, v11_dummy);
1335
1336 v11 = cb11_valid->lpVtbl->GetVariableByName(cb11_valid, "a");
1337 ok(v11_valid == v11, "GetVariableByName failed, got %p, expected %p\n", v11, v11_valid);
1338
1339 hr = cb11_dummy->lpVtbl->GetDesc(cb11_dummy, NULL);
1340 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1341
1342 hr = cb11_dummy->lpVtbl->GetDesc(cb11_dummy, &cbdesc);
1343 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1344
1345 hr = cb11_valid->lpVtbl->GetDesc(cb11_valid, NULL);
1346 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1347
1348 /* variable calls */
1349 hr = v11_dummy->lpVtbl->GetDesc(v11_dummy, NULL);
1350 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1351
1352 hr = v11_dummy->lpVtbl->GetDesc(v11_dummy, &vdesc);
1353 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1354
1355 hr = v11_valid->lpVtbl->GetDesc(v11_valid, NULL);
1356 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1357
1358 /* type calls */
1359 hr = t11_dummy->lpVtbl->GetDesc(t11_dummy, NULL);
1360 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1361
1362 hr = t11_dummy->lpVtbl->GetDesc(t11_dummy, &tdesc);
1363 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1364
1365 hr = t11_valid->lpVtbl->GetDesc(t11_valid, NULL);
1366 ok(hr == E_FAIL, "GetDesc failed, got %x, expected %x\n", hr, E_FAIL);
1367
1368 string = t11_dummy->lpVtbl->GetMemberTypeName(t11_dummy, 0xffffffff);
1369 ok(!strcmp(string, "$Invalid"), "GetMemberTypeName failed, got \"%s\", expected \"%s\"\n", string, "$Invalid");
1370
1371 string = t11_valid->lpVtbl->GetMemberTypeName(t11_valid, 0xffffffff);
1372 ok(!string, "GetMemberTypeName failed, got \"%s\", expected NULL\n", string);
1373
1374 t11 = t11_dummy->lpVtbl->GetMemberTypeByIndex(t11_dummy, 0xffffffff);
1375 ok(t11_dummy == t11, "GetMemberTypeByIndex failed, got %p, expected %p\n", t11, t11_dummy);
1376
1377 t11 = t11_valid->lpVtbl->GetMemberTypeByIndex(t11_valid, 0xffffffff);
1378 ok(t11_dummy == t11, "GetMemberTypeByIndex failed, got %p, expected %p\n", t11, t11_dummy);
1379
1380 t11 = t11_dummy->lpVtbl->GetMemberTypeByName(t11_dummy, NULL);
1381 ok(t11_dummy == t11, "GetMemberTypeByName failed, got %p, expected %p\n", t11, t11_dummy);
1382
1383 t11 = t11_dummy->lpVtbl->GetMemberTypeByName(t11_dummy, "invalid");
1384 ok(t11_dummy == t11, "GetMemberTypeByName failed, got %p, expected %p\n", t11, t11_dummy);
1385
1386 t11 = t11_valid->lpVtbl->GetMemberTypeByName(t11_valid, NULL);
1387 ok(t11_dummy == t11, "GetMemberTypeByName failed, got %p, expected %p\n", t11, t11_dummy);
1388
1389 t11 = t11_valid->lpVtbl->GetMemberTypeByName(t11_valid, "invalid");
1390 ok(t11_dummy == t11, "GetMemberTypeByName failed, got %p, expected %p\n", t11, t11_dummy);
1391
1392 hr = t11_dummy->lpVtbl->IsEqual(t11_dummy, t11_dummy);
1393 ok(hr == E_FAIL, "IsEqual failed, got %x, expected %x\n", hr, E_FAIL);
1394
1395 hr = t11_valid->lpVtbl->IsEqual(t11_valid, t11_dummy);
1396 ok(hr == S_FALSE, "IsEqual failed, got %x, expected %x\n", hr, S_FALSE);
1397
1398 hr = t11_dummy->lpVtbl->IsEqual(t11_dummy, t11_valid);
1399 ok(hr == E_FAIL, "IsEqual failed, got %x, expected %x\n", hr, E_FAIL);
1400
1401 hr = t11_valid->lpVtbl->IsEqual(t11_valid, t11_valid);
1402 ok(hr == S_OK, "IsEqual failed, got %x, expected %x\n", hr, S_OK);
1403
1404 /* constant buffers */
1406 {
1408
1409 cb11 = ref11->lpVtbl->GetConstantBufferByIndex(ref11, i);
1410 ok(cb11_dummy != cb11, "GetConstantBufferByIndex(%u) failed\n", i);
1411
1412 hr = cb11->lpVtbl->GetDesc(cb11, &cbdesc);
1413 ok(hr == S_OK, "GetDesc(%u) failed, got %x, expected %x\n", i, hr, S_OK);
1414
1415 ok(!strcmp(cbdesc.Name, pcbdesc->Name), "GetDesc(%u) Name failed, got \"%s\", expected \"%s\"\n",
1416 i, cbdesc.Name, pcbdesc->Name);
1417 ok(cbdesc.Type == pcbdesc->Type, "GetDesc(%u) Type failed, got %x, expected %x\n",
1418 i, cbdesc.Type, pcbdesc->Type);
1419 ok(cbdesc.Variables == pcbdesc->Variables, "GetDesc(%u) Variables failed, got %u, expected %u\n",
1420 i, cbdesc.Variables, pcbdesc->Variables);
1421 ok(cbdesc.Size == pcbdesc->Size, "GetDesc(%u) Size failed, got %u, expected %u\n",
1422 i, cbdesc.Size, pcbdesc->Size);
1423 ok(cbdesc.uFlags == pcbdesc->uFlags, "GetDesc(%u) uFlags failed, got %u, expected %u\n",
1424 i, cbdesc.uFlags, pcbdesc->uFlags);
1425 }
1426
1427 /* variables */
1429 {
1431
1432 v11 = ref11->lpVtbl->GetVariableByName(ref11, pvdesc->Name);
1433 ok(v11_dummy != v11, "GetVariableByName(%u) failed\n", i);
1434
1435 hr = v11->lpVtbl->GetDesc(v11, &vdesc);
1436 ok(hr == S_OK, "GetDesc(%u) failed, got %x, expected %x\n", i, hr, S_OK);
1437
1438 ok(!strcmp(vdesc.Name, pvdesc->Name), "GetDesc(%u) Name failed, got \"%s\", expected \"%s\"\n",
1439 i, vdesc.Name, pvdesc->Name);
1440 ok(vdesc.StartOffset == pvdesc->StartOffset, "GetDesc(%u) StartOffset failed, got %u, expected %u\n",
1441 i, vdesc.StartOffset, pvdesc->StartOffset);
1442 ok(vdesc.Size == pvdesc->Size, "GetDesc(%u) Size failed, got %u, expected %u\n",
1443 i, vdesc.Size, pvdesc->Size);
1444 ok(vdesc.uFlags == pvdesc->uFlags, "GetDesc(%u) uFlags failed, got %u, expected %u\n",
1445 i, vdesc.uFlags, pvdesc->uFlags);
1446 ok(vdesc.DefaultValue == pvdesc->DefaultValue, "GetDesc(%u) DefaultValue failed\n", i);
1447
1448 /* types */
1450
1451 t11 = v11->lpVtbl->GetType(v11);
1452 ok(t11_dummy != t11, "GetType(%u) failed\n", i);
1453
1454 hr = t11->lpVtbl->GetDesc(t11, &tdesc);
1455 ok(hr == S_OK, "GetDesc(%u) failed, got %x, expected %x\n", i, hr, S_OK);
1456
1457 ok(tdesc.Class == ptdesc->Class, "GetDesc(%u) Class failed, got %x, expected %x\n",
1458 i, tdesc.Class, ptdesc->Class);
1459 ok(tdesc.Type == ptdesc->Type, "GetDesc(%u) Type failed, got %x, expected %x\n",
1460 i, tdesc.Type, ptdesc->Type);
1461 ok(tdesc.Rows == ptdesc->Rows, "GetDesc(%u) Rows failed, got %x, expected %x\n",
1462 i, tdesc.Rows, ptdesc->Rows);
1463 ok(tdesc.Columns == ptdesc->Columns, "GetDesc(%u) Columns failed, got %u, expected %u\n",
1464 i, tdesc.Columns, ptdesc->Columns);
1465 ok(tdesc.Elements == ptdesc->Elements, "GetDesc(%u) Elements failed, got %u, expected %u\n",
1466 i, tdesc.Elements, ptdesc->Elements);
1467 ok(tdesc.Offset == ptdesc->Offset, "GetDesc(%u) Offset failed, got %u, expected %u\n",
1468 i, tdesc.Offset, ptdesc->Offset);
1469 ok(!strcmp(tdesc.Name, ptdesc->Name), "GetDesc(%u) Name failed, got %s, expected %s\n",
1470 i, tdesc.Name, ptdesc->Name);
1471 }
1472
1473 /* types */
1474 v11 = ref11->lpVtbl->GetVariableByName(ref11, "t");
1475 ok(v11_dummy != v11, "GetVariableByName failed\n");
1476
1477 t11 = v11->lpVtbl->GetType(v11);
1478 ok(t11 != t11_dummy, "GetType failed\n");
1479
1480 t = t11->lpVtbl->GetMemberTypeByIndex(t11, 0);
1481 ok(t != t11_dummy, "GetMemberTypeByIndex failed\n");
1482
1483 t2 = t11->lpVtbl->GetMemberTypeByName(t11, "a");
1484 ok(t == t2, "GetMemberTypeByName failed, got %p, expected %p\n", t2, t);
1485
1486 string = t11->lpVtbl->GetMemberTypeName(t11, 0);
1487 ok(!strcmp(string, "a"), "GetMemberTypeName failed, got \"%s\", expected \"%s\"\n", string, "a");
1488
1489 t = t11->lpVtbl->GetMemberTypeByIndex(t11, 1);
1490 ok(t != t11_dummy, "GetMemberTypeByIndex failed\n");
1491
1492 t2 = t11->lpVtbl->GetMemberTypeByName(t11, "b");
1493 ok(t == t2, "GetMemberTypeByName failed, got %p, expected %p\n", t2, t);
1494
1495 string = t11->lpVtbl->GetMemberTypeName(t11, 1);
1496 ok(!strcmp(string, "b"), "GetMemberTypeName failed, got \"%s\", expected \"%s\"\n", string, "b");
1497
1498 /* float vs float (in struct) */
1499 hr = t11->lpVtbl->IsEqual(t11, t11_valid);
1500 ok(hr == S_FALSE, "IsEqual failed, got %x, expected %x\n", hr, S_FALSE);
1501
1502 hr = t11_valid->lpVtbl->IsEqual(t11_valid, t11);
1503 ok(hr == S_FALSE, "IsEqual failed, got %x, expected %x\n", hr, S_FALSE);
1504
1505 /* float vs float */
1506 t = t11->lpVtbl->GetMemberTypeByIndex(t11, 0);
1507 ok(t != t11_dummy, "GetMemberTypeByIndex failed\n");
1508
1509 t2 = t11->lpVtbl->GetMemberTypeByIndex(t11, 1);
1510 ok(t2 != t11_dummy, "GetMemberTypeByIndex failed\n");
1511
1512 hr = t->lpVtbl->IsEqual(t, t2);
1513 ok(hr == S_OK, "IsEqual failed, got %x, expected %x\n", hr, S_OK);
1514
1515 count = ref11->lpVtbl->Release(ref11);
1516 ok(count == 0, "Release failed %u\n", count);
1517}
1518
1520{
1522
1523 if (!(module = LoadLibraryA("d3dcompiler_43.dll"))) return FALSE;
1524
1525 pD3DReflect = (void*)GetProcAddress(module, "D3DReflect");
1526 return TRUE;
1527}
1528
1529START_TEST(reflection)
1530{
1531 if (!load_d3dcompiler())
1532 {
1533 win_skip("Could not load d3dcompiler_43.dll\n");
1534 return;
1535 }
1536
1537#ifndef __REACTOS__
1539#endif
1545}
#define POSITION
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define ok(value,...)
Definition: atltest.h:57
#define START_TEST(x)
Definition: atltest.h:75
static REGSAM sam
Definition: query.c:143
#define NORMAL
Definition: main.h:125
#define ARRAY_SIZE(A)
Definition: main.h:33
r l[0]
Definition: byte_order.h:168
@ D3D11_SVC_INTERFACE_POINTER
Definition: d3dcommon.idl:125
@ D3D_SVC_SCALAR
Definition: d3dcommon.idl:110
@ D3D_SVC_STRUCT
Definition: d3dcommon.idl:115
@ D3D_SVT_INT
Definition: d3dcommon.idl:146
@ D3D_SVT_VOID
Definition: d3dcommon.idl:144
@ D3D_SVT_FLOAT
Definition: d3dcommon.idl:147
@ D3D11_SVT_INTERFACE_POINTER
Definition: d3dcommon.idl:233
@ D3D_SRV_DIMENSION_TEXTURE2D
Definition: d3dcommon.idl:511
@ D3D_SRV_DIMENSION_UNKNOWN
Definition: d3dcommon.idl:507
@ D3D_NAME_POSITION
Definition: d3dcommon.idl:595
@ D3D_NAME_CLIP_DISTANCE
Definition: d3dcommon.idl:596
@ D3D_NAME_UNDEFINED
Definition: d3dcommon.idl:594
@ D3D_NAME_IS_FRONT_FACE
Definition: d3dcommon.idl:603
@ D3D_NAME_TARGET
Definition: d3dcommon.idl:611
@ D3D_NAME_PRIMITIVE_ID
Definition: d3dcommon.idl:601
@ D3D_NAME_RENDER_TARGET_ARRAY_INDEX
Definition: d3dcommon.idl:598
@ D3D_NAME_DEPTH_LESS_EQUAL
Definition: d3dcommon.idl:615
@ D3D_NAME_CULL_DISTANCE
Definition: d3dcommon.idl:597
@ D3D11_NAME_DEPTH_GREATER_EQUAL
Definition: d3dcommon.idl:636
@ D3D_NAME_DEPTH
Definition: d3dcommon.idl:612
@ D3D_NAME_INSTANCE_ID
Definition: d3dcommon.idl:602
@ D3D_NAME_COVERAGE
Definition: d3dcommon.idl:613
@ D3D_NAME_VERTEX_ID
Definition: d3dcommon.idl:600
@ D3D_RETURN_TYPE_FLOAT
Definition: d3dcommon.idl:572
@ D3D_SIT_SAMPLER
Definition: d3dcommon.idl:645
@ D3D_SIT_TEXTURE
Definition: d3dcommon.idl:644
@ D3D_SIT_CBUFFER
Definition: d3dcommon.idl:642
@ D3D_CT_CBUFFER
Definition: d3dcommon.idl:493
@ D3D_CT_INTERFACE_POINTERS
Definition: d3dcommon.idl:495
@ D3D_REGISTER_COMPONENT_FLOAT32
Definition: d3dcommon.idl:559
@ D3D_REGISTER_COMPONENT_UINT32
Definition: d3dcommon.idl:557
#define D3DERR_INVALIDCALL
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
UINT32 uint
Definition: types.h:83
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetProcAddress(x, y)
Definition: compat.h:753
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
FT_Vector * vec
Definition: ftbbox.c:448
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLdouble s
Definition: gl.h:2039
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLdouble GLdouble t
Definition: gl.h:2047
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
GLuint res
Definition: glext.h:9613
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean g
Definition: glext.h:6204
GLfloat GLfloat p
Definition: glext.h:8902
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint GLdouble w1
Definition: glext.h:8308
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
GLdouble GLdouble z
Definition: glext.h:5874
const GLfloat * m
Definition: glext.h:10848
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
@ PS
union tagCOLOR COLOR
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsrefcnt Release()
#define S_OK
Definition: intsafe.h:52
struct _SIZE * PSIZE
#define d
Definition: ke_i.h:81
#define e
Definition: ke_i.h:82
#define f
Definition: ke_i.h:83
#define a
Definition: ke_i.h:78
#define c
Definition: ke_i.h:80
#define b
Definition: ke_i.h:79
char string[160]
Definition: util.h:11
static const WCHAR desc[]
Definition: protectdata.c:36
static const D3D11_SIGNATURE_PARAMETER_DESC test_reflection_desc_ps_resultin[]
Definition: reflection.c:563
static const D3D11_SIGNATURE_PARAMETER_DESC test_reflection_desc_ps_output_result[]
Definition: reflection.c:892
static void test_reflection_references(void)
Definition: reflection.c:81
static DWORD test_reflection_bound_resources_blob[]
Definition: reflection.c:973
static const DWORD test_reflection_desc_ps_output_blob_4[]
Definition: reflection.c:841
static const D3D11_SHADER_TYPE_DESC test_reflection_constant_buffer_type_result[]
Definition: reflection.c:1215
static const D3D11_SHADER_BUFFER_DESC test_reflection_constant_buffer_cb_result[]
Definition: reflection.c:1197
static DWORD test_reflection_desc_ps_blob[]
Definition: reflection.c:489
static void test_reflection_desc_vs(void)
Definition: reflection.c:296
static const struct @1650 test_reflection_constant_buffer_variable_result[]
static void test_reflection_constant_buffer(void)
Definition: reflection.c:1224
static void **static DWORD shader_creator[]
Definition: reflection.c:46
static const D3D11_SIGNATURE_PARAMETER_DESC test_reflection_desc_ps_resultout[]
Definition: reflection.c:575
static const DWORD test_reflection_desc_ps_output_blob_1[]
Definition: reflection.c:758
static const DWORD * test_reflection_desc_ps_output_blob[]
Definition: reflection.c:883
static const DWORD test_reflection_desc_ps_output_blob_3[]
Definition: reflection.c:814
static void test_reflection_desc_ps_output(void)
Definition: reflection.c:902
static const D3D11_SHADER_INPUT_BIND_DESC test_reflection_bound_resources_result[]
Definition: reflection.c:1008
static const D3D11_SIGNATURE_PARAMETER_DESC test_reflection_desc_vs_resultout[]
Definition: reflection.c:281
static void test_reflection_bound_resources(void)
Definition: reflection.c:1016
static void test_reflection_desc_ps(void)
Definition: reflection.c:583
static const DWORD test_reflection_desc_ps_output_blob_5[]
Definition: reflection.c:866
static const DWORD test_reflection_desc_ps_output_blob_0[]
Definition: reflection.c:732
static SIZE_T
Definition: reflection.c:43
static DWORD test_reflection_desc_vs_blob[]
Definition: reflection.c:199
static const D3D11_SIGNATURE_PARAMETER_DESC test_reflection_desc_vs_resultin[]
Definition: reflection.c:262
static DWORD test_reflection_blob[]
Definition: reflection.c:63
static DWORD test_reflection_constant_buffer_blob[]
Definition: reflection.c:1149
static const DWORD test_reflection_desc_ps_output_blob_2[]
Definition: reflection.c:786
static BOOL load_d3dcompiler(void)
Definition: reflection.c:1519
int k
Definition: mpi.c:3369
unsigned int UINT
Definition: ndis.h:50
#define REFIID
Definition: guiddef.h:118
#define test
Definition: rosglue.h:37
#define win_skip
Definition: test.h:160
HRESULT hr
Definition: shlfolder.c:183
FT_Pos x
Definition: ftimage.h:76
FT_Pos y
Definition: ftimage.h:77
D3D_CBUFFER_TYPE Type
Definition: d3d11shader.h:105
UINT TextureCompInstructions
Definition: d3d11shader.h:51
D3D_TESSELLATOR_PARTITIONING HSPartitioning
Definition: d3d11shader.h:70
UINT GSMaxOutputVertexCount
Definition: d3d11shader.h:64
UINT TextureGradientInstructions
Definition: d3d11shader.h:53
UINT PatchConstantParameters
Definition: d3d11shader.h:66
const char * Creator
Definition: d3d11shader.h:38
UINT TextureBiasInstructions
Definition: d3d11shader.h:52
UINT StaticFlowControlCount
Definition: d3d11shader.h:57
D3D_PRIMITIVE InputPrimitive
Definition: d3d11shader.h:65
D3D_PRIMITIVE_TOPOLOGY GSOutputTopology
Definition: d3d11shader.h:63
D3D_TESSELLATOR_DOMAIN TessellatorDomain
Definition: d3d11shader.h:71
UINT cInterlockedInstructions
Definition: d3d11shader.h:73
UINT TextureLoadInstructions
Definition: d3d11shader.h:50
UINT DynamicFlowControlCount
Definition: d3d11shader.h:58
D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive
Definition: d3d11shader.h:69
UINT cTextureStoreInstructions
Definition: d3d11shader.h:74
UINT TextureNormalInstructions
Definition: d3d11shader.h:49
UINT MacroInstructionCount
Definition: d3d11shader.h:59
UINT FloatInstructionCount
Definition: d3d11shader.h:54
UINT ArrayInstructionCount
Definition: d3d11shader.h:60
D3D_SRV_DIMENSION Dimension
Definition: d3d11shader.h:119
D3D_SHADER_INPUT_TYPE Type
Definition: d3d11shader.h:114
D3D_RESOURCE_RETURN_TYPE ReturnType
Definition: d3d11shader.h:118
D3D_SHADER_VARIABLE_CLASS Class
Definition: d3d11shader.h:92
D3D_SHADER_VARIABLE_TYPE Type
Definition: d3d11shader.h:93
D3D_REGISTER_COMPONENT_TYPE ComponentType
Definition: d3d11shader.h:129
uint32_t ULONG
Definition: typedefs.h:59
int ret
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:2357
#define E_NOINTERFACE
Definition: winerror.h:2364
const char * LPCSTR
Definition: xmlstorage.h:183