ReactOS 0.4.17-dev-934-g091855f
d3dx9shader.h File Reference
#include "d3dx9.h"
Include dependency graph for d3dx9shader.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _D3DXCONSTANTTABLE_DESC
 
struct  _D3DXCONSTANT_DESC
 
struct  _D3DXMACRO
 
struct  _D3DXSEMANTIC
 
struct  _D3DXFRAGMENT_DESC
 
struct  _D3DXSHADER_CONSTANTTABLE
 
struct  _D3DXSHADER_CONSTANTINFO
 
struct  _D3DXSHADER_TYPEINFO
 
struct  _D3DXSHADER_STRUCTMEMBERINFO
 

Macros

#define D3DXSHADER_DEBUG   0x1
 
#define D3DXSHADER_SKIPVALIDATION   0x2
 
#define D3DXSHADER_SKIPOPTIMIZATION   0x4
 
#define D3DXSHADER_PACKMATRIX_ROWMAJOR   0x8
 
#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR   0x10
 
#define D3DXSHADER_PARTIALPRECISION   0x20
 
#define D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT   0x40
 
#define D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT   0x80
 
#define D3DXSHADER_NO_PRESHADER   0x100
 
#define D3DXSHADER_AVOID_FLOW_CONTROL   0x200
 
#define D3DXSHADER_PREFER_FLOW_CONTROL   0x400
 
#define D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY   0x1000
 
#define D3DXSHADER_IEEE_STRICTNESS   0x2000
 
#define D3DXSHADER_OPTIMIZATION_LEVEL0   0x4000
 
#define D3DXSHADER_OPTIMIZATION_LEVEL1   0x0
 
#define D3DXSHADER_OPTIMIZATION_LEVEL2   0xC000
 
#define D3DXSHADER_OPTIMIZATION_LEVEL3   0x8000
 
#define D3DXSHADER_USE_LEGACY_D3DX9_31_DLL   0x10000
 
#define D3DXCONSTTABLE_LARGEADDRESSAWARE   0x20000
 
#define INTERFACE   ID3DXConstantTable
 
#define ID3DXConstantTable_QueryInterface(p, a, b)   (p)->lpVtbl->QueryInterface(p,a,b)
 
#define ID3DXConstantTable_AddRef(p)   (p)->lpVtbl->AddRef(p)
 
#define ID3DXConstantTable_Release(p)   (p)->lpVtbl->Release(p)
 
#define ID3DXConstantTable_GetBufferPointer(p)   (p)->lpVtbl->GetBufferPointer(p)
 
#define ID3DXConstantTable_GetBufferSize(p)   (p)->lpVtbl->GetBufferSize(p)
 
#define ID3DXConstantTable_GetDesc(p, a)   (p)->lpVtbl->GetDesc(p,a)
 
#define ID3DXConstantTable_GetConstantDesc(p, a, b, c)   (p)->lpVtbl->GetConstantDesc(p,a,b,c)
 
#define ID3DXConstantTable_GetSamplerIndex(p, a)   (p)->lpVtbl->GetSamplerIndex(p,a)
 
#define ID3DXConstantTable_GetConstant(p, a, b)   (p)->lpVtbl->GetConstant(p,a,b)
 
#define ID3DXConstantTable_GetConstantByName(p, a, b)   (p)->lpVtbl->GetConstantByName(p,a,b)
 
#define ID3DXConstantTable_GetConstantElement(p, a, b)   (p)->lpVtbl->GetConstantElement(p,a,b)
 
#define ID3DXConstantTable_SetDefaults(p, a)   (p)->lpVtbl->SetDefaults(p,a)
 
#define ID3DXConstantTable_SetValue(p, a, b, c, d)   (p)->lpVtbl->SetValue(p,a,b,c,d)
 
#define ID3DXConstantTable_SetBool(p, a, b, c)   (p)->lpVtbl->SetBool(p,a,b,c)
 
#define ID3DXConstantTable_SetBoolArray(p, a, b, c, d)   (p)->lpVtbl->SetBoolArray(p,a,b,c,d)
 
#define ID3DXConstantTable_SetInt(p, a, b, c)   (p)->lpVtbl->SetInt(p,a,b,c)
 
#define ID3DXConstantTable_SetIntArray(p, a, b, c, d)   (p)->lpVtbl->SetIntArray(p,a,b,c,d)
 
#define ID3DXConstantTable_SetFloat(p, a, b, c)   (p)->lpVtbl->SetFloat(p,a,b,c)
 
#define ID3DXConstantTable_SetFloatArray(p, a, b, c, d)   (p)->lpVtbl->SetFloatArray(p,a,b,c,d)
 
#define ID3DXConstantTable_SetVector(p, a, b, c)   (p)->lpVtbl->SetVector(p,a,b,c)
 
#define ID3DXConstantTable_SetVectorArray(p, a, b, c, d)   (p)->lpVtbl->SetVectorArray(p,a,b,c,d)
 
#define ID3DXConstantTable_SetMatrix(p, a, b, c)   (p)->lpVtbl->SetMatrix(p,a,b,c)
 
#define ID3DXConstantTable_SetMatrixArray(p, a, b, c, d)   (p)->lpVtbl->SetMatrixArray(p,a,b,c,d)
 
#define ID3DXConstantTable_SetMatrixPointerArray(p, a, b, c, d)   (p)->lpVtbl->SetMatrixPointerArray(p,a,b,c,d)
 
#define ID3DXConstantTable_SetMatrixTranspose(p, a, b, c)   (p)->lpVtbl->SetMatrixTranspose(p,a,b,c)
 
#define ID3DXConstantTable_SetMatrixTransposeArray(p, a, b, c, d)   (p)->lpVtbl->SetMatrixTransposeArray(p,a,b,c,d)
 
#define ID3DXConstantTable_SetMatrixTransposePointerArray(p, a, b, c, d)   (p)->lpVtbl->SetMatrixTransposePointerArray(p,a,b,c,d)
 
#define INTERFACE   ID3DXTextureShader
 
#define INTERFACE   ID3DXInclude
 
#define ID3DXInclude_Open(p, a, b, c, d, e)   (p)->lpVtbl->Open(p,a,b,c,d,e)
 
#define ID3DXInclude_Close(p, a)   (p)->lpVtbl->Close(p,a)
 
#define INTERFACE   ID3DXFragmentLinker
 
#define D3DXAssembleShaderFromFile   WINELIB_NAME_AW(D3DXAssembleShaderFromFile)
 
#define D3DXAssembleShaderFromResource   WINELIB_NAME_AW(D3DXAssembleShaderFromResource)
 
#define D3DXCompileShaderFromFile   WINELIB_NAME_AW(D3DXCompileShaderFromFile)
 
#define D3DXCompileShaderFromResource   WINELIB_NAME_AW(D3DXCompileShaderFromResource)
 
#define D3DXPreprocessShaderFromFile   WINELIB_NAME_AW(D3DXPreprocessShaderFromFile)
 
#define D3DXPreprocessShaderFromResource   WINELIB_NAME_AW(D3DXPreprocessShaderFromResource)
 

Typedefs

typedef const char * D3DXHANDLE
 
typedef D3DXHANDLE * LPD3DXHANDLE
 
typedef enum _D3DXREGISTER_SET D3DXREGISTER_SET
 
typedef enum _D3DXREGISTER_SET * LPD3DXREGISTER_SET
 
typedef enum D3DXPARAMETER_CLASS D3DXPARAMETER_CLASS
 
typedef enum D3DXPARAMETER_CLASS * LPD3DXPARAMETER_CLASS
 
typedef enum D3DXPARAMETER_TYPE D3DXPARAMETER_TYPE
 
typedef enum D3DXPARAMETER_TYPE * LPD3DXPARAMETER_TYPE
 
typedef struct _D3DXCONSTANTTABLE_DESC D3DXCONSTANTTABLE_DESC
 
typedef struct _D3DXCONSTANTTABLE_DESC * LPD3DXCONSTANTTABLE_DESC
 
typedef struct _D3DXCONSTANT_DESC D3DXCONSTANT_DESC
 
typedef struct _D3DXCONSTANT_DESC * LPD3DXCONSTANT_DESC
 
typedef struct ID3DXConstantTable * LPD3DXCONSTANTTABLE
 
typedef interface ID3DXTextureShader * LPD3DXTEXTURESHADER
 
typedef struct _D3DXMACRO D3DXMACRO
 
typedef struct _D3DXMACRO * LPD3DXMACRO
 
typedef struct _D3DXSEMANTIC D3DXSEMANTIC
 
typedef struct _D3DXSEMANTIC * LPD3DXSEMANTIC
 
typedef enum _D3DXINCLUDE_TYPE D3DXINCLUDE_TYPE
 
typedef enum _D3DXINCLUDE_TYPE * LPD3DXINCLUDE_TYPE
 
typedef struct ID3DXInclude * LPD3DXINCLUDE
 
typedef struct _D3DXFRAGMENT_DESC D3DXFRAGMENT_DESC
 
typedef struct _D3DXFRAGMENT_DESC * LPD3DXFRAGMENT_DESC
 
typedef struct _D3DXSHADER_CONSTANTTABLE D3DXSHADER_CONSTANTTABLE
 
typedef struct _D3DXSHADER_CONSTANTTABLE * LPD3DXSHADER_CONSTANTTABLE
 
typedef struct _D3DXSHADER_CONSTANTINFO D3DXSHADER_CONSTANTINFO
 
typedef struct _D3DXSHADER_CONSTANTINFO * LPD3DXSHADER_CONSTANTINFO
 
typedef struct _D3DXSHADER_TYPEINFO D3DXSHADER_TYPEINFO
 
typedef struct _D3DXSHADER_TYPEINFO * LPD3DXSHADER_TYPEINFO
 
typedef struct _D3DXSHADER_STRUCTMEMBERINFO D3DXSHADER_STRUCTMEMBERINFO
 
typedef struct _D3DXSHADER_STRUCTMEMBERINFO * LPD3DXSHADER_STRUCTMEMBERINFO
 

Enumerations

enum  _D3DXREGISTER_SET {
  D3DXRS_BOOL , D3DXRS_INT4 , D3DXRS_FLOAT4 , D3DXRS_SAMPLER ,
  D3DXRS_FORCE_DWORD = 0x7fffffff , D3DXRS_BOOL , D3DXRS_INT4 , D3DXRS_FLOAT4 ,
  D3DXRS_SAMPLER , D3DXRS_FORCE_DWORD = 0x7fffffff
}
 
