ReactOS  0.4.15-dev-2704-gd5265b0
asm.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008 Stefan Dösinger
3  * Copyright (C) 2009 Matteo Bruni
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19 #define COBJMACROS
20 #define CONST_VTABLE
21 #include "wine/test.h"
22 
23 #include <d3dx9.h>
24 
25 #include "resources.h"
26 
27 static char temp_path[MAX_PATH];
28 
29 static BOOL create_file(const char *filename, const char *data, const unsigned int size, char *out_path)
30 {
31  DWORD written;
32  HANDLE hfile;
33  char path[MAX_PATH];
34 
35  if (!*temp_path)
37 
41  if (hfile == INVALID_HANDLE_VALUE)
42  return FALSE;
43 
44  if (WriteFile(hfile, data, size, &written, NULL))
45  {
46  CloseHandle(hfile);
47 
48  if (out_path)
49  strcpy(out_path, path);
50  return TRUE;
51  }
52 
53  CloseHandle(hfile);
54  return FALSE;
55 }
56 
57 static void delete_file(const char *filename)
58 {
59  char path[MAX_PATH];
60 
64 }
65 
66 static BOOL create_directory(const char *name)
67 {
68  char path[MAX_PATH];
69 
71  strcat(path, name);
72  return CreateDirectoryA(path, NULL);
73 }
74 
75 static void delete_directory(const char *name)
76 {
77  char path[MAX_PATH];
78 
80  strcat(path, name);
82 }
83 
84 static HRESULT WINAPI testD3DXInclude_open(ID3DXInclude *iface, D3DXINCLUDE_TYPE include_type,
85  const char *filename, const void *parent_data, const void **data, UINT *bytes)
86 {
87  char *buffer;
88  static const char shader[] =
89  "#include \"incl.vsh\"\n"
90  "mov REGISTER, v0\n";
91  static const char include[] = "#define REGISTER r0\nvs.1.1\n";
92  static const char include2[] = "#include \"incl3.vsh\"\n";
93  static const char include3[] = "vs.1.1\n";
94 
95  trace("filename %s.\n", filename);
96  trace("parent_data %p: %s.\n", parent_data, parent_data ? (char *)parent_data : "(null)");
97 
98  if (!strcmp(filename, "shader.vsh"))
99  {
100  buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(shader));
101  memcpy(buffer, shader, sizeof(shader));
102  *bytes = sizeof(shader);
103  }
104  else if (!strcmp(filename, "incl.vsh"))
105  {
106  buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(include));
107  memcpy(buffer, include, sizeof(include));
108  *bytes = sizeof(include);
109  /* This is included from the first D3DXAssembleShader with non-null ID3DXInclude test
110  * (parent_data == NULL) and from shader.vsh / shader[] (with matching parent_data).
111  * Allow both cases. */
112  ok(parent_data == NULL || !strncmp(shader, parent_data, strlen(shader)), "wrong parent_data value\n");
113  }
114  else if (!strcmp(filename, "incl2.vsh"))
115  {
116  buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(include2));
117  memcpy(buffer, include2, sizeof(include2));
118  *bytes = sizeof(include2);
119  }
120  else if (!strcmp(filename, "incl3.vsh"))
121  {
122  buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(include3));
123  memcpy(buffer, include3, sizeof(include3));
124  *bytes = sizeof(include3);
125  /* Also check for the correct parent_data content */
126  ok(parent_data != NULL && !strncmp(include2, parent_data, strlen(include2)), "wrong parent_data value\n");
127  }
128  else if (!strcmp(filename, "include/incl3.vsh"))
129  {
130  buffer = HeapAlloc(GetProcessHeap(), 0, sizeof(include));
131  memcpy(buffer, include, sizeof(include));
132  *bytes = sizeof(include);
133  ok(!parent_data, "wrong parent_data value\n");
134  }
135  else
136  {
137  ok(0, "Unexpected #include for file %s.\n", filename);
138  return D3DERR_INVALIDCALL;
139  }
140  *data = buffer;
141  return S_OK;
142 }
143 
144 static HRESULT WINAPI testD3DXInclude_close(ID3DXInclude *iface, const void *data)
145 {
146  HeapFree(GetProcessHeap(), 0, (void *)data);
147  return S_OK;
148 }
149 
150 static const struct ID3DXIncludeVtbl D3DXInclude_Vtbl = {
153 };
154 
156  ID3DXInclude ID3DXInclude_iface;
157 };
158 
159 static void assembleshader_test(void)
160 {
161  static const char test1[] =
162  "vs.1.1\n"
163  "mov DEF2, v0\n";
164  static const char testincl[] =
165  "#define REGISTER r0\n"
166  "vs.1.1\n";
167  static const char testshader[] =
168  "#include \"incl.vsh\"\n"
169  "mov REGISTER, v0\n";
170  static const char testshader2[] =
171  "#include \"incl2.vsh\"\n"
172  "mov REGISTER, v0\n";
173  static const char testshader3[] =
174  "#include \"include/incl3.vsh\"\n"
175  "mov REGISTER, v0\n";
176  static const char testincl3[] =
177  "#include \"incl4.vsh\"\n";
178  static const char testincl4_ok[] =
179  "#define REGISTER r0\n"
180  "vs.1.1\n";
181  static const char testincl4_wrong[] =
182  "#error \"wrong include\"\n";
183  HRESULT hr;
185  static const D3DXMACRO defines[] = {
186  {
187  "DEF1", "10 + 15"
188  },
189  {
190  "DEF2", "r0"
191  },
192  {
193  NULL, NULL
194  }
195  };
196  struct D3DXIncludeImpl include;
197  char shader_vsh_path[MAX_PATH], shader3_vsh_path[MAX_PATH];
198 
199  /* pDefines test */
200  shader = NULL;
201  messages = NULL;
204  &shader, &messages);
205  ok(hr == D3D_OK, "pDefines test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
206  if(messages) {
207  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
209  }
211 
212  /* NULL messages test */
213  shader = NULL;
216  &shader, NULL);
217  ok(hr == D3D_OK, "NULL messages test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
219 
220  /* NULL shader test */
221  messages = NULL;
224  NULL, &messages);
225  ok(hr == D3D_OK, "NULL shader test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
226  if(messages) {
227  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
229  }
230 
231  /* pInclude test */
232  shader = NULL;
233  messages = NULL;
234  include.ID3DXInclude_iface.lpVtbl = &D3DXInclude_Vtbl;
235  hr = D3DXAssembleShader(testshader, strlen(testshader), NULL, &include.ID3DXInclude_iface,
237  ok(hr == D3D_OK, "pInclude test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
238  if(messages) {
239  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
241  }
243 
244  /* "unexpected #include file from memory" test */
245  shader = NULL;
246  messages = NULL;
247  hr = D3DXAssembleShader(testshader, strlen(testshader),
249  &shader, &messages);
250  ok(hr == D3DXERR_INVALIDDATA, "D3DXAssembleShader test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
251  if(messages) {
252  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
254  }
256 
257  /* recursive #include test */
258  shader = NULL;
259  messages = NULL;
260  hr = D3DXAssembleShader(testshader2, strlen(testshader2), NULL, &include.ID3DXInclude_iface,
262  ok(hr == D3D_OK, "D3DXAssembleShader test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
263  if(messages) {
264  trace("recursive D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
266  }
268 
269  /* #include with a path. */
270  shader = NULL;
271  messages = NULL;
272  hr = D3DXAssembleShader(testshader3, strlen(testshader3), NULL, &include.ID3DXInclude_iface,
274  ok(hr == D3D_OK, "D3DXAssembleShader test failed with error 0x%x - %d\n", hr, hr & 0x0000ffff);
275  if (messages)
276  {
277  trace("Path search D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
279  }
280  if (shader)
282 
283  if (create_file("shader.vsh", testshader, sizeof(testshader) - 1, shader_vsh_path))
284  {
285  create_file("incl.vsh", testincl, sizeof(testincl) - 1, NULL);
286 
287  /* D3DXAssembleShaderFromFile + #include test */
288  shader = NULL;
289  messages = NULL;
290  hr = D3DXAssembleShaderFromFileA(shader_vsh_path,
292  &shader, &messages);
293  ok(hr == D3D_OK, "D3DXAssembleShaderFromFile test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
294  if(messages) {
295  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
297  }
299 
300  /* D3DXAssembleShaderFromFile + pInclude test */
301  shader = NULL;
302  messages = NULL;
303  hr = D3DXAssembleShaderFromFileA("shader.vsh", NULL, &include.ID3DXInclude_iface,
305  ok(hr == D3D_OK, "D3DXAssembleShaderFromFile + pInclude test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
306  if(messages) {
307  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
309  }
311 
312  create_file("shader3.vsh", testshader3, sizeof(testshader3) - 1, shader3_vsh_path);
313  create_file("incl4.vsh", testincl4_wrong, sizeof(testincl4_wrong) - 1, NULL);
314  if (create_directory("include"))
315  {
316  create_file("include\\incl3.vsh", testincl3, sizeof(testincl3) - 1, NULL);
317  create_file("include\\incl4.vsh", testincl4_ok, sizeof(testincl4_ok) - 1, NULL);
318 
319  /* path search #include test */
320  shader = NULL;
321  messages = NULL;
322  hr = D3DXAssembleShaderFromFileA(shader3_vsh_path, NULL, NULL,
324  &shader, &messages);
325  ok(hr == D3D_OK, "D3DXAssembleShaderFromFile path search test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
326  if(messages) {
327  trace("D3DXAssembleShaderFromFile path search messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
329  }
331  } else skip("Couldn't create \"include\" directory\n");
332 
333  delete_file("shader.vsh");
334  delete_file("incl.vsh");
335  delete_file("shader3.vsh");
336  delete_file("incl4.vsh");
337  delete_file("include\\incl3.vsh");
338  delete_file("include\\incl4.vsh");
339  delete_directory("include");
340 
341  /* The main shader is also to be loaded through the ID3DXInclude object. */
342  shader = NULL;
343  messages = NULL;
344  hr = D3DXAssembleShaderFromFileA("shader.vsh", NULL, &include.ID3DXInclude_iface,
346  ok(hr == D3D_OK, "D3DXAssembleShaderFromFile + pInclude main shader test failed with error 0x%x - %d\n",
347  hr, hr & 0x0000ffff);
348  if (messages)
349  {
350  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
352  }
353  if (shader)
355 
356  shader = NULL;
357  messages = NULL;
358  hr = D3DXAssembleShaderFromFileW(L"shader.vsh", NULL, &include.ID3DXInclude_iface,
360  ok(hr == D3D_OK, "D3DXAssembleShaderFromFile + pInclude main shader test failed with error 0x%x - %d\n",
361  hr, hr & 0x0000ffff);
362  if (messages)
363  {
364  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
366  }
367  if (shader)
369  } else skip("Couldn't create \"shader.vsh\"\n");
370 
371  /* NULL shader tests */
372  shader = NULL;
373  messages = NULL;
376  &shader, &messages);
377  ok(hr == D3DXERR_INVALIDDATA, "NULL shader test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
378  if(messages) {
379  trace("D3DXAssembleShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
381  }
383 
384  shader = NULL;
385  messages = NULL;
386  hr = D3DXAssembleShaderFromFileA("nonexistent.vsh",
388  &shader, &messages);
389  ok(hr == D3DXERR_INVALIDDATA || hr == E_FAIL, /* I get this on WinXP */
390  "D3DXAssembleShaderFromFile nonexistent file test failed with error 0x%x - %d\n",
391  hr, hr & 0x0000FFFF);
392  if(messages) {
393  trace("D3DXAssembleShaderFromFile messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
395  }
397 
398  /* D3DXAssembleShaderFromResource test */
399  shader = NULL;
400  messages = NULL;
403  &shader, &messages);
404  ok(hr == D3D_OK, "D3DXAssembleShaderFromResource test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
405  if(messages) {
406  trace("D3DXAssembleShaderFromResource messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
408  }
410 
411  /* D3DXAssembleShaderFromResource with missing shader resource test */
412  shader = NULL;
413  messages = NULL;
414  hr = D3DXAssembleShaderFromResourceA(NULL, "notexisting",
416  &shader, &messages);
417  ok(hr == D3DXERR_INVALIDDATA, "D3DXAssembleShaderFromResource NULL shader test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
418  if(messages) {
419  trace("D3DXAssembleShaderFromResource messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
421  }
423 }
424 
425 static void d3dxpreprocess_test(void)
426 {
427  static const char testincl[] =
428  "#define REGISTER r0\n"
429  "vs.1.1\n";
430  static const char testshader[] =
431  "#include \"incl.vsh\"\n"
432  "mov REGISTER, v0\n";
433  static const char testshader3[] =
434  "#include \"include/incl3.vsh\"\n"
435  "mov REGISTER, v0\n";
436  static const char testincl3[] =
437  "#include \"incl4.vsh\"\n";
438  static const char testincl4_ok[] =
439  "#define REGISTER r0\n"
440  "vs.1.1\n";
441  static const char testincl4_wrong[] =
442  "#error \"wrong include\"\n";
443  HRESULT hr;
445  char shader_vsh_path[MAX_PATH], shader3_vsh_path[MAX_PATH];
446  static struct D3DXIncludeImpl include = {{&D3DXInclude_Vtbl}};
447 
448  if (create_file("shader.vsh", testshader, sizeof(testshader) - 1, shader_vsh_path))
449  {
450  create_file("incl.vsh", testincl, sizeof(testincl) - 1, NULL);
451  create_file("shader3.vsh", testshader3, sizeof(testshader3) - 1, shader3_vsh_path);
452  create_file("incl4.vsh", testincl4_wrong, sizeof(testincl4_wrong) - 1, NULL);
453  if (create_directory("include"))
454  {
455  create_file("include\\incl3.vsh", testincl3, sizeof(testincl3) - 1, NULL);
456  create_file("include\\incl4.vsh", testincl4_ok, sizeof(testincl4_ok) - 1, NULL);
457 
458  /* path search #include test */
459  shader = NULL;
460  messages = NULL;
461  hr = D3DXPreprocessShaderFromFileA(shader3_vsh_path, NULL, NULL,
462  &shader, &messages);
463  ok(hr == D3D_OK, "D3DXPreprocessShaderFromFile path search test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
464  if(messages) {
465  trace("D3DXPreprocessShaderFromFile path search messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
467  }
469  } else skip("Couldn't create \"include\" directory\n");
470 
471  /* D3DXPreprocessShaderFromFile + #include test */
472  shader = NULL;
473  messages = NULL;
474  hr = D3DXPreprocessShaderFromFileA(shader_vsh_path,
475  NULL, NULL,
476  &shader, &messages);
477  ok(hr == D3D_OK, "D3DXPreprocessShaderFromFile test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
478  if(messages) {
479  trace("D3DXPreprocessShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
481  }
483 
484  /* D3DXPreprocessShaderFromFile + pInclude test */
485  shader = NULL;
486  messages = NULL;
487  hr = D3DXPreprocessShaderFromFileA("shader.vsh", NULL, &include.ID3DXInclude_iface,
488  &shader, &messages);
489  ok(hr == D3D_OK, "D3DXPreprocessShaderFromFile + pInclude test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
490  if(messages) {
491  trace("D3DXPreprocessShader messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
493  }
495 
496  delete_file("shader.vsh");
497  delete_file("incl.vsh");
498  delete_file("shader3.vsh");
499  delete_file("incl4.vsh");
500  delete_file("include\\incl3.vsh");
501  delete_file("include\\incl4.vsh");
502  delete_directory("include");
503 
504  /* The main shader is also to be loaded through the ID3DXInclude object. */
505  shader = NULL;
506  messages = NULL;
507  hr = D3DXPreprocessShaderFromFileA("shader.vsh", NULL, &include.ID3DXInclude_iface,
508  &shader, &messages);
509  ok(hr == D3D_OK, "D3DXPreprocessShaderFromFile + pInclude main shader test failed with error 0x%x - %d\n",
510  hr, hr & 0x0000ffff);
511  if (messages)
512  {
513  trace("D3DXPreprocessShaderFromFile messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
515  }
516  if (shader)
518 
519  shader = NULL;
520  messages = NULL;
521  hr = D3DXPreprocessShaderFromFileW(L"shader.vsh", NULL, &include.ID3DXInclude_iface,
522  &shader, &messages);
523  ok(hr == D3D_OK, "D3DXPreprocessShaderFromFile + pInclude main shader test failed with error 0x%x - %d\n",
524  hr, hr & 0x0000ffff);
525  if (messages)
526  {
527  trace("D3DXPreprocessShaderFromFile messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
529  }
530  if (shader)
532  } else skip("Couldn't create \"shader.vsh\"\n");
533 
534  /* NULL shader tests */
535  shader = NULL;
536  messages = NULL;
537  hr = D3DXPreprocessShaderFromFileA("nonexistent.vsh",
538  NULL, NULL,
539  &shader, &messages);
540  ok(hr == D3DXERR_INVALIDDATA || hr == E_FAIL, /* I get this on WinXP */
541  "D3DXPreprocessShaderFromFile nonexistent file test failed with error 0x%x - %d\n",
542  hr, hr & 0x0000FFFF);
543  if(messages) {
544  trace("D3DXPreprocessShaderFromFile messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
546  }
548 
549  /* D3DXPreprocessShaderFromResource test */
550  shader = NULL;
551  messages = NULL;
553  NULL, NULL,
554  &shader, &messages);
555  ok(hr == D3D_OK, "D3DXPreprocessShaderFromResource test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
556  if(messages) {
557  trace("D3DXPreprocessShaderFromResource messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
559  }
561 
562  /* D3DXPreprocessShaderFromResource with missing shader resource test */
563  shader = NULL;
564  messages = NULL;
565  hr = D3DXPreprocessShaderFromResourceA(NULL, "notexisting",
566  NULL, NULL,
567  &shader, &messages);
568  ok(hr == D3DXERR_INVALIDDATA, "D3DXPreprocessShaderFromResource NULL shader test failed with error 0x%x - %d\n", hr, hr & 0x0000FFFF);
569  if(messages) {
570  trace("D3DXPreprocessShaderFromResource messages:\n%s", (char *)ID3DXBuffer_GetBufferPointer(messages));
572  }
574 }
575 
577 {
579 
581 }
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
#define CloseHandle
Definition: compat.h:598
HRESULT hr
Definition: shlfolder.c:183
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define TRUE
Definition: types.h:120
#define D3DERR_INVALIDCALL
static void assembleshader_test(void)
Definition: asm.c:159
#define INVALID_HANDLE_VALUE
Definition: compat.h:590
static void d3dxpreprocess_test(void)
Definition: asm.c:425
GLuint buffer
Definition: glext.h:5915
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581
static HRESULT WINAPI testD3DXInclude_open(ID3DXInclude *iface, D3DXINCLUDE_TYPE include_type, const char *filename, const void *parent_data, const void **data, UINT *bytes)
Definition: asm.c:84
const char * filename
Definition: ioapi.h:135
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude UINT ID3DBlob ** shader
Definition: asm.c:30
#define E_FAIL
Definition: ddrawi.h:102
static BOOL create_file(const char *filename, const char *data, const unsigned int size, char *out_path)
Definition: asm.c:29
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
ID3DXInclude ID3DXInclude_iface
Definition: asm.c:156
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GENERIC_WRITE
Definition: nt_native.h:90
HRESULT WINAPI D3DXAssembleShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:344
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
Definition: dir.c:37
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
Definition: delete.c:24
struct ID3DXBuffer ID3DXBuffer
Definition: d3dx8core.h:51
#define D3DXSHADER_SKIPVALIDATION
Definition: d3dx9shader.h:26
HRESULT WINAPI D3DXPreprocessShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:687
static const struct ID3DXIncludeVtbl D3DXInclude_Vtbl
Definition: asm.c:150
GLuint shader
Definition: glext.h:6030
GLsizeiptr size
Definition: glext.h:5919
#define GetProcessHeap()
Definition: compat.h:595
#define trace
Definition: atltest.h:70
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude * include
Definition: asm.c:30
#define IDB_ASMSHADER
Definition: resources.h:26
LONG HRESULT
Definition: typedefs.h:79
enum _D3DXINCLUDE_TYPE D3DXINCLUDE_TYPE
void test1()
Definition: ehthrow.cxx:277
static BOOL create_directory(const char *name)
Definition: asm.c:66
#define MAX_PATH
Definition: compat.h:34
#define WINAPI
Definition: msvc.h:6
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
static void delete_file(const char *filename)
Definition: asm.c:57
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:137
static const WCHAR L[]
Definition: oid.c:1250
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static char temp_path[MAX_PATH]
Definition: asm.c:27
#define S_OK
Definition: intsafe.h:51
#define CREATE_ALWAYS
Definition: disk.h:72
#define D3D_OK
Definition: d3d.h:106
START_TEST(asm)
Definition: asm.c:1735
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
Definition: path.c:2053
#define ID3DXBuffer_Release(p)
Definition: d3dx9core.h:83
HRESULT WINAPI D3DXPreprocessShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:643
HRESULT WINAPI D3DXAssembleShaderFromFileA(const char *filename, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:321
#define ok(value,...)
Definition: atltest.h:57
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
Definition: dir.c:714
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
#define skip(...)
Definition: atltest.h:64
Definition: name.c:38
static SIZE_T const char const D3D_SHADER_MACRO * defines
Definition: asm.c:30
static void delete_directory(const char *name)
Definition: asm.c:75
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
HRESULT WINAPI D3DXAssembleShader(const char *data, UINT data_len, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:200
#define CreateFileA(a, b, c, d, e, f, g)
Definition: compat.h:599
static HRESULT WINAPI testD3DXInclude_close(ID3DXInclude *iface, const void *data)
Definition: asm.c:144
HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:385
HRESULT WINAPI D3DXPreprocessShaderFromFileA(const char *filename, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:620
#define HeapFree(x, y, z)
Definition: compat.h:594
#define ID3DXBuffer_GetBufferPointer(p)
Definition: d3dx9core.h:85