1
0
Fork 0
mirror of synced 2025-03-07 03:53:26 +01:00

d3dcompiler/tests: Load D3DAssemble via GetProcAddress.

This commit is contained in:
Stefan Dösinger 2023-04-19 15:06:49 +03:00 committed by Alexandre Julliard
parent 6d41756ce1
commit 3d6569a8b4
2 changed files with 22 additions and 10 deletions

View file

@ -27,7 +27,7 @@
perhaps with a different name? */
#define D3DXERR_INVALIDDATA 0x88760b59
HRESULT WINAPI D3DAssemble(const void *data, SIZE_T datasize, const char *filename,
static HRESULT (WINAPI *pD3DAssemble)(const void *data, SIZE_T datasize, const char *filename,
const D3D_SHADER_MACRO *defines, ID3DInclude *include, UINT flags,
ID3DBlob **shader, ID3DBlob **error_messages);
@ -57,7 +57,7 @@ static void exec_tests(const char *name, struct shader_test tests[], unsigned in
for(i = 0; i < count; i++) {
/* D3DAssemble sets messages to 0 if there aren't error messages */
messages = NULL;
hr = D3DAssemble(tests[i].text, strlen(tests[i].text), NULL, NULL,
hr = pD3DAssemble(tests[i].text, strlen(tests[i].text), NULL, NULL,
NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, &messages);
ok(hr == S_OK, "Test %s, shader %u: D3DAssemble failed with error %#lx - %ld.\n", name, i, hr, hr & 0xffff);
if(messages) {
@ -1431,7 +1431,7 @@ static void failure_test(void) {
{
shader = NULL;
messages = NULL;
hr = D3DAssemble(tests[i], strlen(tests[i]), NULL, NULL, NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, &messages);
hr = pD3DAssemble(tests[i], strlen(tests[i]), NULL, NULL, NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, &messages);
ok(hr == D3DXERR_INVALIDDATA, "Test %u: Got unexpected hr %#lx.\n", i, hr);
if (messages)
{
@ -1556,7 +1556,7 @@ static void assembleshader_test(void) {
/* defines test */
shader = NULL;
messages = NULL;
hr = D3DAssemble(test1, strlen(test1), NULL, defines, NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, &messages);
hr = pD3DAssemble(test1, strlen(test1), NULL, defines, NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, &messages);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
if (messages)
{
@ -1567,14 +1567,14 @@ static void assembleshader_test(void) {
/* NULL messages test */
shader = NULL;
hr = D3DAssemble(test1, strlen(test1), NULL, defines, NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, NULL);
hr = pD3DAssemble(test1, strlen(test1), NULL, defines, NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, NULL);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
if (shader)
ID3D10Blob_Release(shader);
/* NULL shader test */
messages = NULL;
hr = D3DAssemble(test1, strlen(test1), NULL, defines, NULL, D3DCOMPILE_SKIP_VALIDATION, NULL, &messages);
hr = pD3DAssemble(test1, strlen(test1), NULL, defines, NULL, D3DCOMPILE_SKIP_VALIDATION, NULL, &messages);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
if (messages)
{
@ -1586,7 +1586,7 @@ static void assembleshader_test(void) {
shader = NULL;
messages = NULL;
include.ID3DInclude_iface.lpVtbl = &D3DInclude_Vtbl;
hr = D3DAssemble(testshader, strlen(testshader), NULL, NULL,
hr = pD3DAssemble(testshader, strlen(testshader), NULL, NULL,
&include.ID3DInclude_iface, D3DCOMPILE_SKIP_VALIDATION, &shader, &messages);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
if (messages)
@ -1599,7 +1599,7 @@ static void assembleshader_test(void) {
/* NULL shader tests */
shader = NULL;
messages = NULL;
hr = D3DAssemble(NULL, 0, NULL, NULL, NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, &messages);
hr = pD3DAssemble(NULL, 0, NULL, NULL, NULL, D3DCOMPILE_SKIP_VALIDATION, &shader, &messages);
ok(hr == D3DXERR_INVALIDDATA, "Got unexpected hr %#lx.\n", hr);
if (messages)
{
@ -1762,6 +1762,13 @@ static void test_disassemble_shader(void)
START_TEST(asm)
{
HMODULE d3dcompiler;
char buffer[20];
sprintf(buffer, "d3dcompiler_%d", D3D_COMPILER_VERSION);
d3dcompiler = GetModuleHandleA(buffer);
pD3DAssemble = (void *)GetProcAddress(d3dcompiler, "D3DAssemble");
preproc_test();
ps_1_1_test();
vs_1_1_test();

View file

@ -26,7 +26,7 @@
#define D3DXERR_INVALIDDATA 0x88760b59
HRESULT WINAPI D3DAssemble(const void *data, SIZE_T datasize, const char *filename,
static HRESULT (WINAPI *pD3DAssemble)(const void *data, SIZE_T datasize, const char *filename,
const D3D_SHADER_MACRO *defines, ID3DInclude *include, UINT flags,
ID3DBlob **shader, ID3DBlob **error_messages);
@ -1499,7 +1499,7 @@ static HRESULT call_D3DAssemble(const char *source_name, ID3DInclude *include, I
"#include \"include\\include3.h\"\n"
"mov oC0, c0";
return D3DAssemble(ps_code, sizeof(ps_code), source_name, NULL, include, 0, blob, errors);
return pD3DAssemble(ps_code, sizeof(ps_code), source_name, NULL, include, 0, blob, errors);
}
static HRESULT call_D3DCompile(const char *source_name, ID3DInclude *include, ID3D10Blob **blob, ID3D10Blob **errors)
@ -1761,6 +1761,7 @@ static void test_no_output_blob(void)
START_TEST(hlsl_d3d9)
{
char buffer[20];
HMODULE mod;
if (!(mod = LoadLibraryA("d3dx9_36.dll")))
@ -1770,6 +1771,10 @@ START_TEST(hlsl_d3d9)
}
pD3DXGetShaderConstantTable = (void *)GetProcAddress(mod, "D3DXGetShaderConstantTable");
sprintf(buffer, "d3dcompiler_%d", D3D_COMPILER_VERSION);
mod = GetModuleHandleA(buffer);
pD3DAssemble = (void *)GetProcAddress(mod, "D3DAssemble");
test_swizzle();
test_math();
test_conditionals();