enum  D3DXPARAMETER_CLASS {
  D3DXPC_SCALAR , D3DXPC_VECTOR , D3DXPC_MATRIX_ROWS , D3DXPC_MATRIX_COLUMNS ,
  D3DXPC_OBJECT , D3DXPC_STRUCT , D3DXPC_FORCE_DWORD = 0x7fffffff , D3DXPC_SCALAR ,
  D3DXPC_VECTOR , D3DXPC_MATRIX_ROWS , D3DXPC_MATRIX_COLUMNS , D3DXPC_OBJECT ,
  D3DXPC_STRUCT , D3DXPC_FORCE_DWORD = 0x7fffffff
}
 
enum  D3DXPARAMETER_TYPE {
  D3DXPT_VOID , D3DXPT_BOOL , D3DXPT_INT , D3DXPT_FLOAT ,
  D3DXPT_STRING , D3DXPT_TEXTURE , D3DXPT_TEXTURE1D , D3DXPT_TEXTURE2D ,
  D3DXPT_TEXTURE3D , D3DXPT_TEXTURECUBE , D3DXPT_SAMPLER , D3DXPT_SAMPLER1D ,
  D3DXPT_SAMPLER2D , D3DXPT_SAMPLER3D , D3DXPT_SAMPLERCUBE , D3DXPT_PIXELSHADER ,
  D3DXPT_VERTEXSHADER , D3DXPT_PIXELFRAGMENT , D3DXPT_VERTEXFRAGMENT , D3DXPT_UNSUPPORTED ,
  D3DXPT_FORCE_DWORD = 0x7fffffff , D3DXPT_VOID , D3DXPT_BOOL , D3DXPT_INT ,
  D3DXPT_FLOAT , D3DXPT_STRING , D3DXPT_TEXTURE , D3DXPT_TEXTURE1D ,
  D3DXPT_TEXTURE2D , D3DXPT_TEXTURE3D , D3DXPT_TEXTURECUBE , D3DXPT_SAMPLER ,
  D3DXPT_SAMPLER1D , D3DXPT_SAMPLER2D , D3DXPT_SAMPLER3D , D3DXPT_SAMPLERCUBE ,
  D3DXPT_PIXELSHADER , D3DXPT_VERTEXSHADER , D3DXPT_PIXELFRAGMENT , D3DXPT_VERTEXFRAGMENT ,
  D3DXPT_UNSUPPORTED , D3DXPT_FORCE_DWORD = 0x7fffffff
}
 
enum  _D3DXINCLUDE_TYPE {
  D3DXINC_LOCAL , D3DXINC_SYSTEM , D3DXINC_FORCE_DWORD = 0x7fffffff , D3DXINC_LOCAL ,
  D3DXINC_SYSTEM , D3DXINC_FORCE_DWORD = 0x7fffffff
}
 

Functions

 DEFINE_GUID (IID_ID3DXConstantTable, 0x9dca3190, 0x38b9, 0x4fc3, 0x92, 0xe3, 0x39, 0xc6, 0xdd, 0xfb, 0x35, 0x8b)
 
 DECLARE_INTERFACE_ (ID3DXConstantTable, ID3DXBuffer)
 
 DEFINE_GUID (IID_ID3DXTextureShader, 0x3e3d67f8, 0xaa7a, 0x405d, 0xa8, 0x57, 0xba, 0x1, 0xd4, 0x75, 0x84, 0x26)
 
 DECLARE_INTERFACE_ (ID3DXTextureShader, IUnknown)
 
 DECLARE_INTERFACE (ID3DXInclude)
 
 DEFINE_GUID (IID_ID3DXFragmentLinker, 0x1a2c0cc2, 0xe5b6, 0x4ebc, 0x9e, 0x8d, 0x39, 0xe, 0x5, 0x78, 0x11, 0xb6)
 
 DECLARE_INTERFACE_ (ID3DXFragmentLinker, IUnknown)
 
const char *WINAPI D3DXGetPixelShaderProfile (struct IDirect3DDevice9 *device)
 
UINT WINAPI D3DXGetShaderSize (const DWORD *byte_code)
 
DWORD WINAPI D3DXGetShaderVersion (const DWORD *byte_code)
 
const char *WINAPI D3DXGetVertexShaderProfile (struct IDirect3DDevice9 *device)
 
HRESULT WINAPI D3DXFindShaderComment (const DWORD *byte_code, DWORD fourcc, const void **data, UINT *size)
 
HRESULT WINAPI D3DXGetShaderSamplers (const DWORD *byte_code, const char **samplers, UINT *count)
 
HRESULT WINAPI D3DXGetShaderInputSemantics (const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count)
 
HRESULT WINAPI D3DXGetShaderOuputSemantics (const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count)
 
HRESULT WINAPI D3DXAssembleShaderFromFileA (const char *filename, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
 
HRESULT WINAPI D3DXAssembleShaderFromFileW (const WCHAR *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)
 
HRESULT WINAPI D3DXAssembleShaderFromResourceW (HMODULE module, const WCHAR *resource, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, 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 D3DXCompileShader (const char *src_data, UINT data_len, const D3DXMACRO *defines, ID3DXInclude *include, const char *function_name, const char *profile, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table)
 
HRESULT WINAPI D3DXDisassembleShader (const DWORD *pShader, BOOL EnableColorCode, const char *pComments, struct ID3DXBuffer **ppDisassembly)
 
HRESULT WINAPI D3DXCompileShaderFromFileA (const char *filename, const D3DXMACRO *defines, ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table)
 
HRESULT WINAPI D3DXCompileShaderFromFileW (const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table)
 
HRESULT WINAPI D3DXCompileShaderFromResourceA (HMODULE module, const char *resource, const D3DXMACRO *defines, ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table)
 
HRESULT WINAPI D3DXCompileShaderFromResourceW (HMODULE module, const WCHAR *resource, const D3DXMACRO *defines, ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table)
 
HRESULT WINAPI D3DXPreprocessShader (const char *data, UINT data_len, 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 D3DXPreprocessShaderFromFileW (const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, 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 D3DXPreprocessShaderFromResourceW (HMODULE module, const WCHAR *resource, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
 
HRESULT WINAPI D3DXGetShaderConstantTableEx (const DWORD *byte_code, DWORD flags, ID3DXConstantTable **constant_table)
 
HRESULT WINAPI D3DXGetShaderConstantTable (const DWORD *byte_code, ID3DXConstantTable **constant_table)
 
HRESULT WINAPI D3DXGetShaderOutputSemantics (const DWORD *pFunction, D3DXSEMANTIC *pSemantics, UINT *pCount)
 
HRESULT WINAPI D3DXCreateTextureShader (const DWORD *pFunction, ID3DXTextureShader **ppTextureShader)
 
HRESULT WINAPI D3DXCreateFragmentLinker (IDirect3DDevice9 *device, UINT size, ID3DXFragmentLinker **linker)
 
HRESULT WINAPI D3DXCreateFragmentLinkerEx (IDirect3DDevice9 *device, UINT size, DWORD flags, ID3DXFragmentLinker **linker)
 

Macro Definition Documentation

◆ D3DXAssembleShaderFromFile

#define D3DXAssembleShaderFromFile   WINELIB_NAME_AW(D3DXAssembleShaderFromFile)

Definition at line 362 of file d3dx9shader.h.

◆ D3DXAssembleShaderFromResource

#define D3DXAssembleShaderFromResource   WINELIB_NAME_AW(D3DXAssembleShaderFromResource)

Definition at line 368 of file d3dx9shader.h.

◆ D3DXCompileShaderFromFile

#define D3DXCompileShaderFromFile   WINELIB_NAME_AW(D3DXCompileShaderFromFile)

Definition at line 385 of file d3dx9shader.h.

◆ D3DXCompileShaderFromResource

#define D3DXCompileShaderFromResource   WINELIB_NAME_AW(D3DXCompileShaderFromResource)

Definition at line 393 of file d3dx9shader.h.

◆ D3DXCONSTTABLE_LARGEADDRESSAWARE

#define D3DXCONSTTABLE_LARGEADDRESSAWARE   0x20000

Definition at line 46 of file d3dx9shader.h.

◆ D3DXPreprocessShaderFromFile

#define D3DXPreprocessShaderFromFile   WINELIB_NAME_AW(D3DXPreprocessShaderFromFile)

Definition at line 402 of file d3dx9shader.h.

◆ D3DXPreprocessShaderFromResource

#define D3DXPreprocessShaderFromResource   WINELIB_NAME_AW(D3DXPreprocessShaderFromResource)

Definition at line 408 of file d3dx9shader.h.

◆ D3DXSHADER_AVOID_FLOW_CONTROL

#define D3DXSHADER_AVOID_FLOW_CONTROL   0x200

Definition at line 34 of file d3dx9shader.h.

◆ D3DXSHADER_DEBUG

#define D3DXSHADER_DEBUG   0x1

Definition at line 25 of file d3dx9shader.h.

◆ D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY

#define D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY   0x1000

Definition at line 36 of file d3dx9shader.h.

◆ D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT

#define D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT   0x80

Definition at line 32 of file d3dx9shader.h.

◆ D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT

#define D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT   0x40

Definition at line 31 of file d3dx9shader.h.

◆ D3DXSHADER_IEEE_STRICTNESS

#define D3DXSHADER_IEEE_STRICTNESS   0x2000

Definition at line 37 of file d3dx9shader.h.

◆ D3DXSHADER_NO_PRESHADER

#define D3DXSHADER_NO_PRESHADER   0x100

Definition at line 33 of file d3dx9shader.h.

◆ D3DXSHADER_OPTIMIZATION_LEVEL0

#define D3DXSHADER_OPTIMIZATION_LEVEL0   0x4000

Definition at line 39 of file d3dx9shader.h.

◆ D3DXSHADER_OPTIMIZATION_LEVEL1

#define D3DXSHADER_OPTIMIZATION_LEVEL1   0x0

Definition at line 40 of file d3dx9shader.h.

◆ D3DXSHADER_OPTIMIZATION_LEVEL2

#define D3DXSHADER_OPTIMIZATION_LEVEL2   0xC000

Definition at line 41 of file d3dx9shader.h.

◆ D3DXSHADER_OPTIMIZATION_LEVEL3

#define D3DXSHADER_OPTIMIZATION_LEVEL3   0x8000

Definition at line 42 of file d3dx9shader.h.

◆ D3DXSHADER_PACKMATRIX_COLUMNMAJOR

#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR   0x10

Definition at line 29 of file d3dx9shader.h.

◆ D3DXSHADER_PACKMATRIX_ROWMAJOR

#define D3DXSHADER_PACKMATRIX_ROWMAJOR   0x8

Definition at line 28 of file d3dx9shader.h.

◆ D3DXSHADER_PARTIALPRECISION

#define D3DXSHADER_PARTIALPRECISION   0x20

Definition at line 30 of file d3dx9shader.h.

◆ D3DXSHADER_PREFER_FLOW_CONTROL

#define D3DXSHADER_PREFER_FLOW_CONTROL   0x400

Definition at line 35 of file d3dx9shader.h.

◆ D3DXSHADER_SKIPOPTIMIZATION

#define D3DXSHADER_SKIPOPTIMIZATION   0x4

Definition at line 27 of file d3dx9shader.h.

◆ D3DXSHADER_SKIPVALIDATION

#define D3DXSHADER_SKIPVALIDATION   0x2

Definition at line 26 of file d3dx9shader.h.

◆ D3DXSHADER_USE_LEGACY_D3DX9_31_DLL

#define D3DXSHADER_USE_LEGACY_D3DX9_31_DLL   0x10000

Definition at line 44 of file d3dx9shader.h.

◆ ID3DXConstantTable_AddRef

#define ID3DXConstantTable_AddRef (   p)    (p)->lpVtbl->AddRef(p)

Definition at line 176 of file d3dx9shader.h.

◆ ID3DXConstantTable_GetBufferPointer

#define ID3DXConstantTable_GetBufferPointer (   p)    (p)->lpVtbl->GetBufferPointer(p)

Definition at line 179 of file d3dx9shader.h.

◆ ID3DXConstantTable_GetBufferSize

#define ID3DXConstantTable_GetBufferSize (   p)    (p)->lpVtbl->GetBufferSize(p)

Definition at line 180 of file d3dx9shader.h.

◆ ID3DXConstantTable_GetConstant

#define ID3DXConstantTable_GetConstant (   p,
  a,
  b 
)    (p)->lpVtbl->GetConstant(p,a,b)

Definition at line 185 of file d3dx9shader.h.

◆ ID3DXConstantTable_GetConstantByName

#define ID3DXConstantTable_GetConstantByName (   p,
  a,
  b 
)    (p)->lpVtbl->GetConstantByName(p,a,b)

Definition at line 186 of file d3dx9shader.h.

◆ ID3DXConstantTable_GetConstantDesc

#define ID3DXConstantTable_GetConstantDesc (   p,
  a,
  b,
  c 
)    (p)->lpVtbl->GetConstantDesc(p,a,b,c)

Definition at line 183 of file d3dx9shader.h.

◆ ID3DXConstantTable_GetConstantElement

#define ID3DXConstantTable_GetConstantElement (   p,
  a,
  b 
)    (p)->lpVtbl->GetConstantElement(p,a,b)

Definition at line 187 of file d3dx9shader.h.

◆ ID3DXConstantTable_GetDesc

#define ID3DXConstantTable_GetDesc (   p,
  a 
)    (p)->lpVtbl->GetDesc(p,a)

