98 static const char shader[] =
99 "#include \"incl.vsh\"\n"
100 "mov REGISTER, v0\n";
101 static const char include[] =
"#define REGISTER r0\nvs.1.1\n";
102 static const char include2[] =
"#include \"incl3.vsh\"\n";
103 static const char include3[] =
"vs.1.1\n";
109 trace(
"parent_data %p.\n", parent_data);
142 ok(parent_data !=
NULL && !
strncmp(include2, parent_data,
strlen(include2)),
"wrong parent_data value.\n");
150 ok(!parent_data,
"wrong parent_data value.\n");
154 ok(0,
"Unexpected #include for file %s.\n",
filename);
175 static const char test1[] =
178 static const char testincl[] =
179 "#define REGISTER r0\n"
181 static const char testshader[] =
182 "#include \"incl.vsh\"\n"
183 "mov REGISTER, v0\n";
184 static const char testshader2[] =
185 "#include \"incl2.vsh\"\n"
186 "mov REGISTER, v0\n";
187 static const char testshader3[] =
188 "#include \"include/incl3.vsh\"\n"
189 "mov REGISTER, v0\n";
190 static const char testincl3[] =
191 "#include \"incl4.vsh\"\n";
192 static const char testincl4_ok[] =
193 "#define REGISTER r0\n"
195 static const char testincl4_wrong[] =
196 "#error \"wrong include\"\n";
247 for (
i = 0;
i < 2; ++
i)
309 if (
create_file(
"shader.vsh", testshader,
sizeof(testshader) - 1, shader_vsh_path))
338 create_file(
"shader3.vsh", testshader3,
sizeof(testshader3) - 1, shader3_vsh_path);
339 create_file(
"incl4.vsh", testincl4_wrong,
sizeof(testincl4_wrong) - 1,
NULL);
342 create_file(
"include\\incl3.vsh", testincl3,
sizeof(testincl3) - 1,
NULL);
343 create_file(
"include\\incl4.vsh", testincl4_ok,
sizeof(testincl4_ok) - 1,
NULL);
357 }
else skip(
"Couldn't create \"include\" directory\n");
393 }
else skip(
"Couldn't create \"shader.vsh\"\n");
414 "Unexpected hr %#lx.\n",
hr);
450 static const char testincl[] =
451 "#define REGISTER r0\n"
453 static const char testshader[] =
454 "#include \"incl.vsh\"\n"
455 "mov REGISTER, v0\n";
456 static const char testshader3[] =
457 "#include \"include/incl3.vsh\"\n"
458 "mov REGISTER, v0\n";
459 static const char testincl3[] =
460 "#include \"incl4.vsh\"\n";
461 static const char testincl4_ok[] =
462 "#define REGISTER r0\n"
464 static const char testincl4_wrong[] =
465 "#error \"wrong include\"\n";
471 if (
create_file(
"shader.vsh", testshader,
sizeof(testshader) - 1, shader_vsh_path))
474 create_file(
"shader3.vsh", testshader3,
sizeof(testshader3) - 1, shader3_vsh_path);
475 create_file(
"incl4.vsh", testincl4_wrong,
sizeof(testincl4_wrong) - 1,
NULL);
478 create_file(
"include\\incl3.vsh", testincl3,
sizeof(testincl3) - 1,
NULL);
479 create_file(
"include\\incl4.vsh", testincl4_ok,
sizeof(testincl4_ok) - 1,
NULL);
492 }
else skip(
"Couldn't create \"include\" directory\n");
553 }
else skip(
"Couldn't create \"shader.vsh\"\n");
562 "Unexpected hr %#lx.\n",
hr);
static unsigned char bytes[4]
#define D3DERR_INVALIDCALL
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude * include
#define D3DXERR_INVALIDDATA
static void assembleshader_test(void)
static SIZE_T const char const D3D_SHADER_MACRO * defines
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude UINT ID3DBlob ** shader
struct ID3DXBuffer ID3DXBuffer
static void d3dxpreprocess_test(void)
static BOOL create_directory(const char *name)
static const struct ID3DXIncludeVtbl test_include_vtbl
static char temp_path[MAX_PATH]
static void delete_directory(const char *name)
static struct test_include * impl_from_ID3DXInclude(ID3DXInclude *iface)
static HRESULT WINAPI testD3DXInclude_close(ID3DXInclude *iface, const void *data)
static HRESULT WINAPI testD3DXInclude_open(ID3DXInclude *iface, D3DXINCLUDE_TYPE include_type, const char *filename, const void *parent_data, const void **data, UINT *bytes)
HRESULT WINAPI D3DXAssembleShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
HRESULT WINAPI D3DXPreprocessShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
HRESULT WINAPI D3DXPreprocessShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
HRESULT WINAPI D3DXPreprocessShaderFromFileA(const char *filename, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
HRESULT WINAPI D3DXAssembleShader(const char *data, UINT data_len, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
HRESULT WINAPI D3DXAssembleShaderFromFileA(const char *filename, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module, const char *resource, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define FILE_ATTRIBUTE_NORMAL
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI WriteFile(_In_ HANDLE hFile, _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
#define ID3DXBuffer_GetBufferPointer(p)
#define ID3DXBuffer_Release(p)
#define D3DXSHADER_SKIPVALIDATION
enum _D3DXINCLUDE_TYPE D3DXINCLUDE_TYPE
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
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
#define todo_wine_if(is_todo)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl void winetest_pop_context(void)
void __cdecl void __cdecl void __cdecl void __cdecl void __cdecl winetest_push_context(const char *fmt,...) __WINE_PRINTF_ATTR(1
#define memcpy(s1, s2, n)
#define create_file(name, size)
#define MAKEINTRESOURCEA(i)
ID3DXInclude ID3DXInclude_iface
#define CONTAINING_RECORD(address, type, field)