[PATCH 1/6] d3dx9_36/tests: Added HLSL test suite.

Henri Verbeet hverbeet at gmail.com
Fri Aug 6 13:37:54 CDT 2010


On 5 August 2010 00:05, Travis Athougies <iammisc at gmail.com> wrote:
> +#define CINTERFACE
Why do you need this?

> +#include <d3d9.h>
d3d9.h should be implied by d3dx9.h

> +#include <assert.h>
> +#include <stdio.h>
I don't think you need these either.

> +struct vertex
> +{
> +    float x, y, z;
> +    float tx, ty;
> +};
> +
> +const struct vertex quad_vertices[4] = {
> +    {-1, -1, 0, 0, 1},
> +    {-1, 1, 0, 0, 0},
> +    {1, -1, 0, 1, 1},
> +    {1, 1, 0, 1, 0}
> +};
Those aren't floating point values. Also, please use consistent formatting.

> +const struct vertex quad_vertices[4] = {
...
> +static IDirect3DVertexBuffer9 *quad_geometry;
> +static IDirect3DVertexShader9 *vshader_passthru;
> +static IDirect3DVertexDeclaration9 *vdeclaration;
> +static IDirect3DDevice9 *device;
Why is all of that global?

> +    hres = IDirect3D9_CreateDevice(d3d9_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device_ptr);
Please break long lines. I realize this particular one is probably
somehow my fault because I added it back in 2005 with
c26ad82e75e408c302c21228ef08c1af0482326c, and everyone has been
(blindly) copying it since, but there are other examples like
setup_device() as well. Use 120 as maximum line length, 100 to be
safe.

> +    hres = IDirect3DVertexBuffer9_Lock(quad_geometry, 0, sizeof(quad_vertices), (void**)&temp_geometry_vertices, 0);
You don't need that cast.

> +    hres = D3DXCompileShader(vshader_passthru_hlsl, strlen(vshader_passthru_hlsl),
> +                             NULL, NULL, "vshader", "vs_1_1", 0,
> +                             &compiled, &errors, 0);
> +    if(FAILED(hres))
> +    {
> +        vshader_passthru = NULL;
That doesn't make sense, vshader_passthru is already NULL at that point.

> +    hr = D3DXCompileShader(shader, strlen(shader),
> +                           NULL, NULL, "test", profile,
> +                           0, &compiled, &errors, constants);
> +    ok (hr == D3D_OK, "Pixel shader %s compilation failed: %s\n", shader, (char*) (errors?ID3DXBuffer_GetBufferPointer(errors):""));
This casts away const.

> diff --git a/include/d3dx9shader.h b/include/d3dx9shader.h
> index c8380bc..c54d27c 100644
> --- a/include/d3dx9shader.h
> +++ b/include/d3dx9shader.h
> @@ -296,6 +296,17 @@ HRESULT WINAPI D3DXAssembleShader(LPCSTR data,
>                                   LPD3DXBUFFER* shader,
>                                   LPD3DXBUFFER* error_messages);
>
> +HRESULT WINAPI D3DXCompileShader(LPCSTR src_data,
> +                                 UINT data_len,
> +                                 const D3DXMACRO* defines,
> +                                 LPD3DXINCLUDE include,
> +                                 LPCSTR function_name,
> +                                 LPCSTR profile,
> +                                 DWORD flags,
> +                                 LPD3DXBUFFER* shader,
> +                                 LPD3DXBUFFER* error_messages,
> +                                 LPD3DXCONSTANTTABLE* constant_table);
> +
This should be in a separate patch.

The patch has some more issues, they shouldn't be hard to spot.



More information about the wine-devel mailing list