Definition at line 182 of file d3dx9shader.h.

◆ ID3DXConstantTable_GetSamplerIndex

#define ID3DXConstantTable_GetSamplerIndex (   p,
  a 
)    (p)->lpVtbl->GetSamplerIndex(p,a)

Definition at line 184 of file d3dx9shader.h.

◆ ID3DXConstantTable_QueryInterface

#define ID3DXConstantTable_QueryInterface (   p,
  a,
  b 
)    (p)->lpVtbl->QueryInterface(p,a,b)

Definition at line 175 of file d3dx9shader.h.

◆ ID3DXConstantTable_Release

#define ID3DXConstantTable_Release (   p)    (p)->lpVtbl->Release(p)

Definition at line 177 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetBool

#define ID3DXConstantTable_SetBool (   p,
  a,
  b,
  c 
)    (p)->lpVtbl->SetBool(p,a,b,c)

Definition at line 190 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetBoolArray

#define ID3DXConstantTable_SetBoolArray (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetBoolArray(p,a,b,c,d)

Definition at line 191 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetDefaults

#define ID3DXConstantTable_SetDefaults (   p,
  a 
)    (p)->lpVtbl->SetDefaults(p,a)

Definition at line 188 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetFloat

#define ID3DXConstantTable_SetFloat (   p,
  a,
  b,
  c 
)    (p)->lpVtbl->SetFloat(p,a,b,c)

Definition at line 194 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetFloatArray

#define ID3DXConstantTable_SetFloatArray (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetFloatArray(p,a,b,c,d)

Definition at line 195 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetInt

#define ID3DXConstantTable_SetInt (   p,
  a,
  b,
  c 
)    (p)->lpVtbl->SetInt(p,a,b,c)

Definition at line 192 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetIntArray

#define ID3DXConstantTable_SetIntArray (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetIntArray(p,a,b,c,d)

Definition at line 193 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetMatrix

#define ID3DXConstantTable_SetMatrix (   p,
  a,
  b,
  c 
)    (p)->lpVtbl->SetMatrix(p,a,b,c)

Definition at line 198 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetMatrixArray

#define ID3DXConstantTable_SetMatrixArray (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetMatrixArray(p,a,b,c,d)

Definition at line 199 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetMatrixPointerArray

#define ID3DXConstantTable_SetMatrixPointerArray (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetMatrixPointerArray(p,a,b,c,d)

Definition at line 200 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetMatrixTranspose

#define ID3DXConstantTable_SetMatrixTranspose (   p,
  a,
  b,
  c 
)    (p)->lpVtbl->SetMatrixTranspose(p,a,b,c)

Definition at line 201 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetMatrixTransposeArray

#define ID3DXConstantTable_SetMatrixTransposeArray (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetMatrixTransposeArray(p,a,b,c,d)

Definition at line 202 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetMatrixTransposePointerArray

#define ID3DXConstantTable_SetMatrixTransposePointerArray (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetMatrixTransposePointerArray(p,a,b,c,d)

Definition at line 203 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetValue

#define ID3DXConstantTable_SetValue (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetValue(p,a,b,c,d)

Definition at line 189 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetVector

#define ID3DXConstantTable_SetVector (   p,
  a,
  b,
  c 
)    (p)->lpVtbl->SetVector(p,a,b,c)

Definition at line 196 of file d3dx9shader.h.

◆ ID3DXConstantTable_SetVectorArray

#define ID3DXConstantTable_SetVectorArray (   p,
  a,
  b,
  c,
  d 
)    (p)->lpVtbl->SetVectorArray(p,a,b,c,d)

Definition at line 197 of file d3dx9shader.h.

◆ ID3DXInclude_Close

#define ID3DXInclude_Close (   p,
  a 
)    (p)->lpVtbl->Close(p,a)

Definition at line 304 of file d3dx9shader.h.

◆ ID3DXInclude_Open

#define ID3DXInclude_Open (   p,
  a,
  b,
  c,
  d,
  e 
)    (p)->lpVtbl->Open(p,a,b,c,d,e)

Definition at line 303 of file d3dx9shader.h.

◆ INTERFACE [1/4]

#define INTERFACE   ID3DXConstantTable

Definition at line 318 of file d3dx9shader.h.

◆ INTERFACE [2/4]

#define INTERFACE   ID3DXTextureShader

Definition at line 318 of file d3dx9shader.h.

◆ INTERFACE [3/4]

#define INTERFACE   ID3DXInclude

Definition at line 318 of file d3dx9shader.h.

◆ INTERFACE [4/4]

#define INTERFACE   ID3DXFragmentLinker

Definition at line 318 of file d3dx9shader.h.

Typedef Documentation

◆ D3DXCONSTANT_DESC

◆ D3DXCONSTANTTABLE_DESC

◆ D3DXFRAGMENT_DESC

◆ D3DXHANDLE

typedef const char* D3DXHANDLE

Definition at line 48 of file d3dx9shader.h.

◆ D3DXINCLUDE_TYPE

◆ D3DXMACRO

◆ D3DXPARAMETER_CLASS

◆ D3DXPARAMETER_TYPE

◆ D3DXREGISTER_SET

◆ D3DXSEMANTIC

◆ D3DXSHADER_CONSTANTINFO

◆ D3DXSHADER_CONSTANTTABLE

◆ D3DXSHADER_STRUCTMEMBERINFO

◆ D3DXSHADER_TYPEINFO

◆ LPD3DXCONSTANT_DESC

◆ LPD3DXCONSTANTTABLE

typedef struct ID3DXConstantTable* LPD3DXCONSTANTTABLE

Definition at line 237 of file d3dx9shader.h.

◆ LPD3DXCONSTANTTABLE_DESC

◆ LPD3DXFRAGMENT_DESC

◆ LPD3DXHANDLE

Definition at line 49 of file d3dx9shader.h.

◆ LPD3DXINCLUDE

typedef struct ID3DXInclude* LPD3DXINCLUDE

Definition at line 306 of file d3dx9shader.h.

◆ LPD3DXINCLUDE_TYPE

◆ LPD3DXMACRO

◆ LPD3DXPARAMETER_CLASS

◆ LPD3DXPARAMETER_TYPE

◆ LPD3DXREGISTER_SET

◆ LPD3DXSEMANTIC

◆ LPD3DXSHADER_CONSTANTINFO

◆ LPD3DXSHADER_CONSTANTTABLE

◆ LPD3DXSHADER_STRUCTMEMBERINFO

◆ LPD3DXSHADER_TYPEINFO

◆ LPD3DXTEXTURESHADER

typedef interface ID3DXTextureShader* LPD3DXTEXTURESHADER

Definition at line 239 of file d3dx9shader.h.

Enumeration Type Documentation

◆ _D3DXINCLUDE_TYPE

Enumerator
D3DXINC_LOCAL 
D3DXINC_SYSTEM 
D3DXINC_FORCE_DWORD 
D3DXINC_LOCAL 
D3DXINC_SYSTEM 
D3DXINC_FORCE_DWORD 

Definition at line 286 of file d3dx9shader.h.

287{
290 D3DXINC_FORCE_DWORD = 0x7fffffff,
@ D3DXINC_SYSTEM
Definition: d3dx9shader.h:289
@ D3DXINC_LOCAL
Definition: d3dx9shader.h:288
@ D3DXINC_FORCE_DWORD
Definition: d3dx9shader.h:290
enum _D3DXINCLUDE_TYPE * LPD3DXINCLUDE_TYPE
enum _D3DXINCLUDE_TYPE D3DXINCLUDE_TYPE

◆ _D3DXREGISTER_SET

Enumerator
D3DXRS_BOOL 
D3DXRS_INT4 
D3DXRS_FLOAT4 
D3DXRS_SAMPLER 
D3DXRS_FORCE_DWORD 
D3DXRS_BOOL 
D3DXRS_INT4 
D3DXRS_FLOAT4 
D3DXRS_SAMPLER 
D3DXRS_FORCE_DWORD 

Definition at line 51 of file d3dx9shader.h.

52{
57 D3DXRS_FORCE_DWORD = 0x7fffffff
@ D3DXRS_FLOAT4
Definition: d3dx9shader.h:55
@ D3DXRS_FORCE_DWORD
Definition: d3dx9shader.h:57
@ D3DXRS_BOOL
Definition: d3dx9shader.h:53
@ D3DXRS_INT4
Definition: d3dx9shader.h:54
@ D3DXRS_SAMPLER
Definition: d3dx9shader.h:56
enum _D3DXREGISTER_SET * LPD3DXREGISTER_SET
enum _D3DXREGISTER_SET D3DXREGISTER_SET

◆ D3DXPARAMETER_CLASS

Enumerator
D3DXPC_SCALAR 
D3DXPC_VECTOR 
D3DXPC_MATRIX_ROWS 
D3DXPC_MATRIX_COLUMNS 
D3DXPC_OBJECT 
D3DXPC_STRUCT 
D3DXPC_FORCE_DWORD 
D3DXPC_SCALAR 
D3DXPC_VECTOR 
D3DXPC_MATRIX_ROWS 
D3DXPC_MATRIX_COLUMNS 
D3DXPC_OBJECT 
D3DXPC_STRUCT 
D3DXPC_FORCE_DWORD 

Definition at line 60 of file d3dx9shader.h.

61{
68 D3DXPC_FORCE_DWORD = 0x7fffffff,
D3DXPARAMETER_CLASS
Definition: d3dx9shader.h:61
@ D3DXPC_SCALAR
Definition: d3dx9shader.h:62
@ D3DXPC_MATRIX_COLUMNS
Definition: d3dx9shader.h:65
@ D3DXPC_STRUCT
Definition: d3dx9shader.h:67
@ D3DXPC_MATRIX_ROWS
Definition: d3dx9shader.h:64
@ D3DXPC_FORCE_DWORD
Definition: d3dx9shader.h:68
@ D3DXPC_VECTOR
Definition: d3dx9shader.h:63
@ D3DXPC_OBJECT
Definition: d3dx9shader.h:66
enum D3DXPARAMETER_CLASS * LPD3DXPARAMETER_CLASS

◆ D3DXPARAMETER_TYPE

Enumerator
D3DXPT_VOID 
D3DXPT_BOOL 
D3DXPT_INT 
D3DXPT_FLOAT 
D3DXPT_STRING 
D3DXPT_TEXTURE 
D3DXPT_TEXTURE1D 
D3DXPT_TEXTURE2D 
D3DXPT_TEXTURE3D 
D3DXPT_TEXTURECUBE 
D3DXPT_SAMPLER 
D3DXPT_SAMPLER1D 
D3DXPT_SAMPLER2D 
D3DXPT_SAMPLER3D 
D3DXPT_SAMPLERCUBE 
D3DXPT_PIXELSHADER 
D3DXPT_VERTEXSHADER 
D3DXPT_PIXELFRAGMENT 
D3DXPT_VERTEXFRAGMENT 
D3DXPT_UNSUPPORTED 
D3DXPT_FORCE_DWORD 
D3DXPT_VOID 
D3DXPT_BOOL 
D3DXPT_INT 
D3DXPT_FLOAT 
D3DXPT_STRING 
D3DXPT_TEXTURE 
D3DXPT_TEXTURE1D 
D3DXPT_TEXTURE2D 
D3DXPT_TEXTURE3D 
D3DXPT_TEXTURECUBE 
D3DXPT_SAMPLER 
D3DXPT_SAMPLER1D 
D3DXPT_SAMPLER2D 
D3DXPT_SAMPLER3D 
D3DXPT_SAMPLERCUBE 
D3DXPT_PIXELSHADER 
D3DXPT_VERTEXSHADER 
D3DXPT_PIXELFRAGMENT 
D3DXPT_VERTEXFRAGMENT 
D3DXPT_UNSUPPORTED 
D3DXPT_FORCE_DWORD 

Definition at line 71 of file d3dx9shader.h.

72{
93 D3DXPT_FORCE_DWORD = 0x7fffffff,
enum D3DXPARAMETER_TYPE * LPD3DXPARAMETER_TYPE
D3DXPARAMETER_TYPE
Definition: d3dx9shader.h:72
@ D3DXPT_STRING
Definition: d3dx9shader.h:77
@ D3DXPT_TEXTURE
Definition: d3dx9shader.h:78
@ D3DXPT_SAMPLER3D
Definition: d3dx9shader.h:86
@ D3DXPT_UNSUPPORTED
Definition: d3dx9shader.h:92
@ D3DXPT_VERTEXSHADER
Definition: d3dx9shader.h:89
@ D3DXPT_VERTEXFRAGMENT
Definition: d3dx9shader.h:91
@ D3DXPT_TEXTURE1D
Definition: d3dx9shader.h:79
@ D3DXPT_SAMPLERCUBE
Definition: d3dx9shader.h:87
@ D3DXPT_FLOAT
Definition: d3dx9shader.h:76
@ D3DXPT_FORCE_DWORD
Definition: d3dx9shader.h:93
@ D3DXPT_TEXTURECUBE
Definition: d3dx9shader.h:82
@ D3DXPT_PIXELSHADER
Definition: d3dx9shader.h:88
@ D3DXPT_PIXELFRAGMENT
Definition: d3dx9shader.h:90
@ D3DXPT_BOOL
Definition: d3dx9shader.h:74
@ D3DXPT_INT
Definition: d3dx9shader.h:75
@ D3DXPT_VOID
Definition: d3dx9shader.h:73
@ D3DXPT_SAMPLER
Definition: d3dx9shader.h:83
@ D3DXPT_SAMPLER1D
Definition: d3dx9shader.h:84
@ D3DXPT_SAMPLER2D
Definition: d3dx9shader.h:85
@ D3DXPT_TEXTURE3D
Definition: d3dx9shader.h:81
@ D3DXPT_TEXTURE2D
Definition: d3dx9shader.h:80

Function Documentation

◆ D3DXAssembleShader()

HRESULT WINAPI D3DXAssembleShader ( const char *  data,
UINT  data_len,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 207 of file shader.c.

209{
210 static HRESULT (WINAPI *pD3DAssemble)(const void *data, SIZE_T datasize, const char *filename,
214 HRESULT hr;
215
216 TRACE("data %p, data_len %u, defines %p, include %p, flags %#lx, shader %p, error_messages %p.\n",
218
220
221 /* Forward to d3dcompiler: the parameter types aren't really different,
222 the actual data types are equivalent */
223 hr = pD3DAssemble(data, data_len, NULL, (D3D_SHADER_MACRO *)defines,
226
228 return hr;
229}
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude * include
Definition: asm.c:31
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude UINT ID3DBlob ID3DBlob ** error_messages
Definition: asm.c:32
static SIZE_T const char const D3D_SHADER_MACRO * defines
Definition: asm.c:31
static SIZE_T datasize
Definition: asm.c:30
#define D3DXERR_INVALIDDATA
Definition: compiler.c:53
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
static BOOL WINAPI load_d3dassemble_once(INIT_ONCE *once, void *param, void **context)
Definition: shader.c:191
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
Definition: InitOnce.c:12
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLuint shader
Definition: glext.h:6030
GLbitfield flags
Definition: glext.h:7161
unsigned int UINT
Definition: sysinfo.c:13
const char * filename
Definition: ioapi.h:137
#define TRACE(s)
Definition: solgame.cpp:4
ULONG_PTR SIZE_T
Definition: typedefs.h:80
static INIT_ONCE init_once
Definition: vfwcapture.c:981
RTL_RUN_ONCE INIT_ONCE
Definition: winbase.h:3654
#define INIT_ONCE_STATIC_INIT
Definition: winbase.h:591
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6

◆ D3DXAssembleShaderFromFileA()

HRESULT WINAPI D3DXAssembleShaderFromFileA ( const char *  filename,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 334 of file shader.c.

336{
337 WCHAR *filename_w;
338 DWORD len;
339 HRESULT ret;
340
341 TRACE("filename %s, defines %p, include %p, flags %#lx, shader %p, error_messages %p.\n",
343
344 if (!filename) return D3DXERR_INVALIDDATA;
345
347 filename_w = malloc(len * sizeof(WCHAR));
348 if (!filename_w) return E_OUTOFMEMORY;
349 MultiByteToWideChar(CP_ACP, 0, filename, -1, filename_w, len);
350
352
353 free(filename_w);
354 return ret;
355}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
HRESULT WINAPI D3DXAssembleShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:357
#define CP_ACP
Definition: compat.h:109
#define MultiByteToWideChar
Definition: compat.h:110
return ret
Definition: mutex.c:147
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
#define debugstr_a
Definition: kernel32.h:31
short WCHAR
Definition: pedump.c:58

◆ D3DXAssembleShaderFromFileW()

HRESULT WINAPI D3DXAssembleShaderFromFileW ( const WCHAR *  filename,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 357 of file shader.c.

359{
360 struct d3dx_include_from_file include_from_file;
361 const void *buffer;
362 unsigned int len;
363 char *filename_a;
364 HRESULT hr;
365
366 TRACE("filename %s, defines %p, include %p, flags %#lx, shader %p, error_messages %p.\n",
368
369 if(!include)
370 {
371 include_from_file.ID3DXInclude_iface.lpVtbl = &d3dx_include_from_file_vtbl;
372 include = &include_from_file.ID3DXInclude_iface;
373 }
374
376 filename_a = malloc(len * sizeof(char));
377 if (!filename_a)
378 return E_OUTOFMEMORY;
379 WideCharToMultiByte(CP_ACP, 0, filename, -1, filename_a, len, NULL, NULL);
380
383 if (FAILED(hr))
384 {
386 free(filename_a);
387 return D3DXERR_INVALIDDATA;
388 }
389
391
394 free(filename_a);
395 return hr;
396}
CRITICAL_SECTION from_file_mutex
Definition: shader.c:242
HRESULT WINAPI D3DXAssembleShader(const char *data, UINT data_len, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:207
const struct ID3DXIncludeVtbl d3dx_include_from_file_vtbl
Definition: shader.c:328
#define WideCharToMultiByte
Definition: compat.h:111
#define ID3DXInclude_Close(p, a)
Definition: d3dx9shader.h:304
#define ID3DXInclude_Open(p, a, b, c, d, e)
Definition: d3dx9shader.h:303
GLuint buffer
Definition: glext.h:5915
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_w
Definition: kernel32.h:32
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

◆ D3DXAssembleShaderFromResourceA()

HRESULT WINAPI D3DXAssembleShaderFromResourceA ( HMODULE  module,
const char *  resource,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 398 of file shader.c.

400{
401 void *buffer;
402 HRSRC res;
403 DWORD len;
404
405 TRACE("module %p, resource %s, defines %p, include %p, flags %#lx, shader %p, error_messages %p.\n",
407
408 if (!(res = FindResourceA(module, resource, (const char *)RT_RCDATA)))
409 return D3DXERR_INVALIDDATA;
411 return D3DXERR_INVALIDDATA;
414}
HRESULT load_resource_into_memory(HMODULE module, HRSRC resinfo, void **buffer, DWORD *length)
Definition: util.c:261
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
GLuint res
Definition: glext.h:9613
#define RT_RCDATA
Definition: pedump.c:372

◆ D3DXAssembleShaderFromResourceW()

HRESULT WINAPI D3DXAssembleShaderFromResourceW ( HMODULE  module,
const WCHAR *  resource,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 416 of file shader.c.

418{
419 void *buffer;
420 HRSRC res;
421 DWORD len;
422
423 TRACE("module %p, resource %s, defines %p, include %p, flags %#lx, shader %p, error_messages %p.\n",
425
426 if (!(res = FindResourceW(module, resource, (const WCHAR *)RT_RCDATA)))
427 return D3DXERR_INVALIDDATA;
429 return D3DXERR_INVALIDDATA;
432}
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176

◆ D3DXCompileShader()

HRESULT WINAPI D3DXCompileShader ( const char *  src_data,
UINT  data_len,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
const char *  function_name,
const char *  profile,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages,
ID3DXConstantTable **  constant_table 
)

Definition at line 434 of file shader.c.

437{
438 HRESULT hr;
439
440 TRACE("data %s, length %u, defines %p, include %p, function %s, profile %s, "
441 "flags %#lx, shader %p, error_msgs %p, constant_table %p.\n",
443 flags, shader, error_msgs, constant_table);
444
445 if (D3DX_SDK_VERSION <= 36)
447
449 function, profile, flags, 0, (ID3DBlob **)shader, (ID3DBlob **)error_msgs);
450
452 {
454 if (FAILED(hr))
455 {
457 *shader = NULL;
458 }
459 }
460
461 return hr;
462}
#define D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY
Definition: d3dcompiler.h:54
HRESULT WINAPI D3DCompile(const void *data, SIZE_T data_size, const char *filename, const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **error_messages)
Definition: compiler.c:639
HRESULT WINAPI D3DXGetShaderConstantTable(const DWORD *byte_code, ID3DXConstantTable **constant_table)
Definition: shader.c:2097
#define ID3DXBuffer_GetBufferPointer(p)
Definition: d3dx9core.h:85
#define ID3DXBuffer_Release(p)
Definition: d3dx9core.h:83
#define D3DX_SDK_VERSION
Definition: d3dx9core.h:31
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
static ID3DXConstantTable ** constant_table
Definition: hlsl_d3d9.c:32
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define profile
Definition: kernel32.h:12

◆ D3DXCompileShaderFromFileA()

HRESULT WINAPI D3DXCompileShaderFromFileA ( const char *  filename,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
const char *  entrypoint,
const char *  profile,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages,
ID3DXConstantTable **  constant_table 
)

Definition at line 464 of file shader.c.

467{
468 WCHAR *filename_w;
469 DWORD len;
470 HRESULT ret;
471
472 TRACE("filename %s, defines %p, include %p, entrypoint %s, profile %s, "
473 "flags %#lx, shader %p, error_messages %p, constant_table %p.\n",
476
477 if (!filename) return D3DXERR_INVALIDDATA;
478
480 filename_w = malloc(len * sizeof(WCHAR));
481 if (!filename_w) return E_OUTOFMEMORY;
482 MultiByteToWideChar(CP_ACP, 0, filename, -1, filename_w, len);
483
485 entrypoint, profile, flags,
487
488 free(filename_w);
489 return ret;
490}
HRESULT WINAPI D3DXCompileShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, const char *entrypoint, const char *profile, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages, ID3DXConstantTable **constant_table)
Definition: shader.c:492

◆ D3DXCompileShaderFromFileW()

HRESULT WINAPI D3DXCompileShaderFromFileW ( const WCHAR *  filename,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
const char *  entrypoint,
const char *  profile,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages,
ID3DXConstantTable **  constant_table 
)

Definition at line 492 of file shader.c.

495{
496 struct d3dx_include_from_file include_from_file;
497 unsigned int filename_len;
498 const void *buffer;
499 char *filename_a;
500 HRESULT hr;
501 UINT len;
502
503 TRACE("filename %s, defines %p, include %p, entrypoint %s, profile %s, "
504 "flags %#lx, shader %p, error_messages %p, constant_table %p.\n",
507
508 if (!include)
509 {
510 include_from_file.ID3DXInclude_iface.lpVtbl = &d3dx_include_from_file_vtbl;
511 include = &include_from_file.ID3DXInclude_iface;
512 }
513
514 filename_len = WideCharToMultiByte(CP_ACP, 0, filename, -1, NULL, 0, NULL, NULL);
515 filename_a = malloc(filename_len * sizeof(char));
516 if (!filename_a)
517 return E_OUTOFMEMORY;
518 WideCharToMultiByte(CP_ACP, 0, filename, -1, filename_a, filename_len, NULL, NULL);
519
522 if (FAILED(hr))
523 {
525 free(filename_a);
526 return D3DXERR_INVALIDDATA;
527 }
528
529 if (D3DX_SDK_VERSION <= 36)
531
532 hr = D3DCompile(buffer, len, filename_a, (const D3D_SHADER_MACRO *)defines,
533 (ID3DInclude *)include, entrypoint, profile, flags, 0,
535
539
542 free(filename_a);
543 return hr;
544}

◆ D3DXCompileShaderFromResourceA()

HRESULT WINAPI D3DXCompileShaderFromResourceA ( HMODULE  module,
const char *  resource,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
const char *  entrypoint,
const char *  profile,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages,
ID3DXConstantTable **  constant_table 
)

Definition at line 546 of file shader.c.

549{
550 void *buffer;
551 HRSRC res;
552 DWORD len;
553
554 TRACE("module %p, resource %s, defines %p, include %p, entrypoint %s, profile %s, "
555 "flags %#lx, shader %p, error_messages %p, constant_table %p.\n",
558
559 if (!(res = FindResourceA(module, resource, (const char *)RT_RCDATA)))
560 return D3DXERR_INVALIDDATA;
562 return D3DXERR_INVALIDDATA;
563 return D3DXCompileShader(buffer, len, defines, include, entrypoint, profile,
565}
HRESULT WINAPI D3DXCompileShader(const char *data, UINT length, const D3DXMACRO *defines, ID3DXInclude *include, const char *function, const char *profile, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_msgs, ID3DXConstantTable **constant_table)
Definition: shader.c:434

◆ D3DXCompileShaderFromResourceW()

HRESULT WINAPI D3DXCompileShaderFromResourceW ( HMODULE  module,
const WCHAR *  resource,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
const char *  entrypoint,
const char *  profile,
DWORD  flags,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages,
ID3DXConstantTable **  constant_table 
)

Definition at line 567 of file shader.c.

570{
571 void *buffer;
572 HRSRC res;
573 DWORD len;
574
575 TRACE("module %p, resource %s, defines %p, include %p, entrypoint %s, profile %s, "
576 "flags %#lx, shader %p, error_messages %p, constant_table %p.\n",
579
580 if (!(res = FindResourceW(module, resource, (const WCHAR *)RT_RCDATA)))
581 return D3DXERR_INVALIDDATA;
583 return D3DXERR_INVALIDDATA;
584 return D3DXCompileShader(buffer, len, defines, include, entrypoint, profile,
586}

◆ D3DXCreateFragmentLinker()

HRESULT WINAPI D3DXCreateFragmentLinker ( IDirect3DDevice9 *  device,
UINT  size,
ID3DXFragmentLinker **  linker 
)

Definition at line 2311 of file shader.c.

2312{
2313 TRACE("device %p, size %u, linker %p.\n", device, size, linker);
2314
2315 return D3DXCreateFragmentLinkerEx(device, size, 0, linker);
2316}
HRESULT WINAPI D3DXCreateFragmentLinkerEx(IDirect3DDevice9 *device, UINT size, DWORD flags, ID3DXFragmentLinker **linker)
Definition: shader.c:2288
GLsizeiptr size
Definition: glext.h:5919
Definition: devices.h:37

◆ D3DXCreateFragmentLinkerEx()

HRESULT WINAPI D3DXCreateFragmentLinkerEx ( IDirect3DDevice9 *  device,
UINT  size,
DWORD  flags,
ID3DXFragmentLinker **  linker 
)

Definition at line 2288 of file shader.c.

2290{
2292
2293 TRACE("device %p, size %u, flags %#lx, linker %p.\n", device, size, flags, linker);
2294
2295 object = calloc(1, sizeof(*object));
2296 if (!object)
2297 return E_OUTOFMEMORY;
2298
2299 object->ID3DXFragmentLinker_iface.lpVtbl = &d3dx9_fragment_linker_vtbl;
2300 object->ref = 1;
2301
2303 object->device = device;
2304 object->flags = flags;
2305
2306 *linker = &object->ID3DXFragmentLinker_iface;
2307
2308 return S_OK;
2309}
#define IDirect3DDevice9_AddRef(p)
Definition: d3d9.h:1335
static const struct ID3DXFragmentLinkerVtbl d3dx9_fragment_linker_vtbl
Definition: shader.c:2269
#define S_OK
Definition: intsafe.h:52
#define calloc
Definition: rosglue.h:14
struct IDirect3DDevice9 * device
Definition: shader.c:2109

◆ D3DXCreateTextureShader()

HRESULT WINAPI D3DXCreateTextureShader ( const DWORD *  pFunction,
ID3DXTextureShader **  ppTextureShader 
)

Definition at line 2644 of file shader.c.

2645{
2647 unsigned int size;
2648 HRESULT hr;
2649
2650 TRACE("function %p, texture_shader %p.\n", function, texture_shader);
2651
2652 if (!function || !texture_shader)
2653 return D3DERR_INVALIDCALL;
2654
2655 if (*function != FOURCC_TX_1)
2656 return D3DXERR_INVALIDDATA;
2657
2658 if (!(size = D3DXGetShaderSize(function)))
2659 return D3DXERR_INVALIDDATA;
2660
2661 if (!(object = calloc(1, sizeof(*object))))
2662 return E_OUTOFMEMORY;
2663
2664 object->ID3DXTextureShader_iface.lpVtbl = &d3dx9_texture_shader_vtbl;
2665 object->ref = 1;
2666
2667 if (FAILED(hr = D3DXCreateBuffer(size, &object->byte_code)))
2668 {
2669 IUnknown_Release(&object->ID3DXTextureShader_iface);
2670 return hr;
2671 }
2672 memcpy(ID3DXBuffer_GetBufferPointer(object->byte_code), function, size);
2673
2674 if (FAILED(hr = d3dx_init_parameters_store(&object->parameters, 0)))
2675 {
2676 IUnknown_Release(&object->ID3DXTextureShader_iface);
2677 return hr;
2678 }
2679
2681 size, D3DXPT_FLOAT, &object->eval, &object->version_counter, NULL, 0)))
2682 {
2683 IUnknown_Release(&object->ID3DXTextureShader_iface);
2684 return hr;
2685 }
2686
2687 *texture_shader = &object->ID3DXTextureShader_iface;
2688
2689 return D3D_OK;
2690}
#define D3DERR_INVALIDCALL
Definition: d3d10_private.h:42
#define D3D_OK
Definition: d3d.h:106
#define FOURCC_TX_1
Definition: d3dx9_private.h:34
HRESULT d3dx_create_param_eval(struct d3dx_parameters_store *parameters, void *byte_code, unsigned int byte_code_size, D3DXPARAMETER_TYPE type, struct d3dx_param_eval **peval, ULONG64 *version_counter, const char **skip_constants, unsigned int skip_constants_count)
Definition: preshader.c:1232
HRESULT d3dx_init_parameters_store(struct d3dx_parameters_store *store, unsigned int count)
Definition: effect.c:743
HRESULT WINAPI D3DXCreateBuffer(DWORD size, ID3DXBuffer **buffer)
Definition: core.c:127
UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code)
Definition: shader.c:82
static const struct ID3DXTextureShaderVtbl d3dx9_texture_shader_vtbl
Definition: shader.c:2603
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878

◆ D3DXDisassembleShader()

HRESULT WINAPI D3DXDisassembleShader ( const DWORD *  pShader,
BOOL  EnableColorCode,
const char *  pComments,
struct ID3DXBuffer **  ppDisassembly 
)

Definition at line 2366 of file shader.c.

2368{
2369 TRACE("shader %p, colorcode %d, comments %s, buffer %p.\n", shader, colorcode, debugstr_a(comments), buffer);
2370
2372 comments, (ID3DBlob **)buffer);
2373}
#define D3D_DISASM_ENABLE_COLOR_CODE
Definition: d3dcompiler.h:76
HRESULT WINAPI D3DDisassemble(const void *data, SIZE_T size, UINT flags, const char *comments, ID3DBlob **disassembly)
Definition: compiler.c:668
char comments[4096]

◆ D3DXFindShaderComment()

HRESULT WINAPI D3DXFindShaderComment ( const DWORD *  byte_code,
DWORD  fourcc,
const void **  data,
UINT *  size 
)

Definition at line 141 of file shader.c.

142{
143 const DWORD *ptr = byte_code;
145
146 TRACE("byte_code %p, fourcc %#lx, data %p, size %p.\n", byte_code, fourcc, data, size);
147
148 if (data) *data = NULL;
149 if (size) *size = 0;
150
151 if (!byte_code) return D3DERR_INVALIDCALL;
152
153 version = *ptr >> 16;
154 if (version != 0x4658 /* FX */
155 && version != 0x5458 /* TX */
156 && version != 0x7ffe
157 && version != 0x7fff
158 && version != 0xfffe /* VS */
159 && version != 0xffff) /* PS */
160 {
161 WARN("Invalid data supplied\n");
162 return D3DXERR_INVALIDDATA;
163 }
164
165 while (*++ptr != D3DSIO_END)
166 {
167 /* Check if it is a comment */
169 {
171
172 /* Check if this is the comment we are looking for */
173 if (*(ptr + 1) == fourcc)
174 {
175 UINT ctab_size = (comment_size - 1) * sizeof(DWORD);
176 const void *ctab_data = ptr + 2;
177 if (size)
178 *size = ctab_size;
179 if (data)
180 *data = ctab_data;
181 TRACE("Returning comment data at %p with size %d\n", ctab_data, ctab_size);
182 return D3D_OK;
183 }
184 ptr += comment_size;
185 }
186 }
187
188 return S_FALSE;
189}
#define WARN(fmt,...)
Definition: precomp.h:61
#define D3DSI_OPCODE_MASK
Definition: d3d8types.h:306
#define D3DSI_COMMENTSIZE_SHIFT
Definition: d3d8types.h:479
#define D3DSI_COMMENTSIZE_MASK
Definition: d3d8types.h:480
@ D3DSIO_COMMENT
Definition: d3d8types.h:364
@ D3DSIO_END
Definition: d3d8types.h:365
static const WCHAR version[]
Definition: asmname.c:66
static PVOID ptr
Definition: dispmode.c:27
#define S_FALSE
Definition: winerror.h:3451

◆ D3DXGetPixelShaderProfile()

const char *WINAPI D3DXGetPixelShaderProfile ( struct IDirect3DDevice9 *  device)

Definition at line 34 of file shader.c.

35{
36 D3DCAPS9 caps;
37
38 TRACE("device %p\n", device);
39
40 if (!device) return NULL;
41
43
44 switch (caps.PixelShaderVersion)
45 {
46 case D3DPS_VERSION(1, 1):
47 return "ps_1_1";
48
49 case D3DPS_VERSION(1, 2):
50 return "ps_1_2";
51
52 case D3DPS_VERSION(1, 3):
53 return "ps_1_3";
54
55 case D3DPS_VERSION(1, 4):
56 return "ps_1_4";
57
58 case D3DPS_VERSION(2, 0):
59 if ((caps.PS20Caps.NumTemps>=22) &&
60 (caps.PS20Caps.Caps&D3DPS20CAPS_ARBITRARYSWIZZLE) &&
61 (caps.PS20Caps.Caps&D3DPS20CAPS_GRADIENTINSTRUCTIONS) &&
62 (caps.PS20Caps.Caps&D3DPS20CAPS_PREDICATION) &&
63 (caps.PS20Caps.Caps&D3DPS20CAPS_NODEPENDENTREADLIMIT) &&
64 (caps.PS20Caps.Caps&D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT))
65 {
66 return "ps_2_a";
67 }
68 if ((caps.PS20Caps.NumTemps>=32) &&
70 {
71 return "ps_2_b";
72 }
73 return "ps_2_0";
74
75 case D3DPS_VERSION(3, 0):
76 return "ps_3_0";
77 }
78
79 return NULL;
80}
return
Definition: dirsup.c:529
#define D3DPS_VERSION(major, minor)
Definition: d3d8types.h:474
#define IDirect3DDevice9_GetDeviceCaps(p, a)
Definition: d3d9.h:1342
#define D3DPS20CAPS_NODEPENDENTREADLIMIT
Definition: d3d9caps.h:228
#define D3DPS20CAPS_GRADIENTINSTRUCTIONS
Definition: d3d9caps.h:226
#define D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT
Definition: d3d9caps.h:229
#define D3DPS20CAPS_PREDICATION
Definition: d3d9caps.h:227
#define D3DPS20CAPS_ARBITRARYSWIZZLE
Definition: d3d9caps.h:225
if(dx< 0)
Definition: linetemp.h:194
DWORD PixelShaderVersion
Definition: d3d9caps.h:315
D3DPSHADERCAPS2_0 PS20Caps
Definition: d3d9caps.h:327

◆ D3DXGetShaderConstantTable()

HRESULT WINAPI D3DXGetShaderConstantTable ( const DWORD *  byte_code,
ID3DXConstantTable **  constant_table 
)

Definition at line 2097 of file shader.c.

2098{
2099 TRACE("(%p, %p): Forwarded to D3DXGetShaderConstantTableEx\n", byte_code, constant_table);
2100
2101 return D3DXGetShaderConstantTableEx(byte_code, 0, constant_table);
2102}
HRESULT WINAPI D3DXGetShaderConstantTableEx(const DWORD *byte_code, DWORD flags, ID3DXConstantTable **constant_table)
Definition: shader.c:1977

◆ D3DXGetShaderConstantTableEx()

HRESULT WINAPI D3DXGetShaderConstantTableEx ( const DWORD *  byte_code,
DWORD  flags,
ID3DXConstantTable **  constant_table 
)

Definition at line 1977 of file shader.c.

1978{
1979 struct ID3DXConstantTableImpl *object = NULL;
1980 const void *data;
1981 HRESULT hr;
1982 UINT size;
1983 const D3DXSHADER_CONSTANTTABLE *ctab_header;
1984 const D3DXSHADER_CONSTANTINFO *constant_info;
1985 DWORD i;
1986
1987 TRACE("byte_code %p, flags %#lx, constant_table %p.\n", byte_code, flags, constant_table);
1988
1989 if (constant_table)
1991
1992 if (!byte_code || !constant_table)
1993 {
1994 WARN("Invalid argument specified.\n");
1995 return D3DERR_INVALIDCALL;
1996 }
1997
1998 if (!is_valid_bytecode(*byte_code))
1999 {
2000 WARN("Invalid byte_code specified.\n");
2001 return D3D_OK;
2002 }
2003
2005 FIXME("Flags %#lx not handled.\n", flags);
2006
2007 hr = D3DXFindShaderComment(byte_code, MAKEFOURCC('C','T','A','B'), &data, &size);
2008 if (hr != D3D_OK)
2009 {
2010 WARN("CTAB not found.\n");
2011 return D3DXERR_INVALIDDATA;
2012 }
2013
2014 if (size < sizeof(*ctab_header))
2015 {
2016 WARN("Invalid CTAB size.\n");
2017 return D3DXERR_INVALIDDATA;
2018 }
2019
2020 ctab_header = (const D3DXSHADER_CONSTANTTABLE *)data;
2021 if (ctab_header->Size != sizeof(*ctab_header))
2022 {
2023 WARN("Invalid D3DXSHADER_CONSTANTTABLE size.\n");
2024 return D3DXERR_INVALIDDATA;
2025 }
2026
2027 object = calloc(1, sizeof(*object));
2028 if (!object)
2029 return E_OUTOFMEMORY;
2030
2031 object->ID3DXConstantTable_iface.lpVtbl = &ID3DXConstantTable_Vtbl;
2032 object->ref = 1;
2033
2034 object->ctab = malloc(size);
2035 if (!object->ctab)
2036 {
2037 ERR("Out of memory\n");
2038 free(object);
2039 return E_OUTOFMEMORY;
2040 }
2041 object->size = size;
2042 memcpy(object->ctab, data, object->size);
2043
2044 object->flags = flags;
2045 object->desc.Creator = ctab_header->Creator ? object->ctab + ctab_header->Creator : NULL;
2046 object->desc.Version = ctab_header->Version;
2047 object->desc.Constants = ctab_header->Constants;
2048 TRACE("Creator %s, Version %#lx, Constants %u, Target %s.\n",
2049 debugstr_a(object->desc.Creator), object->desc.Version, object->desc.Constants,
2050 debugstr_a(ctab_header->Target ? object->ctab + ctab_header->Target : NULL));
2051
2052 object->constants = calloc(object->desc.Constants, sizeof(*object->constants));
2053 if (!object->constants)
2054 {
2055 ERR("Out of memory\n");
2056 hr = E_OUTOFMEMORY;
2057 goto error;
2058 }
2059
2060 constant_info = (const D3DXSHADER_CONSTANTINFO *)(object->ctab + ctab_header->ConstantInfo);
2061 for (i = 0; i < ctab_header->Constants; i++)
2062 {
2063 DWORD offset = constant_info[i].DefaultValue;
2064
2065 hr = parse_ctab_constant_type(object->ctab, constant_info[i].TypeInfo,
2066 &object->constants[i], FALSE, constant_info[i].RegisterIndex,
2067 constant_info[i].RegisterIndex + constant_info[i].RegisterCount,
2068 offset ? &offset : NULL, constant_info[i].Name, constant_info[i].RegisterSet);
2069 if (hr != D3D_OK)
2070 goto error;
2071
2072 /*
2073 * Set the register count, it may differ for D3DXRS_INT4, because somehow
2074 * it makes the assumption that the register size is 1 instead of 4, so the
2075 * count is 4 times bigger. This holds true only for toplevel shader
2076 * constants. The count of elements and members is always based on a
2077 * register size of 4.
2078 */
2079 if (object->constants[i].desc.RegisterSet == D3DXRS_INT4)
2080 {
2081 object->constants[i].desc.RegisterCount = constant_info[i].RegisterCount;
2082 }
2083 object->constants[i].constantinfo_reserved = constant_info[i].Reserved;
2084 }
2085
2086 *constant_table = &object->ID3DXConstantTable_iface;
2087
2088 return D3D_OK;
2089
2090error:
2091 free_constant_table(object);
2092 free(object);
2093
2094 return hr;
2095}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define ERR(fmt,...)
Definition: precomp.h:57
#define FALSE
Definition: types.h:117
static void free_constant_table(struct ID3DXConstantTableImpl *table)
Definition: shader.c:728
HRESULT WINAPI D3DXFindShaderComment(const DWORD *byte_code, DWORD fourcc, const void **data, UINT *size)
Definition: shader.c:141
static BOOL is_valid_bytecode(DWORD token)
Definition: shader.c:29
static HRESULT parse_ctab_constant_type(const char *ctab, DWORD typeoffset, struct ctab_constant *constant, BOOL is_element, WORD index, WORD max_index, DWORD *offset, DWORD nameoffset, UINT regset)
Definition: shader.c:1839
static const struct ID3DXConstantTableVtbl ID3DXConstantTable_Vtbl
Definition: shader.c:1805
#define MAKEFOURCC(ch0, ch1, ch2, ch3)
Definition: ddsformat.c:45
#define D3DXCONSTTABLE_LARGEADDRESSAWARE
Definition: d3dx9shader.h:46
GLintptr offset
Definition: glext.h:5920
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
#define error(str)
Definition: mkdosfs.c:1605

◆ D3DXGetShaderInputSemantics()

HRESULT WINAPI D3DXGetShaderInputSemantics ( const DWORD *  byte_code,
D3DXSEMANTIC *  semantics,
UINT *  count 
)

Definition at line 2992 of file shader.c.

2993{
2994 TRACE("byte_code %p, semantics %p, count %p.\n", byte_code, semantics, count);
2995
2996 return get_shader_semantics(byte_code, semantics, count, FALSE);
2997}
static HRESULT get_shader_semantics(const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count, BOOL output)
Definition: shader.c:2791
GLuint GLuint GLsizei count
Definition: gl.h:1545

◆ D3DXGetShaderOuputSemantics()

HRESULT WINAPI D3DXGetShaderOuputSemantics ( const DWORD *  byte_code,
D3DXSEMANTIC *  semantics,
UINT *  count 
)

◆ D3DXGetShaderOutputSemantics()

HRESULT WINAPI D3DXGetShaderOutputSemantics ( const DWORD *  pFunction,
D3DXSEMANTIC *  pSemantics,
UINT *  pCount 
)

Definition at line 2999 of file shader.c.

3000{
3001 TRACE("byte_code %p, semantics %p, count %p.\n", byte_code, semantics, count);
3002
3003 return get_shader_semantics(byte_code, semantics, count, TRUE);
3004}
#define TRUE
Definition: types.h:120

◆ D3DXGetShaderSamplers()

HRESULT WINAPI D3DXGetShaderSamplers ( const DWORD *  byte_code,
const char **  samplers,
UINT *  count 
)

Definition at line 2318 of file shader.c.

2319{
2320 UINT i, sampler_count = 0;
2321 UINT size;
2322 const char *data;
2323 const D3DXSHADER_CONSTANTTABLE *ctab_header;
2324 const D3DXSHADER_CONSTANTINFO *constant_info;
2325
2326 TRACE("byte_code %p, samplers %p, count %p\n", byte_code, samplers, count);
2327
2328 if (count) *count = 0;
2329
2330 if (D3DXFindShaderComment(byte_code, MAKEFOURCC('C','T','A','B'), (const void **)&data, &size) != D3D_OK)
2331 return D3D_OK;
2332
2333 if (size < sizeof(*ctab_header)) return D3D_OK;
2334
2335 ctab_header = (const D3DXSHADER_CONSTANTTABLE *)data;
2336 if (ctab_header->Size != sizeof(*ctab_header)) return D3D_OK;
2337
2338 constant_info = (const D3DXSHADER_CONSTANTINFO *)(data + ctab_header->ConstantInfo);
2339 for (i = 0; i < ctab_header->Constants; i++)
2340 {
2342
2343 TRACE("name = %s\n", data + constant_info[i].Name);
2344
2345 type = (const D3DXSHADER_TYPEINFO *)(data + constant_info[i].TypeInfo);
2346
2347 if (type->Type == D3DXPT_SAMPLER
2348 || type->Type == D3DXPT_SAMPLER1D
2349 || type->Type == D3DXPT_SAMPLER2D
2350 || type->Type == D3DXPT_SAMPLER3D
2351 || type->Type == D3DXPT_SAMPLERCUBE)
2352 {
2353 if (samplers) samplers[sampler_count] = data + constant_info[i].Name;
2354
2355 ++sampler_count;
2356 }
2357 }
2358
2359 TRACE("Found %u samplers\n", sampler_count);
2360
2361 if (count) *count = sampler_count;
2362
2363 return D3D_OK;
2364}
LPWSTR Name
Definition: desk.c:124
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint * samplers
Definition: glext.h:7280
__in WDFOBJECT __in PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
Definition: handleapi.cpp:601

◆ D3DXGetShaderSize()

UINT WINAPI D3DXGetShaderSize ( const DWORD *  byte_code)

Definition at line 82 of file shader.c.

83{
84 const DWORD *ptr = byte_code;
85
86 TRACE("byte_code %p\n", byte_code);
87
88 if (!ptr) return 0;
89
90 /* Look for the END token, skipping the VERSION token */
91 while (*++ptr != D3DSIO_END)
92 {
93 /* Skip comments */
95 {
97 }
98 }
99 ++ptr;
100
101 /* Return the shader size in bytes */
102 return (ptr - byte_code) * sizeof(*ptr);
103}

◆ D3DXGetShaderVersion()

DWORD WINAPI D3DXGetShaderVersion ( const DWORD *  byte_code)

Definition at line 105 of file shader.c.

106{
107 TRACE("byte_code %p\n", byte_code);
108
109 return byte_code ? *byte_code : 0;
110}

◆ D3DXGetVertexShaderProfile()

const char *WINAPI D3DXGetVertexShaderProfile ( struct IDirect3DDevice9 *  device)

Definition at line 112 of file shader.c.

113{
114 D3DCAPS9 caps;
115
116 TRACE("device %p\n", device);
117
118 if (!device) return NULL;
119
121
122 switch (caps.VertexShaderVersion)
123 {
124 case D3DVS_VERSION(1, 1):
125 return "vs_1_1";
126 case D3DVS_VERSION(2, 0):
127 if ((caps.VS20Caps.NumTemps>=13) &&
128 (caps.VS20Caps.DynamicFlowControlDepth==24) &&
129 (caps.VS20Caps.Caps&D3DPS20CAPS_PREDICATION))
130 {
131 return "vs_2_a";
132 }
133 return "vs_2_0";
134 case D3DVS_VERSION(3, 0):
135 return "vs_3_0";
136 }
137
138 return NULL;
139}
#define D3DVS_VERSION(major, minor)
Definition: d3d8types.h:475
DWORD VertexShaderVersion
Definition: d3d9caps.h:313

◆ D3DXPreprocessShader()

HRESULT WINAPI D3DXPreprocessShader ( const char *  data,
UINT  data_len,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 588 of file shader.c.

590{
591 TRACE("data %s, data_len %u, defines %p, include %p, shader %p, error_messages %p.\n",
593
594 return D3DPreprocess(data, data_len, NULL,
597}
HRESULT WINAPI D3DPreprocess(const void *data, SIZE_T size, const char *filename, const D3D_SHADER_MACRO *defines, ID3DInclude *include, ID3DBlob **shader, ID3DBlob **error_messages)
Definition: compiler.c:652

◆ D3DXPreprocessShaderFromFileA()

HRESULT WINAPI D3DXPreprocessShaderFromFileA ( const char *  filename,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 599 of file shader.c.

601{
602 WCHAR *filename_w = NULL;
603 DWORD len;
604 HRESULT ret;
605
606 TRACE("filename %s, defines %p, include %p, shader %p, error_messages %p.\n",
608
609 if (!filename) return D3DXERR_INVALIDDATA;
610
612 filename_w = malloc(len * sizeof(WCHAR));
613 if (!filename_w) return E_OUTOFMEMORY;
614 MultiByteToWideChar(CP_ACP, 0, filename, -1, filename_w, len);
615
617
618 free(filename_w);
619 return ret;
620}
HRESULT WINAPI D3DXPreprocessShaderFromFileW(const WCHAR *filename, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:622

◆ D3DXPreprocessShaderFromFileW()

HRESULT WINAPI D3DXPreprocessShaderFromFileW ( const WCHAR *  filename,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 622 of file shader.c.

624{
625 struct d3dx_include_from_file include_from_file;
626 const void *buffer;
627 char *filename_a;
628 HRESULT hr;
629 UINT len;
630
631 TRACE("filename %s, defines %p, include %p, shader %p, error_messages %p.\n",
633
634 if (!include)
635 {
636 include_from_file.ID3DXInclude_iface.lpVtbl = &d3dx_include_from_file_vtbl;
637 include = &include_from_file.ID3DXInclude_iface;
638 }
639
641 filename_a = malloc(len * sizeof(char));
642 if (!filename_a)
643 return E_OUTOFMEMORY;
644 WideCharToMultiByte(CP_ACP, 0, filename, -1, filename_a, len, NULL, NULL);
645
648 if (FAILED(hr))
649 {
651 free(filename_a);
652 return D3DXERR_INVALIDDATA;
653 }
654
656 (const D3D_SHADER_MACRO *)defines,
659
662 free(filename_a);
663 return hr;
664}

◆ D3DXPreprocessShaderFromResourceA()

HRESULT WINAPI D3DXPreprocessShaderFromResourceA ( HMODULE  module,
const char *  resource,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 666 of file shader.c.

668{
669 void *buffer;
670 HRSRC res;
671 DWORD len;
672
673 TRACE("module %p, resource %s, defines %p, include %p, shader %p, error_messages %p.\n",
675
676 if (!(res = FindResourceA(module, resource, (const char *)RT_RCDATA)))
677 return D3DXERR_INVALIDDATA;
679 return D3DXERR_INVALIDDATA;
682}
HRESULT WINAPI D3DXPreprocessShader(const char *data, UINT data_len, const D3DXMACRO *defines, ID3DXInclude *include, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
Definition: shader.c:588

◆ D3DXPreprocessShaderFromResourceW()

HRESULT WINAPI D3DXPreprocessShaderFromResourceW ( HMODULE  module,
const WCHAR *  resource,
const D3DXMACRO *  defines,
ID3DXInclude *  include,
ID3DXBuffer **  shader,
ID3DXBuffer **  error_messages 
)

Definition at line 684 of file shader.c.

686{
687 void *buffer;
688 HRSRC res;
689 DWORD len;
690
691 TRACE("module %p, resource %s, defines %p, include %p, shader %p, error_messages %p.\n",
693
694 if (!(res = FindResourceW(module, resource, (const WCHAR *)RT_RCDATA)))
695 return D3DXERR_INVALIDDATA;
697 return D3DXERR_INVALIDDATA;
700
701}

◆ DECLARE_INTERFACE()

DECLARE_INTERFACE ( ID3DXInclude  )

Definition at line 295 of file d3dx9shader.h.

296{
297 STDMETHOD(Open)(THIS_ D3DXINCLUDE_TYPE include_type, const char *filename,
298 const void *parent_data, const void **data, UINT *bytes) PURE;
299 STDMETHOD(Close)(THIS_ const void *data) PURE;
300};
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
#define PURE
Definition: basetyps.h:64
#define THIS_
Definition: basetyps.h:65
#define STDMETHOD(m)
Definition: basetyps.h:62
#define Open
Definition: syshdrs.h:62
@ Close
Definition: sacdrv.h:268

◆ DECLARE_INTERFACE_() [1/3]

DECLARE_INTERFACE_ ( ID3DXConstantTable  ,
ID3DXBuffer   
)

Definition at line 128 of file d3dx9shader.h.

129{
130 /*** IUnknown methods ***/
134 /*** ID3DXBuffer methods ***/
135 STDMETHOD_(void *, GetBufferPointer)(THIS) PURE;
136 STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
137 /*** ID3DXConstantTable methods ***/
139 STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE;
140 STDMETHOD_(UINT, GetSamplerIndex)(THIS_ D3DXHANDLE hConstant) PURE;
141 STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
142 STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE constant, const char *name) PURE;
143 STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
146 const void *data, UINT data_size) PURE;
149 const BOOL *values, UINT value_count) PURE;
152 const INT *values, UINT value_count) PURE;
155 const float *values, UINT value_count) PURE;
158 const D3DXVECTOR4 *values, UINT value_count) PURE;
161 const D3DXMATRIX *values, UINT value_count) PURE;
163 const D3DXMATRIX **values, UINT value_count) PURE;
165 const D3DXMATRIX *value) PURE;
167 const D3DXMATRIX *values, UINT value_count) PURE;
169 const D3DXMATRIX **values, UINT value_count) PURE;
170};
#define THIS
Definition: basetyps.h:66
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
void SetDefaults()
Definition: butterflies.c:37
_In_ BOOLEAN Release
Definition: cdrom.h:920
_Check_return_ _In_ PQUERY_INTERFACE QueryInterface
Definition: dispmprt.h:1318
const char * D3DXHANDLE
Definition: d3dx9shader.h:48
DWORD IDirect3DDevice9
Definition: dxva2api.idl:22
unsigned int BOOL
Definition: ntddk_ex.h:94
GLboolean GLenum GLenum GLvoid * values
Definition: glext.h:5666
@ SetMatrixTransposePointerArray
Definition: shader.c:2181
@ SetMatrixArray
Definition: shader.c:2180
@ SetIntArray
Definition: shader.c:2179
@ SetVectorArray
Definition: shader.c:2180
@ SetMatrixPointerArray
Definition: shader.c:2181
@ SetBoolArray
Definition: shader.c:2179
@ SetBool
Definition: shader.c:2179
@ SetVector
Definition: shader.c:2180
@ SetMatrixTransposeArray
Definition: shader.c:2180
@ SetMatrix
Definition: shader.c:2179
@ SetValue
Definition: shader.c:2181
@ SetFloat
Definition: shader.c:2179
@ SetFloatArray
Definition: shader.c:2179
@ SetInt
Definition: shader.c:2179
@ SetMatrixTranspose
Definition: shader.c:2180
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:83
#define REFIID
Definition: guiddef.h:118
Definition: name.c:39
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
Definition: pdh_main.c:64
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
_In_ WDFCOLLECTION _In_ ULONG Index

◆ DECLARE_INTERFACE_() [2/3]

DECLARE_INTERFACE_ ( ID3DXFragmentLinker  ,
IUnknown   
)

Definition at line 319 of file d3dx9shader.h.

320{
324
326 STDMETHOD_(UINT, GetNumberOfFragments)(THIS) PURE;
327
328 STDMETHOD_(D3DXHANDLE, GetFragmentHandleByIndex)(THIS_ UINT index) PURE;
329 STDMETHOD_(D3DXHANDLE, GetFragmentHandleByName)(THIS_ const char *name) PURE;
330 STDMETHOD(GetFragmentDesc)(THIS_ D3DXHANDLE name, D3DXFRAGMENT_DESC *frag_desc) PURE;
331
332 STDMETHOD(AddFragments)(THIS_ const DWORD *fragments) PURE;
333
334 STDMETHOD(GetAllFragments)(THIS_ ID3DXBuffer **buffer) PURE;
336
337 STDMETHOD(LinkShader)(THIS_ const char *profile, DWORD flags, const D3DXHANDLE *fragmenthandles, UINT fragments, ID3DXBuffer **buffer, ID3DXBuffer **errors) PURE;
338 STDMETHOD(LinkVertexShader)(THIS_ const char *profile, DWORD flags, const D3DXHANDLE *fragment_handles, UINT fragments, IDirect3DVertexShader9 **shader, ID3DXBuffer **errors) PURE;
339 STDMETHOD(LinkPixelShader)(THIS_ const char *profile, DWORD flags, const D3DXHANDLE *fragment_handles, UINT fragments, IDirect3DPixelShader9 **shader, ID3DXBuffer **errors) PURE;
340
341 STDMETHOD(ClearCache)(THIS) PURE;
342};
#define index(s, c)
Definition: various.h:29
struct ID3DXBuffer ID3DXBuffer
Definition: d3dx8core.h:51
return pList GetDevice()
REFIID LPVOID * ppv
Definition: atlbase.h:39

◆ DECLARE_INTERFACE_() [3/3]

DECLARE_INTERFACE_ ( ID3DXTextureShader  ,
IUnknown   
)

Definition at line 244 of file d3dx9shader.h.

245{
249 STDMETHOD(GetFunction)(THIS_ struct ID3DXBuffer **ppFunction) PURE;
250 STDMETHOD(GetConstantBuffer)(THIS_ struct ID3DXBuffer **ppConstantBuffer) PURE;
252 STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE;
253 STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
254 STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE hConstant, const char *pName) PURE;
255 STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
257 STDMETHOD(SetValue)(THIS_ D3DXHANDLE hConstant, const void *pData, UINT Bytes) PURE;
259 STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hConstant, const BOOL *pb, UINT Count) PURE;
263 STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hConstant, const FLOAT *pf, UINT Count) PURE;
264 STDMETHOD(SetVector)(THIS_ D3DXHANDLE hConstant, const D3DXVECTOR4 *pVector) PURE;
265 STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hConstant, const D3DXVECTOR4 *pVector, UINT Count) PURE;
266 STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hConstant, const D3DXMATRIX *pMatrix) PURE;
267 STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hConstant, const D3DXMATRIX *pMatrix, UINT Count) PURE;
269 STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hConstant, const D3DXMATRIX *pMatrix) PURE;
272};
GLdouble n
Definition: glext.h:7729
REFIID riid
Definition: atlbase.h:39
#define f
Definition: ke_i.h:83
#define b
Definition: ke_i.h:79
_In_ UINT Bytes
Definition: mmcopy.h:9
static LPSTR pName
Definition: security.c:86
static int pints_t pn[]
Definition: server.c:148
int Count
Definition: noreturn.cpp:7
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
float FLOAT
Definition: typedefs.h:69

◆ DEFINE_GUID() [1/3]

DEFINE_GUID ( IID_ID3DXConstantTable  ,
0x9dca3190  ,
0x38b9  ,
0x4fc3  ,
0x92  ,
0xe3  ,
0x39  ,
0xc6  ,
0xdd  ,
0xfb  ,
0x35  ,
0x8b   
)

◆ DEFINE_GUID() [2/3]

DEFINE_GUID ( IID_ID3DXFragmentLinker  ,
0x1a2c0cc2  ,
0xe5b6  ,
0x4ebc  ,
0x9e  ,
0x8d  ,
0x39  ,
0xe  ,
0x5  ,
0x78  ,
0x11  ,
0xb6   
)

◆ DEFINE_GUID() [3/3]

DEFINE_GUID ( IID_ID3DXTextureShader  ,
0x3e3d67f8  ,
0xaa7a  ,
0x405d  ,
0xa8  ,
0x57  ,
0xba  ,
0x1  ,
0xd4  ,
0x75  ,
0x84  ,
0x26   
)