ReactOS 0.4.17-dev-966-gf06eace
shader.c File Reference
#include <assert.h>
#include "d3dx9_private.h"
#include "d3dcommon.h"
#include "d3dcompiler.h"
Include dependency graph for shader.c:

Go to the source code of this file.

Classes

struct  ID3DXConstantTableImpl
 
struct  d3dx9_fragment_linker
 
struct  d3dx9_texture_shader
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3dx)
 
static BOOL is_valid_bytecode (DWORD token)
 
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)
 
static BOOL WINAPI load_d3dassemble_once (INIT_ONCE *once, void *param, void **context)
 
HRESULT WINAPI D3DXAssembleShader (const char *data, UINT data_len, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_messages)
 
static HRESULT WINAPI d3dx_include_from_file_open (ID3DXInclude *iface, D3DXINCLUDE_TYPE include_type, const char *filename, const void *parent_data, const void **data, UINT *bytes)
 
static HRESULT WINAPI d3dx_include_from_file_close (ID3DXInclude *iface, const void *data)
 
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 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)
 
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)
 
static void free_constant (struct ctab_constant *constant)
 
static void free_constant_table (struct ID3DXConstantTableImpl *table)
 
static struct ID3DXConstantTableImpl * impl_from_ID3DXConstantTable (ID3DXConstantTable *iface)
 
static BOOL is_vertex_shader (DWORD version)
 
static D3DXHANDLE handle_from_constant (struct ctab_constant *constant)
 
static struct ctab_constant * get_constant_by_name (struct ID3DXConstantTableImpl *table, struct ctab_constant *constant, const char *name)
 
static struct ctab_constant * get_constant_element_by_name (struct ctab_constant *constant, const char *name)
 
static struct ctab_constant * is_valid_sub_constant (struct ctab_constant *parent, D3DXHANDLE handle)
 
static struct ctab_constant * get_valid_constant (struct ID3DXConstantTableImpl *table, D3DXHANDLE handle)
 
static HRESULT WINAPI ID3DXConstantTableImpl_QueryInterface (ID3DXConstantTable *iface, REFIID riid, void **out)
 
static ULONG WINAPI ID3DXConstantTableImpl_AddRef (ID3DXConstantTable *iface)
 
static ULONG WINAPI ID3DXConstantTableImpl_Release (ID3DXConstantTable *iface)
 
static void *WINAPI ID3DXConstantTableImpl_GetBufferPointer (ID3DXConstantTable *iface)
 
static DWORD WINAPI ID3DXConstantTableImpl_GetBufferSize (ID3DXConstantTable *iface)
 
static HRESULT WINAPI ID3DXConstantTableImpl_GetDesc (ID3DXConstantTable *iface, D3DXCONSTANTTABLE_DESC *desc)
 
const struct ctab_constant * d3dx_shader_get_ctab_constant (ID3DXConstantTable *iface, D3DXHANDLE constant)
 
static HRESULT WINAPI ID3DXConstantTableImpl_GetConstantDesc (ID3DXConstantTable *iface, D3DXHANDLE constant, D3DXCONSTANT_DESC *desc, UINT *count)
 
static UINT WINAPI ID3DXConstantTableImpl_GetSamplerIndex (ID3DXConstantTable *iface, D3DXHANDLE constant)
 
static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstant (ID3DXConstantTable *iface, D3DXHANDLE constant, UINT index)
 
static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstantByName (ID3DXConstantTable *iface, D3DXHANDLE constant, const char *name)
 
static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstantElement (ID3DXConstantTable *iface, D3DXHANDLE constant, UINT index)
 
static DWORD get_index (const void **indata, UINT index, BOOL is_pointer)
 
static UINT set (struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, struct ctab_constant *constant, const void **indata, D3DXPARAMETER_TYPE intype, UINT *size, UINT incol, D3DXPARAMETER_CLASS inclass, UINT index, BOOL is_pointer)
 
static HRESULT set_scalar (struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, D3DXPARAMETER_TYPE intype)
 
static HRESULT set_scalar_array (struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, UINT count, D3DXPARAMETER_TYPE intype)
 
static HRESULT set_vector (struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, D3DXPARAMETER_TYPE intype)
 
static HRESULT set_vector_array (struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, UINT count, D3DXPARAMETER_TYPE intype)
 
static HRESULT set_matrix_array (struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, UINT count, BOOL transpose)
 
static HRESULT set_matrix_pointer_array (struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void **indata, UINT count, BOOL transpose)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetDefaults (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetValue (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const void *data, unsigned int bytes)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetBool (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, BOOL b)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetBoolArray (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const BOOL *b, UINT count)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetInt (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, INT n)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetIntArray (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const INT *n, UINT count)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetFloat (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, float f)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetFloatArray (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const float *f, UINT count)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetVector (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXVECTOR4 *vector)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetVectorArray (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXVECTOR4 *vector, UINT count)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrix (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *matrix)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixArray (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *matrix, UINT count)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixPointerArray (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX **matrix, UINT count)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTranspose (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *matrix)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposeArray (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *matrix, UINT count)
 
static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposePointerArray (struct ID3DXConstantTable *iface, struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX **matrix, UINT count)
 
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)
 
HRESULT WINAPI D3DXGetShaderConstantTableEx (const DWORD *byte_code, DWORD flags, ID3DXConstantTable **constant_table)
 
HRESULT WINAPI D3DXGetShaderConstantTable (const DWORD *byte_code, ID3DXConstantTable **constant_table)
 
static struct d3dx9_fragment_linker * impl_from_ID3DXFragmentLinker (ID3DXFragmentLinker *iface)
 
static HRESULT WINAPI d3dx9_fragment_linker_QueryInterface (ID3DXFragmentLinker *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3dx9_fragment_linker_AddRef (ID3DXFragmentLinker *iface)
 
static ULONG WINAPI d3dx9_fragment_linker_Release (ID3DXFragmentLinker *iface)
 
static HRESULT WINAPI d3dx9_fragment_linker_GetDevice (ID3DXFragmentLinker *iface, struct IDirect3DDevice9 **device)
 
static UINT WINAPI d3dx9_fragment_linker_GetNumberOfFragments (ID3DXFragmentLinker *iface)
 
static D3DXHANDLE WINAPI d3dx9_fragment_linker_GetFragmentHandleByIndex (ID3DXFragmentLinker *iface, UINT index)
 
static D3DXHANDLE WINAPI d3dx9_fragment_linker_GetFragmentHandleByName (ID3DXFragmentLinker *iface, const char *name)
 
static HRESULT WINAPI d3dx9_fragment_linker_GetFragmentDesc (ID3DXFragmentLinker *iface, D3DXHANDLE name, D3DXFRAGMENT_DESC *desc)
 
static HRESULT WINAPI d3dx9_fragment_linker_AddFragments (ID3DXFragmentLinker *iface, const DWORD *fragments)
 
static HRESULT WINAPI d3dx9_fragment_linker_GetAllFragments (ID3DXFragmentLinker *iface, ID3DXBuffer **buffer)
 
static HRESULT WINAPI d3dx9_fragment_linker_GetFragment (ID3DXFragmentLinker *iface, D3DXHANDLE name, ID3DXBuffer **buffer)
 
static HRESULT WINAPI d3dx9_fragment_linker_LinkShader (ID3DXFragmentLinker *iface, const char *profile, DWORD flags, const D3DXHANDLE *handles, UINT fragment_count, ID3DXBuffer **buffer, ID3DXBuffer **errors)
 
static HRESULT WINAPI d3dx9_fragment_linker_LinkVertexShader (ID3DXFragmentLinker *iface, const char *profile, DWORD flags, const D3DXHANDLE *handles, UINT fragment_count, IDirect3DVertexShader9 **shader, ID3DXBuffer **errors)
 
static HRESULT WINAPI d3dx9_fragment_linker_LinkPixelShader (ID3DXFragmentLinker *iface, const char *profile, DWORD flags, const D3DXHANDLE *handles, UINT fragment_count, IDirect3DPixelShader9 **shader, ID3DXBuffer **errors)
 
static HRESULT WINAPI d3dx9_fragment_linker_ClearCache (ID3DXFragmentLinker *iface)
 
HRESULT WINAPI D3DXCreateFragmentLinkerEx (IDirect3DDevice9 *device, UINT size, DWORD flags, ID3DXFragmentLinker **linker)
 
HRESULT WINAPI D3DXCreateFragmentLinker (IDirect3DDevice9 *device, UINT size, ID3DXFragmentLinker **linker)
 
HRESULT WINAPI D3DXGetShaderSamplers (const DWORD *byte_code, const char **samplers, UINT *count)
 
HRESULT WINAPI D3DXDisassembleShader (const DWORD *shader, BOOL colorcode, const char *comments, ID3DXBuffer **buffer)
 
static struct d3dx9_texture_shader * impl_from_ID3DXTextureShader (ID3DXTextureShader *iface)
 
static HRESULT WINAPI d3dx9_texture_shader_QueryInterface (ID3DXTextureShader *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3dx9_texture_shader_AddRef (ID3DXTextureShader *iface)
 
static ULONG WINAPI d3dx9_texture_shader_Release (ID3DXTextureShader *iface)
 
static HRESULT WINAPI d3dx9_texture_shader_GetFunction (ID3DXTextureShader *iface, struct ID3DXBuffer **function)
 
static HRESULT WINAPI d3dx9_texture_shader_GetConstantBuffer (ID3DXTextureShader *iface, struct ID3DXBuffer **constant_buffer)
 
static HRESULT WINAPI d3dx9_texture_shader_GetDesc (ID3DXTextureShader *iface, D3DXCONSTANTTABLE_DESC *desc)
 
static HRESULT WINAPI d3dx9_texture_shader_GetConstantDesc (ID3DXTextureShader *iface, D3DXHANDLE constant, D3DXCONSTANT_DESC *constant_desc, UINT *count)
 
static D3DXHANDLE WINAPI d3dx9_texture_shader_GetConstant (ID3DXTextureShader *iface, D3DXHANDLE constant, UINT index)
 
static D3DXHANDLE WINAPI d3dx9_texture_shader_GetConstantByName (ID3DXTextureShader *iface, D3DXHANDLE constant, const char *name)
 
static D3DXHANDLE WINAPI d3dx9_texture_shader_GetConstantElement (ID3DXTextureShader *iface, D3DXHANDLE constant, UINT index)
 
static HRESULT WINAPI d3dx9_texture_shader_SetDefaults (ID3DXTextureShader *iface)
 
static HRESULT WINAPI d3dx9_texture_shader_SetValue (ID3DXTextureShader *iface, D3DXHANDLE constant, const void *data, UINT bytes)
 
static HRESULT WINAPI d3dx9_texture_shader_SetBool (ID3DXTextureShader *iface, D3DXHANDLE constant, BOOL b)
 
static HRESULT WINAPI d3dx9_texture_shader_SetBoolArray (ID3DXTextureShader *iface, D3DXHANDLE constant, const BOOL *b, UINT count)
 
static HRESULT WINAPI d3dx9_texture_shader_SetInt (ID3DXTextureShader *iface, D3DXHANDLE constant, INT n)
 
static HRESULT WINAPI d3dx9_texture_shader_SetIntArray (ID3DXTextureShader *iface, D3DXHANDLE constant, const INT *n, UINT count)
 
static HRESULT WINAPI d3dx9_texture_shader_SetFloat (ID3DXTextureShader *iface, D3DXHANDLE constant, FLOAT f)
 
static HRESULT WINAPI d3dx9_texture_shader_SetFloatArray (ID3DXTextureShader *iface, D3DXHANDLE constant, const FLOAT *f, UINT count)
 
static HRESULT WINAPI d3dx9_texture_shader_SetVector (ID3DXTextureShader *iface, D3DXHANDLE constant, const D3DXVECTOR4 *vector)
 
static HRESULT WINAPI d3dx9_texture_shader_SetVectorArray (ID3DXTextureShader *iface, D3DXHANDLE constant, const D3DXVECTOR4 *vector, UINT count)
 
static HRESULT WINAPI d3dx9_texture_shader_SetMatrix (ID3DXTextureShader *iface, D3DXHANDLE constant, const D3DXMATRIX *matrix)
 
static HRESULT WINAPI d3dx9_texture_shader_SetMatrixArray (ID3DXTextureShader *iface, D3DXHANDLE constant, const D3DXMATRIX *matrix, UINT count)
 
static HRESULT WINAPI d3dx9_texture_shader_SetMatrixPointerArray (ID3DXTextureShader *iface, D3DXHANDLE constant, const D3DXMATRIX **matrix, UINT count)
 
static HRESULT WINAPI d3dx9_texture_shader_SetMatrixTranspose (ID3DXTextureShader *iface, D3DXHANDLE constant, const D3DXMATRIX *matrix)
 
static HRESULT WINAPI d3dx9_texture_shader_SetMatrixTransposeArray (ID3DXTextureShader *iface, D3DXHANDLE constant, const D3DXMATRIX *matrix, UINT count)
 
static HRESULT WINAPI d3dx9_texture_shader_SetMatrixTransposePointerArray (ID3DXTextureShader *iface, D3DXHANDLE constant, const D3DXMATRIX **matrix, UINT count)
 
static struct d3dx9_texture_shader * unsafe_impl_from_ID3DXTextureShader (ID3DXTextureShader *iface)
 
HRESULT WINAPI D3DXCreateTextureShader (const DWORD *function, ID3DXTextureShader **texture_shader)
 
void WINAPI texture_shader_fill_2d (D3DXVECTOR4 *out, const D3DXVECTOR2 *texcoord, const D3DXVECTOR2 *texelsize, void *data)
 
void WINAPI texture_shader_fill_3d (D3DXVECTOR4 *out, const D3DXVECTOR3 *texcoord, const D3DXVECTOR3 *texelsize, void *data)
 
HRESULT WINAPI D3DXFillTextureTX (struct IDirect3DTexture9 *texture, ID3DXTextureShader *texture_shader)
 
HRESULT WINAPI D3DXFillCubeTextureTX (struct IDirect3DCubeTexture9 *cube, ID3DXTextureShader *texture_shader)
 
static unsigned int get_instr_length (const DWORD *byte_code, unsigned int major, unsigned int minor)
 
static HRESULT get_shader_semantics (const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count, BOOL output)
 
HRESULT WINAPI D3DXGetShaderInputSemantics (const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count)
 
HRESULT WINAPI D3DXGetShaderOutputSemantics (const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count)
 

Variables

static const void * main_file_data
 
static CRITICAL_SECTION_DEBUG from_file_mutex_debug
 
CRITICAL_SECTION from_file_mutex = {&from_file_mutex_debug, -1, 0, 0, 0, 0}
 
const struct ID3DXIncludeVtbl d3dx_include_from_file_vtbl
 
static const struct ID3DXConstantTableVtbl ID3DXConstantTable_Vtbl
 
static const struct ID3DXFragmentLinkerVtbl d3dx9_fragment_linker_vtbl
 
static const struct ID3DXTextureShaderVtbl d3dx9_texture_shader_vtbl
 

Function Documentation

◆ d3dx9_fragment_linker_AddFragments()

static HRESULT WINAPI d3dx9_fragment_linker_AddFragments ( ID3DXFragmentLinker *  iface,
const DWORD *  fragments 
)
static

Definition at line 2210 of file shader.c.

2211{
2212 FIXME("iface %p, fragments %p: stub.\n", iface, fragments);
2213
2214 return E_NOTIMPL;
2215}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ d3dx9_fragment_linker_AddRef()

static ULONG WINAPI d3dx9_fragment_linker_AddRef ( ID3DXFragmentLinker *  iface)
static

Definition at line 2135 of file shader.c.

2136{
2138 ULONG refcount = InterlockedIncrement(&linker->ref);
2139
2140 TRACE("%p increasing refcount to %lu.\n", linker, refcount);
2141
2142 return refcount;
2143}
#define InterlockedIncrement
Definition: armddk.h:53
static struct d3dx9_fragment_linker * impl_from_ID3DXFragmentLinker(ID3DXFragmentLinker *iface)
Definition: shader.c:2113
#define TRACE(s)
Definition: solgame.cpp:4
uint32_t ULONG
Definition: typedefs.h:59

◆ d3dx9_fragment_linker_ClearCache()

static HRESULT WINAPI d3dx9_fragment_linker_ClearCache ( ID3DXFragmentLinker *  iface)
static

Definition at line 2262 of file shader.c.

2263{
2264 FIXME("iface %p: stub.\n", iface);
2265
2266 return E_NOTIMPL;
2267}

◆ d3dx9_fragment_linker_GetAllFragments()

static HRESULT WINAPI d3dx9_fragment_linker_GetAllFragments ( ID3DXFragmentLinker *  iface,
ID3DXBuffer **  buffer 
)
static

Definition at line 2217 of file shader.c.

2218{
2219 FIXME("iface %p, buffer %p: stub.\n", iface, buffer);
2220
2221 return E_NOTIMPL;
2222}
GLuint buffer
Definition: glext.h:5915

◆ d3dx9_fragment_linker_GetDevice()

static HRESULT WINAPI d3dx9_fragment_linker_GetDevice ( ID3DXFragmentLinker *  iface,
struct IDirect3DDevice9 **  device 
)
static

Definition at line 2161 of file shader.c.

2162{
2164
2165 TRACE("iface %p, device %p.\n", linker, device);
2166
2167 if (!device)
2168 {
2169 WARN("Invalid argument supplied.\n");
2170 return D3DERR_INVALIDCALL;
2171 }
2172
2174 *device = linker->device;
2175 TRACE("Returning device %p.\n", *device);
2176
2177 return S_OK;
2178}
#define WARN(fmt,...)
Definition: precomp.h:61
#define D3DERR_INVALIDCALL
Definition: d3d10_private.h:42
#define IDirect3DDevice9_AddRef(p)
Definition: d3d9.h:1335
#define S_OK
Definition: intsafe.h:52
struct IDirect3DDevice9 * device
Definition: shader.c:2109
Definition: devices.h:37

◆ d3dx9_fragment_linker_GetFragment()

static HRESULT WINAPI d3dx9_fragment_linker_GetFragment ( ID3DXFragmentLinker *  iface,
D3DXHANDLE  name,
ID3DXBuffer **  buffer 
)
static

Definition at line 2224 of file shader.c.

2226{
2227 FIXME("iface %p, name %p, buffer %p: stub.\n", iface, name, buffer);
2228
2229 return E_NOTIMPL;
2230}
Definition: name.c:39

◆ d3dx9_fragment_linker_GetFragmentDesc()

static HRESULT WINAPI d3dx9_fragment_linker_GetFragmentDesc ( ID3DXFragmentLinker *  iface,
D3DXHANDLE  name,
D3DXFRAGMENT_DESC *  desc 
)
static

Definition at line 2202 of file shader.c.

2204{
2205 FIXME("iface %p, name %p, desc %p: stub.\n", iface, name, desc);
2206
2207 return E_NOTIMPL;
2208}
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683

◆ d3dx9_fragment_linker_GetFragmentHandleByIndex()

static D3DXHANDLE WINAPI d3dx9_fragment_linker_GetFragmentHandleByIndex ( ID3DXFragmentLinker *  iface,
UINT  index 
)
static

Definition at line 2187 of file shader.c.

2188{
2189 FIXME("iface %p, index %u: stub.\n", iface, index);
2190
2191 return NULL;
2192}
#define NULL
Definition: types.h:112
GLuint index
Definition: glext.h:6031

◆ d3dx9_fragment_linker_GetFragmentHandleByName()

static D3DXHANDLE WINAPI d3dx9_fragment_linker_GetFragmentHandleByName ( ID3DXFragmentLinker *  iface,
const char *  name 
)
static

Definition at line 2194 of file shader.c.

2196{
2197 FIXME("iface %p, name %s: stub.\n", iface, debugstr_a(name));
2198
2199 return NULL;
2200}
#define debugstr_a
Definition: kernel32.h:31

◆ d3dx9_fragment_linker_GetNumberOfFragments()

static UINT WINAPI d3dx9_fragment_linker_GetNumberOfFragments ( ID3DXFragmentLinker *  iface)
static

Definition at line 2180 of file shader.c.

2181{
2182 FIXME("iface %p: stub.\n", iface);
2183
2184 return E_NOTIMPL;
2185}

◆ d3dx9_fragment_linker_LinkPixelShader()

static HRESULT WINAPI d3dx9_fragment_linker_LinkPixelShader ( ID3DXFragmentLinker *  iface,
const char *  profile,
DWORD  flags,
const D3DXHANDLE *  handles,
UINT  fragment_count,
IDirect3DPixelShader9 **  shader,
ID3DXBuffer **  errors 
)
static

Definition at line 2252 of file shader.c.

2255{
2256 FIXME("iface %p, profile %s, flags %#lx, handles %p, fragment_count %u, shader %p, errors %p: stub.\n",
2257 iface, debugstr_a(profile), flags, handles, fragment_count, shader, errors);
2258
2259 return E_NOTIMPL;
2260}
GLuint shader
Definition: glext.h:6030
GLbitfield flags
Definition: glext.h:7161
#define profile
Definition: kernel32.h:12
static EFI_HANDLE * handles
Definition: uefidisk.c:66

◆ d3dx9_fragment_linker_LinkShader()

static HRESULT WINAPI d3dx9_fragment_linker_LinkShader ( ID3DXFragmentLinker *  iface,
const char *  profile,
DWORD  flags,
const D3DXHANDLE *  handles,
UINT  fragment_count,
ID3DXBuffer **  buffer,
ID3DXBuffer **  errors 
)
static

Definition at line 2232 of file shader.c.

2235{
2236 FIXME("iface %p, profile %s, flags %#lx, handles %p, fragment_count %u, buffer %p, errors %p: stub.\n",
2237 iface, debugstr_a(profile), flags, handles, fragment_count, buffer, errors);
2238
2239 return E_NOTIMPL;
2240}

◆ d3dx9_fragment_linker_LinkVertexShader()

static HRESULT WINAPI d3dx9_fragment_linker_LinkVertexShader ( ID3DXFragmentLinker *  iface,
const char *  profile,
DWORD  flags,
const D3DXHANDLE *  handles,
UINT  fragment_count,
IDirect3DVertexShader9 **  shader,
ID3DXBuffer **  errors 
)
static

Definition at line 2242 of file shader.c.

2245{
2246 FIXME("iface %p, profile %s, flags %#lx, handles %p, fragment_count %u, shader %p, errors %p: stub.\n",
2247 iface, debugstr_a(profile), flags, handles, fragment_count, shader, errors);
2248
2249 return E_NOTIMPL;
2250}

◆ d3dx9_fragment_linker_QueryInterface()

static HRESULT WINAPI d3dx9_fragment_linker_QueryInterface ( ID3DXFragmentLinker *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 2118 of file shader.c.

2119{
2120 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
2121
2123 || IsEqualGUID(riid, &IID_ID3DXFragmentLinker))
2124 {
2125 iface->lpVtbl->AddRef(iface);
2126 *out = iface;
2127 return D3D_OK;
2128 }
2129
2130 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
2131 *out = NULL;
2132 return E_NOINTERFACE;
2133}
const GUID IID_IUnknown
#define D3D_OK
Definition: d3d.h:106
REFIID riid
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ d3dx9_fragment_linker_Release()

static ULONG WINAPI d3dx9_fragment_linker_Release ( ID3DXFragmentLinker *  iface)
static

Definition at line 2145 of file shader.c.

2146{
2148 ULONG refcount = InterlockedDecrement(&linker->ref);
2149
2150 TRACE("%p decreasing refcount to %lu.\n", linker, refcount);
2151
2152 if (!refcount)
2153 {
2155 free(linker);
2156 }
2157
2158 return refcount;
2159}
#define InterlockedDecrement
Definition: armddk.h:52
#define IDirect3DDevice9_Release(p)
Definition: d3d9.h:1336
#define free
Definition: debug_ros.c:5

◆ d3dx9_texture_shader_AddRef()

static ULONG WINAPI d3dx9_texture_shader_AddRef ( ID3DXTextureShader *  iface)
static

Definition at line 2408 of file shader.c.

2409{
2410 struct d3dx9_texture_shader *texture_shader = impl_from_ID3DXTextureShader(iface);
2411 ULONG refcount = InterlockedIncrement(&texture_shader->ref);
2412
2413 TRACE("%p increasing refcount to %lu.\n", texture_shader, refcount);
2414
2415 return refcount;
2416}
static struct d3dx9_texture_shader * impl_from_ID3DXTextureShader(ID3DXTextureShader *iface)
Definition: shader.c:2386

◆ d3dx9_texture_shader_GetConstant()

static D3DXHANDLE WINAPI d3dx9_texture_shader_GetConstant ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
UINT  index 
)
static

Definition at line 2470 of file shader.c.

2471{
2472 FIXME("iface %p, constant %p, index %u stub.\n", iface, constant, index);
2473
2474 return NULL;
2475}

◆ d3dx9_texture_shader_GetConstantBuffer()

static HRESULT WINAPI d3dx9_texture_shader_GetConstantBuffer ( ID3DXTextureShader *  iface,
struct ID3DXBuffer **  constant_buffer 
)
static

Definition at line 2449 of file shader.c.

2450{
2451 FIXME("iface %p, constant_buffer %p stub.\n", iface, constant_buffer);
2452
2453 return E_NOTIMPL;
2454}

◆ d3dx9_texture_shader_GetConstantByName()

static D3DXHANDLE WINAPI d3dx9_texture_shader_GetConstantByName ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const char *  name 
)
static

Definition at line 2477 of file shader.c.

2478{
2479 FIXME("iface %p, constant %p, name %s stub.\n", iface, constant, debugstr_a(name));
2480
2481 return NULL;
2482}

◆ d3dx9_texture_shader_GetConstantDesc()

static HRESULT WINAPI d3dx9_texture_shader_GetConstantDesc ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
D3DXCONSTANT_DESC *  constant_desc,
UINT *  count 
)
static

Definition at line 2463 of file shader.c.

2464{
2465 FIXME("iface %p, constant %p, constant_desc %p, count %p stub.\n", iface, constant, constant_desc, count);
2466
2467 return E_NOTIMPL;
2468}
GLuint GLuint GLsizei count
Definition: gl.h:1545

◆ d3dx9_texture_shader_GetConstantElement()

static D3DXHANDLE WINAPI d3dx9_texture_shader_GetConstantElement ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
UINT  index 
)
static

Definition at line 2484 of file shader.c.

2485{
2486 FIXME("iface %p, constant %p, index %u stub.\n", iface, constant, index);
2487
2488 return NULL;
2489}

◆ d3dx9_texture_shader_GetDesc()

static HRESULT WINAPI d3dx9_texture_shader_GetDesc ( ID3DXTextureShader *  iface,
D3DXCONSTANTTABLE_DESC *  desc 
)
static

Definition at line 2456 of file shader.c.

2457{
2458 FIXME("iface %p, desc %p stub.\n", iface, desc);
2459
2460 return E_NOTIMPL;
2461}

◆ d3dx9_texture_shader_GetFunction()

static HRESULT WINAPI d3dx9_texture_shader_GetFunction ( ID3DXTextureShader *  iface,
struct ID3DXBuffer **  function 
)
static

Definition at line 2437 of file shader.c.

2438{
2439 struct d3dx9_texture_shader *texture_shader = impl_from_ID3DXTextureShader(iface);
2440
2441 TRACE("iface %p, function %p.\n", iface, function);
2442
2443 *function = texture_shader->byte_code;
2444 ID3DXBuffer_AddRef(*function);
2445
2446 return S_OK;
2447}
#define ID3DXBuffer_AddRef(p)
Definition: d3dx9core.h:82
ID3DXBuffer * byte_code
Definition: shader.c:2380

◆ d3dx9_texture_shader_QueryInterface()

static HRESULT WINAPI d3dx9_texture_shader_QueryInterface ( ID3DXTextureShader *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 2391 of file shader.c.

2392{
2393 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
2394
2395 if (IsEqualGUID(riid, &IID_IUnknown) ||
2396 IsEqualGUID(riid, &IID_ID3DXTextureShader))
2397 {
2398 iface->lpVtbl->AddRef(iface);
2399 *out = iface;
2400 return D3D_OK;
2401 }
2402
2403 WARN("Interface %s not found.\n", debugstr_guid(riid));
2404 *out = NULL;
2405 return E_NOINTERFACE;
2406}

◆ d3dx9_texture_shader_Release()

static ULONG WINAPI d3dx9_texture_shader_Release ( ID3DXTextureShader *  iface)
static

Definition at line 2418 of file shader.c.

2419{
2420 struct d3dx9_texture_shader *texture_shader = impl_from_ID3DXTextureShader(iface);
2421 ULONG refcount = InterlockedDecrement(&texture_shader->ref);
2422
2423 TRACE("%p decreasing refcount to %lu.\n", texture_shader, refcount);
2424
2425 if (!refcount)
2426 {
2427 if (texture_shader->byte_code)
2428 ID3DXBuffer_Release(texture_shader->byte_code);
2429 d3dx_free_param_eval(texture_shader->eval);
2430 d3dx_parameters_store_cleanup(&texture_shader->parameters);
2431 free(texture_shader);
2432 }
2433
2434 return refcount;
2435}
void d3dx_free_param_eval(struct d3dx_param_eval *peval)
Definition: preshader.c:1357
void d3dx_parameters_store_cleanup(struct d3dx_parameters_store *store)
Definition: effect.c:754
#define ID3DXBuffer_Release(p)
Definition: d3dx9core.h:83
struct d3dx_param_eval * eval
Definition: shader.c:2383
struct d3dx_parameters_store parameters
Definition: shader.c:2382

◆ d3dx9_texture_shader_SetBool()

static HRESULT WINAPI d3dx9_texture_shader_SetBool ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
BOOL  b 
)
static

Definition at line 2505 of file shader.c.

2506{
2507 FIXME("iface %p, constant %p, b %u stub.\n", iface, constant, b);
2508
2509 return E_NOTIMPL;
2510}
GLboolean GLboolean GLboolean b
Definition: glext.h:6204

◆ d3dx9_texture_shader_SetBoolArray()

static HRESULT WINAPI d3dx9_texture_shader_SetBoolArray ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const BOOL *  b,
UINT  count 
)
static

Definition at line 2512 of file shader.c.

2513{
2514 FIXME("iface %p, constant %p, b %p, count %u stub.\n", iface, constant, b, count);
2515
2516 return E_NOTIMPL;
2517}

◆ d3dx9_texture_shader_SetDefaults()

static HRESULT WINAPI d3dx9_texture_shader_SetDefaults ( ID3DXTextureShader *  iface)
static

Definition at line 2491 of file shader.c.

2492{
2493 FIXME("iface %p stub.\n", iface);
2494
2495 return E_NOTIMPL;
2496}

◆ d3dx9_texture_shader_SetFloat()

static HRESULT WINAPI d3dx9_texture_shader_SetFloat ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
FLOAT  f 
)
static

Definition at line 2533 of file shader.c.

2534{
2535 FIXME("iface %p, constant %p, f %f stub.\n", iface, constant, f);
2536
2537 return E_NOTIMPL;
2538}
GLfloat f
Definition: glext.h:7540

◆ d3dx9_texture_shader_SetFloatArray()

static HRESULT WINAPI d3dx9_texture_shader_SetFloatArray ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const FLOAT *  f,
UINT  count 
)
static

Definition at line 2540 of file shader.c.

2541{
2542 FIXME("iface %p, constant %p, f %p, count %u stub.\n", iface, constant, f, count);
2543
2544 return E_NOTIMPL;
2545}

◆ d3dx9_texture_shader_SetInt()

static HRESULT WINAPI d3dx9_texture_shader_SetInt ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
INT  n 
)
static

Definition at line 2519 of file shader.c.

2520{
2521 FIXME("iface %p, constant %p, n %d stub.\n", iface, constant, n);
2522
2523 return E_NOTIMPL;
2524}
GLdouble n
Definition: glext.h:7729

◆ d3dx9_texture_shader_SetIntArray()

static HRESULT WINAPI d3dx9_texture_shader_SetIntArray ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const INT *  n,
UINT  count 
)
static

Definition at line 2526 of file shader.c.

2527{
2528 FIXME("iface %p, constant %p, n %p, count %u stub.\n", iface, constant, n, count);
2529
2530 return E_NOTIMPL;
2531}

◆ d3dx9_texture_shader_SetMatrix()

static HRESULT WINAPI d3dx9_texture_shader_SetMatrix ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const D3DXMATRIX *  matrix 
)
static

Definition at line 2561 of file shader.c.

2562{
2563 FIXME("iface %p, constant %p, matrix %p stub.\n", iface, constant, matrix);
2564
2565 return E_NOTIMPL;
2566}
GLuint GLenum matrix
Definition: glext.h:9407

◆ d3dx9_texture_shader_SetMatrixArray()

static HRESULT WINAPI d3dx9_texture_shader_SetMatrixArray ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const D3DXMATRIX *  matrix,
UINT  count 
)
static

Definition at line 2568 of file shader.c.

2569{
2570 FIXME("iface %p, constant %p, matrix %p, count %u stub.\n", iface, constant, matrix, count);
2571
2572 return E_NOTIMPL;
2573}

◆ d3dx9_texture_shader_SetMatrixPointerArray()

static HRESULT WINAPI d3dx9_texture_shader_SetMatrixPointerArray ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const D3DXMATRIX **  matrix,
UINT  count 
)
static

Definition at line 2575 of file shader.c.

2576{
2577 FIXME("iface %p, constant %p, matrix %p, count %u stub.\n", iface, constant, matrix, count);
2578
2579 return E_NOTIMPL;
2580}

◆ d3dx9_texture_shader_SetMatrixTranspose()

static HRESULT WINAPI d3dx9_texture_shader_SetMatrixTranspose ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const D3DXMATRIX *  matrix 
)
static

Definition at line 2582 of file shader.c.

2583{
2584 FIXME("iface %p, constant %p, matrix %p stub.\n", iface, constant, matrix);
2585
2586 return E_NOTIMPL;
2587}

◆ d3dx9_texture_shader_SetMatrixTransposeArray()

static HRESULT WINAPI d3dx9_texture_shader_SetMatrixTransposeArray ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const D3DXMATRIX *  matrix,
UINT  count 
)
static

Definition at line 2589 of file shader.c.

2590{
2591 FIXME("iface %p, constant %p, matrix %p, count %u stub.\n", iface, constant, matrix, count);
2592
2593 return E_NOTIMPL;
2594}

◆ d3dx9_texture_shader_SetMatrixTransposePointerArray()

static HRESULT WINAPI d3dx9_texture_shader_SetMatrixTransposePointerArray ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const D3DXMATRIX **  matrix,
UINT  count 
)
static

Definition at line 2596 of file shader.c.

2597{
2598 FIXME("iface %p, constant %p, matrix %p, count %u stub.\n", iface, constant, matrix, count);
2599
2600 return E_NOTIMPL;
2601}

◆ d3dx9_texture_shader_SetValue()

static HRESULT WINAPI d3dx9_texture_shader_SetValue ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const void *  data,
UINT  bytes 
)
static

Definition at line 2498 of file shader.c.

2499{
2500 FIXME("iface %p, constant %p, data %p, bytes %u stub.\n", iface, constant, data, bytes);
2501
2502 return E_NOTIMPL;
2503}
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

◆ d3dx9_texture_shader_SetVector()

static HRESULT WINAPI d3dx9_texture_shader_SetVector ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const D3DXVECTOR4 *  vector 
)
static

Definition at line 2547 of file shader.c.

2548{
2549 FIXME("iface %p, constant %p, vector %p stub.\n", iface, constant, vector);
2550
2551 return E_NOTIMPL;
2552}

◆ d3dx9_texture_shader_SetVectorArray()

static HRESULT WINAPI d3dx9_texture_shader_SetVectorArray ( ID3DXTextureShader *  iface,
D3DXHANDLE  constant,
const D3DXVECTOR4 *  vector,
UINT  count 
)
static

Definition at line 2554 of file shader.c.

2555{
2556 FIXME("iface %p, constant %p, vector %p, count %u stub.\n", iface, constant, vector, count);
2557
2558 return E_NOTIMPL;
2559}

◆ d3dx_include_from_file_close()

static HRESULT WINAPI d3dx_include_from_file_close ( ID3DXInclude *  iface,
const void *  data 
)
static

Definition at line 319 of file shader.c.

320{
321 free(*((char **)data - 1));
322 free((char **)data - 1);
323 if (main_file_data == data)
325 return S_OK;
326}
static const void * main_file_data
Definition: shader.c:231

◆ d3dx_include_from_file_open()

static HRESULT WINAPI d3dx_include_from_file_open ( ID3DXInclude *  iface,
D3DXINCLUDE_TYPE  include_type,
const char *  filename,
const void *  parent_data,
const void **  data,
UINT *  bytes 
)
static

Definition at line 249 of file shader.c.

251{
252 const char *p, *parent_name = "";
253 char *pathname = NULL, *ptr;
254 char **buffer = NULL;
255 HANDLE file;
256 UINT size;
257
258 if (parent_data)
259 {
260 parent_name = *((const char **)parent_data - 1);
261 }
262 else
263 {
264 if (main_file_data)
265 parent_name = *((const char **)main_file_data - 1);
266 }
267
268 TRACE("Looking up include file %s, parent %s.\n", debugstr_a(filename), debugstr_a(parent_name));
269
270 if ((p = strrchr(parent_name, '\\')))
271 ++p;
272 else
273 p = parent_name;
274 pathname = malloc((p - parent_name) + strlen(filename) + 1);
275 if(!pathname)
277
278 memcpy(pathname, parent_name, p - parent_name);
279 strcpy(pathname + (p - parent_name), filename);
280 ptr = pathname + (p - parent_name);
281 while (*ptr)
282 {
283 if (*ptr == '/')
284 *ptr = '\\';
285 ++ptr;
286 }
287
290 goto error;
291
292 TRACE("Include file found at pathname = %s\n", debugstr_a(pathname));
293
296 goto error;
297
298 buffer = malloc(size + sizeof(char *));
299 if(!buffer)
300 goto error;
301 *buffer = pathname;
302 if (!ReadFile(file, buffer + 1, size, (DWORD *)bytes, NULL))
303 goto error;
304
305 *data = buffer + 1;
306 if (!main_file_data)
308
310 return S_OK;
311
312error:
314 free(pathname);
315 free(buffer);
317}
#define malloc
Definition: debug_ros.c:4
#define CloseHandle
Definition: compat.h:739
#define OPEN_EXISTING
Definition: compat.h:775
#define ReadFile(a, b, c, d, e)
Definition: compat.h:742
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define CreateFileA(a, b, c, d, e, f, g)
Definition: compat.h:740
#define GENERIC_READ
Definition: compat.h:135
#define FILE_SHARE_READ
Definition: compat.h:136
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
Definition: fileinfo.c:331
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597
_ACRTIMP char *__cdecl strrchr(const char *, int)
Definition: string.c:3303
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
GLfloat GLfloat p
Definition: glext.h:8902
unsigned int UINT
Definition: sysinfo.c:13
const char * filename
Definition: ioapi.h:137
#define error(str)
Definition: mkdosfs.c:1605
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
char pathname[512]
Definition: util.h:13
static PVOID ptr
Definition: dispmode.c:27
strcpy
Definition: string.h:131
Definition: fci.c:123
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define INVALID_FILE_SIZE
Definition: winbase.h:528
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210

◆ d3dx_shader_get_ctab_constant()

const struct ctab_constant * d3dx_shader_get_ctab_constant ( ID3DXConstantTable *  iface,
D3DXHANDLE  constant 
)

Definition at line 969 of file shader.c.

970{
972
974}
static struct ctab_constant * get_valid_constant(struct ID3DXConstantTableImpl *table, D3DXHANDLE handle)
Definition: shader.c:868
static struct ID3DXConstantTableImpl * impl_from_ID3DXConstantTable(ID3DXConstantTable *iface)
Definition: shader.c:743

Referenced by get_ctab_constant_desc().

◆ 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
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
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

Referenced by assembleshader_test(), D3DXAssembleShaderFromFileW(), D3DXAssembleShaderFromResourceA(), and D3DXAssembleShaderFromResourceW().

◆ 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
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
GLenum GLsizei len
Definition: glext.h:6722
short WCHAR
Definition: pedump.c:58

Referenced by assembleshader_test().

◆ 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
@ D3DXINC_LOCAL
Definition: d3dx9shader.h:288
#define ID3DXInclude_Close(p, a)
Definition: d3dx9shader.h:304
#define ID3DXInclude_Open(p, a, b, c, d, e)
Definition: d3dx9shader.h:303
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_w
Definition: kernel32.h:32
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by assembleshader_test(), and D3DXAssembleShaderFromFileA().

◆ 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

Referenced by assembleshader_test().

◆ 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 *  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 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 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

Referenced by D3DXCompileShaderFromResourceA(), D3DXCompileShaderFromResourceW(), and test_hlsl_double().

◆ 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}

Referenced by D3DXCompileShaderFromFileA().

◆ 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

Referenced by test_fragment_linker().

◆ 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}
static const struct ID3DXFragmentLinkerVtbl d3dx9_fragment_linker_vtbl
Definition: shader.c:2269
#define calloc
Definition: rosglue.h:14

Referenced by D3DXCreateFragmentLinker(), and test_fragment_linker().

◆ D3DXCreateTextureShader()

HRESULT WINAPI D3DXCreateTextureShader ( const DWORD *  function,
ID3DXTextureShader **  texture_shader 
)

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 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
@ D3DXPT_FLOAT
Definition: d3dx9shader.h:76

Referenced by test_texture_shader().

◆ D3DXDisassembleShader()

HRESULT WINAPI D3DXDisassembleShader ( const DWORD *  shader,
BOOL  colorcode,
const char *  comments,
ID3DXBuffer **  buffer 
)

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]

◆ D3DXFillCubeTextureTX()

HRESULT WINAPI D3DXFillCubeTextureTX ( struct IDirect3DCubeTexture9 *  cube,
ID3DXTextureShader *  texture_shader 
)

Definition at line 2749 of file shader.c.

2750{
2752
2753 TRACE("cube %p, texture_shader %p.\n", cube, texture_shader);
2754
2756}
void WINAPI texture_shader_fill_3d(D3DXVECTOR4 *out, const D3DXVECTOR3 *texcoord, const D3DXVECTOR3 *texelsize, void *data)
Definition: shader.c:2716
static struct d3dx9_texture_shader * unsafe_impl_from_ID3DXTextureShader(ID3DXTextureShader *iface)
Definition: shader.c:2635
HRESULT WINAPI D3DXFillCubeTexture(struct IDirect3DCubeTexture9 *texture, LPD3DXFILL3D function, void *funcdata)
Definition: texture.c:1657

Referenced by test_texture_shader().

◆ D3DXFillTextureTX()

HRESULT WINAPI D3DXFillTextureTX ( struct IDirect3DTexture9 *  texture,
ID3DXTextureShader *  texture_shader 
)

Definition at line 2740 of file shader.c.

2741{
2743
2744 TRACE("texture %p, texture_shader %p.\n", texture, texture_shader);
2745
2747}
void WINAPI texture_shader_fill_2d(D3DXVECTOR4 *out, const D3DXVECTOR2 *texcoord, const D3DXVECTOR2 *texelsize, void *data)
Definition: shader.c:2692
HRESULT WINAPI D3DXFillTexture(struct IDirect3DTexture9 *texture, LPD3DXFILL2D function, void *funcdata)
Definition: texture.c:1267
GLenum GLuint texture
Definition: glext.h:6295

Referenced by test_texture_shader().

◆ 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 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
#define S_FALSE
Definition: winerror.h:3451

Referenced by D3DXGetShaderConstantTableEx(), D3DXGetShaderSamplers(), and test_find_shader_comment().

◆ 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

Referenced by D3DXCompileShader(), D3DXCompileShaderFromFileW(), get_constants_desc(), test_constant_table(), test_get_sampler_index(), test_get_shader_constant_variables(), test_registerset(), test_registerset_defaults(), test_SetDefaults(), test_setting_arrays_table(), test_setting_basic_table(), test_setting_matrices_table(), and test_SetValue().

◆ 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 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
@ D3DXRS_INT4
Definition: d3dx9shader.h:54
#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

Referenced by D3DXGetShaderConstantTable(), and test_get_shader_constant_table_ex().

◆ 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

Referenced by test_shader_semantics().

◆ D3DXGetShaderOutputSemantics()

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

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

Referenced by test_shader_semantics().

◆ 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
@ D3DXPT_SAMPLER3D
Definition: d3dx9shader.h:86
@ D3DXPT_SAMPLERCUBE
Definition: d3dx9shader.h:87
@ D3DXPT_SAMPLER
Definition: d3dx9shader.h:83
@ D3DXPT_SAMPLER1D
Definition: d3dx9shader.h:84
@ D3DXPT_SAMPLER2D
Definition: d3dx9shader.h:85
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

Referenced by test_get_shader_samplers().

◆ 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}

Referenced by D3DXCreateTextureShader(), D3DXDisassembleShader(), and test_get_shader_size().

◆ 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}

Referenced by test_get_shader_version().

◆ 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

Referenced by D3DXPreprocessShaderFromResourceA(), and D3DXPreprocessShaderFromResourceW().

◆ 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

Referenced by d3dxpreprocess_test().

◆ 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}

Referenced by d3dxpreprocess_test(), and D3DXPreprocessShaderFromFileA().

◆ 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

Referenced by d3dxpreprocess_test().

◆ 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}

◆ free_constant()

static void free_constant ( struct ctab_constant *  constant)
static

Definition at line 714 of file shader.c.

715{
716 if (constant->constants)
717 {
718 UINT i, count = constant->desc.Elements > 1 ? constant->desc.Elements : constant->desc.StructMembers;
719
720 for (i = 0; i < count; ++i)
721 {
722 free_constant(&constant->constants[i]);
723 }
724 free(constant->constants);
725 }
726}
static void free_constant(struct ctab_constant *constant)
Definition: shader.c:714

Referenced by free_constant(), free_constant_table(), and parse_ctab_constant_type().

◆ free_constant_table()

static void free_constant_table ( struct ID3DXConstantTableImpl *  table)
static

Definition at line 728 of file shader.c.

729{
730 if (table->constants)
731 {
732 UINT i;
733
734 for (i = 0; i < table->desc.Constants; ++i)
735 {
736 free_constant(&table->constants[i]);
737 }
738 free(table->constants);
739 }
740 free(table->ctab);
741}

Referenced by D3DXGetShaderConstantTableEx(), and ID3DXConstantTableImpl_Release().

◆ get_constant_by_name()

static struct ctab_constant * get_constant_by_name ( struct ID3DXConstantTableImpl *  table,
struct ctab_constant *  constant,
const char *  name 
)
static

Definition at line 799 of file shader.c.

801{
802 UINT i, count, length;
803 struct ctab_constant *handles;
804 const char *part;
805
806 TRACE("table %p, constant %p, name %s\n", table, constant, debugstr_a(name));
807
808 if (!name || !*name) return NULL;
809
810 if (!constant)
811 {
812 count = table->desc.Constants;
813 handles = table->constants;
814 }
815 else
816 {
817 count = constant->desc.StructMembers;
818 handles = constant->constants;
819 }
820
821 length = strcspn(name, "[.");
822 part = name + length;
823
824 for (i = 0; i < count; i++)
825 {
827 {
828 switch (*part++)
829 {
830 case '.':
831 return get_constant_by_name(NULL, &handles[i], part);
832
833 case '[':
834 return get_constant_element_by_name(&handles[i], part);
835
836 default:
837 TRACE("Returning parameter %p\n", &handles[i]);
838 return &handles[i];
839 }
840 }
841 }
842
843 TRACE("Constant not found\n");
844 return NULL;
845}
static struct ctab_constant * get_constant_element_by_name(struct ctab_constant *constant, const char *name)
Definition: shader.c:761
static struct ctab_constant * get_constant_by_name(struct ID3DXConstantTableImpl *table, struct ctab_constant *constant, const char *name)
Definition: shader.c:799
_ACRTIMP size_t __cdecl strcspn(const char *, const char *)
Definition: string.c:3498
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
Definition: string.c:3335

Referenced by get_constant_by_name(), get_constant_element_by_name(), get_valid_constant(), and ID3DXConstantTableImpl_GetConstantByName().

◆ get_constant_element_by_name()

static struct ctab_constant * get_constant_element_by_name ( struct ctab_constant *  constant,
const char *  name 
)
static

Definition at line 761 of file shader.c.

762{
763 const char *part;
765
766 TRACE("constant %p, name %s\n", constant, debugstr_a(name));
767
768 if (!name || !*name) return NULL;
769
770 element = atoi(name);
771 part = strchr(name, ']') + 1;
772
773 if (constant->desc.Elements > element)
774 {
775 struct ctab_constant *c = constant->constants ? &constant->constants[element] : constant;
776
777 switch (*part++)
778 {
779 case '.':
780 return get_constant_by_name(NULL, c, part);
781
782 case '[':
783 return get_constant_element_by_name(c, part);
784
785 case '\0':
786 TRACE("Returning parameter %p\n", c);
787 return c;
788
789 default:
790 FIXME("Unhandled case \"%c\"\n", *--part);
791 break;
792 }
793 }
794
795 TRACE("Constant not found\n");
796 return NULL;
797}
_ACRTIMP int __cdecl atoi(const char *)
Definition: string.c:1720
_ACRTIMP char *__cdecl strchr(const char *, int)
Definition: string.c:3291
const GLubyte * c
Definition: glext.h:8905
#define c
Definition: ke_i.h:80

Referenced by get_constant_by_name(), and get_constant_element_by_name().

◆ get_index()

static DWORD get_index ( const void **  indata,
UINT  index,
BOOL  is_pointer 
)
inlinestatic

Definition at line 1076 of file shader.c.

1077{
1078 if (!indata)
1079 return 0;
1080
1081 if (is_pointer)
1082 return ((DWORD **)indata)[index / 16][index % 16];
1083
1084 return (*((DWORD **)indata))[index];
1085}
#define index(s, c)
Definition: various.h:29

Referenced by set().

◆ get_instr_length()

static unsigned int get_instr_length ( const DWORD *  byte_code,
unsigned int  major,
unsigned int  minor 
)
static

Definition at line 2758 of file shader.c.

2759{
2760 DWORD opcode = *byte_code & 0xffff;
2761 unsigned int len = 0;
2762
2763 if (opcode == D3DSIO_COMMENT)
2764 return (*byte_code & D3DSI_COMMENTSIZE_MASK) >> D3DSI_COMMENTSIZE_SHIFT;
2765
2766 if (major > 1)
2767 return (*byte_code & D3DSI_INSTLENGTH_MASK) >> D3DSI_INSTLENGTH_SHIFT;
2768
2769 switch (opcode)
2770 {
2771 case D3DSIO_END:
2772 ERR("Unexpected END token.\n");
2773 return 0;
2774 case D3DSIO_DEF:
2775 case D3DSIO_DEFI:
2776 return 5;
2777 case D3DSIO_DEFB:
2778 return 2;
2779 default:
2780 ++byte_code;
2781 while (*byte_code & 0x80000000)
2782 {
2783 ++byte_code;
2784 ++len;
2785 }
2786 }
2787
2788 return len;
2789}
@ D3DSIO_DEF
Definition: d3d8types.h:353
#define D3DSI_INSTLENGTH_SHIFT
Definition: d3d9types.h:372
@ D3DSIO_DEFB
Definition: d3d9types.h:423
@ D3DSIO_DEFI
Definition: d3d9types.h:424
#define D3DSI_INSTLENGTH_MASK
Definition: d3d9types.h:371
#define major(rdev)
Definition: propsheet.cpp:928

Referenced by get_shader_semantics().

◆ get_shader_semantics()

static HRESULT get_shader_semantics ( const DWORD *  byte_code,
D3DXSEMANTIC *  semantics,
UINT *  count,
BOOL  output 
)
static

Definition at line 2791 of file shader.c.

2792{
2793 static const D3DDECLUSAGE regtype_usage[] =
2794 {
2797 0,
2799 0,
2802 0,
2803 0,
2805 };
2806 static const D3DDECLUSAGE rast_usage[] =
2807 {
2811 };
2812 uint32_t reg_type, usage, index, version_token = *byte_code;
2813 BOOL is_ps = version_token >> 16 == 0xffff;
2814 unsigned int major, minor, i = 0, j;
2815 BYTE colors = 0, rastout = 0;
2816 BOOL has_dcl, depth = 0;
2817 WORD texcoords = 0;
2818
2819 if ((version_token & 0xffff0000) != 0xfffe0000 && (version_token & 0xffff0000) != 0xffff0000)
2820 return D3DXERR_INVALIDDATA;
2821
2822 major = version_token >> 8 & 0xff;
2823 minor = version_token & 0xff;
2824
2825 TRACE("%s shader, version %u.%u.\n", is_ps ? "Pixel" : "Vertex", major, minor);
2826 ++byte_code;
2827
2828 has_dcl = (!is_ps && (!output || major == 3)) || (is_ps && !output && major >= 2);
2829
2830 while (*byte_code != D3DSIO_END)
2831 {
2832 if (has_dcl && (*byte_code & 0xffff) == D3DSIO_DCL)
2833 {
2834 uint32_t usage_token = byte_code[1];
2835 uint32_t reg = byte_code[2];
2836
2839
2840 if (is_ps && !output && major == 2)
2841 {
2842 /* dcl with no explicit usage, look at the register. */
2846 if (reg_type >= ARRAY_SIZE(regtype_usage))
2847 {
2848 WARN("Invalid register type %u.\n", reg_type);
2849 reg_type = 0;
2850 }
2851 usage = regtype_usage[reg_type];
2852 if (semantics)
2853 {
2854 semantics[i].Usage = usage;
2855 semantics[i].UsageIndex = index;
2856 }
2857 ++i;
2858 }
2859 else if ((!output && reg_type == D3DSPR_INPUT) || (output && reg_type == D3DSPR_OUTPUT))
2860 {
2861 if (semantics)
2862 {
2863 semantics[i].Usage =
2865 semantics[i].UsageIndex =
2867 }
2868 ++i;
2869 }
2870 byte_code += 3;
2871 }
2872 else if (!has_dcl)
2873 {
2874 unsigned int len = get_instr_length(byte_code, major, minor) + 1;
2875
2876 switch (*byte_code & 0xffff)
2877 {
2878 case D3DSIO_COMMENT:
2879 case D3DSIO_DEF:
2880 case D3DSIO_DEFB:
2881 case D3DSIO_DEFI:
2882 byte_code += len;
2883 break;
2884 default:
2885 ++byte_code;
2886 while (*byte_code & 0x80000000)
2887 {
2888 reg_type = ((*byte_code & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT)
2889 | ((*byte_code & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2);
2890 index = *byte_code & D3DSP_REGNUM_MASK;
2891
2892 if ((reg_type == D3DSPR_TEMP && is_ps && major == 1)
2893 || (reg_type == D3DSPR_INPUT && is_ps)
2894 || (reg_type == D3DSPR_TEXTURE && is_ps && !output)
2899 {
2900 if (reg_type == D3DSPR_RASTOUT)
2901 rastout |= 1u << index;
2902 else if (reg_type == D3DSPR_DEPTHOUT)
2903 depth = TRUE;
2905 texcoords |= 1u << index;
2906 else
2907 colors |= 1u << index;
2908 }
2909 ++byte_code;
2910 }
2911 }
2912 }
2913 else
2914 {
2915 byte_code += get_instr_length(byte_code, major, minor) + 1;
2916 }
2917 }
2918
2919 if (!has_dcl)
2920 {
2921 i = j = 0;
2922 while (texcoords)
2923 {
2924 if (texcoords & 1)
2925 {
2926 if (semantics)
2927 {
2928 semantics[i].Usage = D3DDECLUSAGE_TEXCOORD;
2929 semantics[i].UsageIndex = j;
2930 }
2931 ++i;
2932 }
2933 texcoords >>= 1;
2934 ++j;
2935 }
2936 j = 0;
2937 while (colors)
2938 {
2939 if (colors & 1)
2940 {
2941 if (semantics)
2942 {
2943 semantics[i].Usage = D3DDECLUSAGE_COLOR;
2944 semantics[i].UsageIndex = j;
2945 }
2946 ++i;
2947 }
2948 colors >>= 1;
2949 ++j;
2950 }
2951 j = 0;
2952 while (rastout)
2953 {
2954 if (rastout & 1)
2955 {
2956 if (j >= ARRAY_SIZE(rast_usage))
2957 {
2958 WARN("Invalid RASTOUT register index.\n");
2959 usage = 0;
2960 }
2961 else
2962 {
2963 usage = rast_usage[j];
2964 }
2965 if (semantics)
2966 {
2967 semantics[i].Usage = usage;
2968 semantics[i].UsageIndex = 0;
2969 }
2970 ++i;
2971 }
2972 rastout >>= 1;
2973 ++j;
2974 }
2975 if (depth)
2976 {
2977 if (semantics)
2978 {
2979 semantics[i].Usage = D3DDECLUSAGE_DEPTH;
2980 semantics[i].UsageIndex = 0;
2981 }
2982 ++i;
2983 }
2984 }
2985
2986 if (count)
2987 *count = i;
2988
2989 return D3D_OK;
2990}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define D3DSP_REGTYPE_MASK
Definition: d3d8types.h:395
#define D3DSP_REGTYPE_SHIFT
Definition: d3d8types.h:394
@ D3DSPR_TEXTURE
Definition: d3d8types.h:402
@ D3DSPR_RASTOUT
Definition: d3d8types.h:403
@ D3DSPR_TEMP
Definition: d3d8types.h:398
@ D3DSPR_INPUT
Definition: d3d8types.h:399
@ D3DSPR_ATTROUT
Definition: d3d8types.h:404
@ D3DDECLUSAGE_FOG
Definition: d3d9types.h:247
@ D3DDECLUSAGE_TEXCOORD
Definition: d3d9types.h:241
@ D3DDECLUSAGE_DEPTH
Definition: d3d9types.h:248
@ D3DDECLUSAGE_POSITION
Definition: d3d9types.h:236
@ D3DDECLUSAGE_PSIZE
Definition: d3d9types.h:240
@ D3DDECLUSAGE_COLOR
Definition: d3d9types.h:246
#define D3DSP_REGTYPE_MASK2
Definition: d3d9types.h:529
#define D3DSP_DCL_USAGE_MASK
Definition: d3d9types.h:479
#define D3DSP_REGTYPE_SHIFT2
Definition: d3d9types.h:527
enum _D3DDECLUSAGE D3DDECLUSAGE
#define D3DSP_DCL_USAGE_SHIFT
Definition: d3d9types.h:478
@ D3DSIO_DCL
Definition: d3d9types.h:407
#define D3DSP_REGNUM_MASK
Definition: d3d9types.h:500
#define D3DSP_DCL_USAGEINDEX_MASK
Definition: d3d9types.h:482
#define D3DSP_DCL_USAGEINDEX_SHIFT
Definition: d3d9types.h:481
@ D3DSPR_DEPTHOUT
Definition: d3d9types.h:544
@ D3DSPR_OUTPUT
Definition: d3d9types.h:541
UINT32 uint32_t
Definition: types.h:75
static unsigned int get_instr_length(const DWORD *byte_code, unsigned int major, unsigned int minor)
Definition: shader.c:2758
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
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 GLint GLint j
Definition: glfuncs.h:250
static int reg
Definition: i386-dis.c:1290
#define minor(rdev)
Definition: propsheet.cpp:929
enum vkd3d_shader_register_type reg_type
Definition: spirv.c:4885
unsigned char BYTE
Definition: xxhash.c:193

Referenced by D3DXGetShaderInputSemantics(), and D3DXGetShaderOutputSemantics().

◆ get_valid_constant()

static struct ctab_constant * get_valid_constant ( struct ID3DXConstantTableImpl *  table,
D3DXHANDLE  handle 
)
inlinestatic

Definition at line 868 of file shader.c.

869{
870 struct ctab_constant *c;
871 UINT i;
872
873 if (!handle) return NULL;
874
875 for (i = 0; i < table->desc.Constants; ++i)
876 {
877 if (handle_from_constant(&table->constants[i]) == handle)
878 return &table->constants[i];
879
880 c = is_valid_sub_constant(&table->constants[i], handle);
881 if (c) return c;
882 }
883
885 return NULL;
886
888}
static D3DXHANDLE handle_from_constant(struct ctab_constant *constant)
Definition: shader.c:753
static struct ctab_constant * is_valid_sub_constant(struct ctab_constant *parent, D3DXHANDLE handle)
Definition: shader.c:847

Referenced by d3dx_shader_get_ctab_constant(), ID3DXConstantTableImpl_GetConstant(), ID3DXConstantTableImpl_GetConstantByName(), ID3DXConstantTableImpl_GetConstantDesc(), ID3DXConstantTableImpl_GetConstantElement(), ID3DXConstantTableImpl_GetSamplerIndex(), ID3DXConstantTableImpl_SetValue(), set_matrix_array(), set_matrix_pointer_array(), set_scalar(), set_scalar_array(), set_vector(), and set_vector_array().

◆ handle_from_constant()

static D3DXHANDLE handle_from_constant ( struct ctab_constant *  constant)
inlinestatic

◆ ID3DXConstantTableImpl_AddRef()

static ULONG WINAPI ID3DXConstantTableImpl_AddRef ( ID3DXConstantTable *  iface)
static

Definition at line 909 of file shader.c.

910{
912 ULONG refcount = InterlockedIncrement(&table->ref);
913
914 TRACE("%p increasing refcount to %lu.\n", table, refcount);
915
916 return refcount;
917}

◆ ID3DXConstantTableImpl_GetBufferPointer()

static void *WINAPI ID3DXConstantTableImpl_GetBufferPointer ( ID3DXConstantTable *  iface)
static

Definition at line 936 of file shader.c.

937{
939
940 TRACE("iface %p.\n", iface);
941
942 return table->ctab;
943}

◆ ID3DXConstantTableImpl_GetBufferSize()

static DWORD WINAPI ID3DXConstantTableImpl_GetBufferSize ( ID3DXConstantTable *  iface)
static

Definition at line 945 of file shader.c.

946{
948
949 TRACE("(%p)->()\n", This);
950
951 return This->size;
952}

◆ ID3DXConstantTableImpl_GetConstant()

static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstant ( ID3DXConstantTable *  iface,
D3DXHANDLE  constant,
UINT  index 
)
static

Definition at line 1013 of file shader.c.

1014{
1016 struct ctab_constant *c;
1017
1018 TRACE("(%p)->(%p, %d)\n", This, constant, index);
1019
1020 if (constant)
1021 {
1023 if (c && index < c->desc.StructMembers)
1024 {
1025 c = &c->constants[index];
1026 TRACE("Returning constant %p\n", c);
1027 return handle_from_constant(c);
1028 }
1029 }
1030 else
1031 {
1032 if (index < This->desc.Constants)
1033 {
1034 c = &This->constants[index];
1035 TRACE("Returning constant %p\n", c);
1036 return handle_from_constant(c);
1037 }
1038 }
1039
1040 WARN("Index out of range\n");
1041 return NULL;
1042}

◆ ID3DXConstantTableImpl_GetConstantByName()

static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstantByName ( ID3DXConstantTable *  iface,
D3DXHANDLE  constant,
const char *  name 
)
static

Definition at line 1044 of file shader.c.

1046{
1049
1050 TRACE("iface %p, constant %p, name %s.\n", iface, constant, debugstr_a(name));
1051
1053 TRACE("Returning constant %p\n", c);
1054
1055 return handle_from_constant(c);
1056}

◆ ID3DXConstantTableImpl_GetConstantDesc()

static HRESULT WINAPI ID3DXConstantTableImpl_GetConstantDesc ( ID3DXConstantTable *  iface,
D3DXHANDLE  constant,
D3DXCONSTANT_DESC *  desc,
UINT *  count 
)
static

Definition at line 976 of file shader.c.

978{
981
982 TRACE("(%p)->(%p, %p, %p)\n", ctab, constant, desc, count);
983
984 if (!c)
985 {
986 WARN("Invalid argument specified\n");
987 return D3DERR_INVALIDCALL;
988 }
989
990 if (desc) *desc = c->desc;
991 if (count) *count = 1;
992
993 return D3D_OK;
994}

◆ ID3DXConstantTableImpl_GetConstantElement()

static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstantElement ( ID3DXConstantTable *  iface,
D3DXHANDLE  constant,
UINT  index 
)
static

Definition at line 1058 of file shader.c.

1059{
1062
1063 TRACE("(%p)->(%p, %d)\n", This, constant, index);
1064
1065 if (c && index < c->desc.Elements)
1066 {
1067 if (c->desc.Elements > 1) c = &c->constants[index];
1068 TRACE("Returning constant %p\n", c);
1069 return handle_from_constant(c);
1070 }
1071
1072 WARN("Invalid argument specified\n");
1073 return NULL;
1074}

◆ ID3DXConstantTableImpl_GetDesc()

static HRESULT WINAPI ID3DXConstantTableImpl_GetDesc ( ID3DXConstantTable *  iface,
D3DXCONSTANTTABLE_DESC *  desc 
)
static

Definition at line 955 of file shader.c.

956{
958
959 TRACE("(%p)->(%p)\n", This, desc);
960
961 if (!desc)
962 return D3DERR_INVALIDCALL;
963
964 *desc = This->desc;
965
966 return D3D_OK;
967}

◆ ID3DXConstantTableImpl_GetSamplerIndex()

static UINT WINAPI ID3DXConstantTableImpl_GetSamplerIndex ( ID3DXConstantTable *  iface,
D3DXHANDLE  constant 
)
static

Definition at line 996 of file shader.c.

997{
1000
1001 TRACE("(%p)->(%p)\n", This, constant);
1002
1003 if (!c || c->desc.RegisterSet != D3DXRS_SAMPLER)
1004 {
1005 WARN("Invalid argument specified\n");
1006 return (UINT)-1;
1007 }
1008
1009 TRACE("Returning RegisterIndex %u\n", c->desc.RegisterIndex);
1010 return c->desc.RegisterIndex;
1011}
@ D3DXRS_SAMPLER
Definition: d3dx9shader.h:56

◆ ID3DXConstantTableImpl_QueryInterface()

static HRESULT WINAPI ID3DXConstantTableImpl_QueryInterface ( ID3DXConstantTable *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 891 of file shader.c.

892{
893 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
894
896 IsEqualGUID(riid, &IID_ID3DXBuffer) ||
897 IsEqualGUID(riid, &IID_ID3DXConstantTable))
898 {
900 *out = iface;
901 return S_OK;
902 }
903
904 WARN("Interface %s not found.\n", debugstr_guid(riid));
905
906 return E_NOINTERFACE;
907}
#define ID3DXConstantTable_AddRef(p)
Definition: d3dx9shader.h:176

◆ ID3DXConstantTableImpl_Release()

static ULONG WINAPI ID3DXConstantTableImpl_Release ( ID3DXConstantTable *  iface)
static

Definition at line 919 of file shader.c.

920{
922 ULONG refcount = InterlockedDecrement(&table->ref);
923
924 TRACE("%p decreasing refcount to %lu.\n", table, refcount);
925
926 if (!refcount)
927 {
929 free(table);
930 }
931
932 return refcount;
933}

◆ ID3DXConstantTableImpl_SetBool()

static HRESULT WINAPI ID3DXConstantTableImpl_SetBool ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
BOOL  b 
)
static

Definition at line 1665 of file shader.c.

1667{
1669
1670 TRACE("iface %p, device %p, constant %p, b %d\n", iface, device, constant, b);
1671
1673}
static HRESULT set_scalar(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, D3DXPARAMETER_TYPE intype)
Definition: shader.c:1394
@ D3DXPT_BOOL
Definition: d3dx9shader.h:74

◆ ID3DXConstantTableImpl_SetBoolArray()

static HRESULT WINAPI ID3DXConstantTableImpl_SetBoolArray ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const BOOL *  b,
UINT  count 
)
static

Definition at line 1675 of file shader.c.

1677{
1679
1680 TRACE("iface %p, device %p, constant %p, b %p, count %d\n", iface, device, constant, b, count);
1681
1683}
static HRESULT set_scalar_array(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, UINT count, D3DXPARAMETER_TYPE intype)
Definition: shader.c:1424

◆ ID3DXConstantTableImpl_SetDefaults()

static HRESULT WINAPI ID3DXConstantTableImpl_SetDefaults ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device 
)
static

Definition at line 1567 of file shader.c.

1569{
1571 UINT i;
1572
1573 TRACE("iface %p, device %p\n", iface, device);
1574
1575 if (!device)
1576 {
1577 WARN("Invalid argument specified\n");
1578 return D3DERR_INVALIDCALL;
1579 }
1580
1581 for (i = 0; i < This->desc.Constants; i++)
1582 {
1583 D3DXCONSTANT_DESC *desc = &This->constants[i].desc;
1584 HRESULT hr;
1585
1586 if (!desc->DefaultValue)
1587 continue;
1588
1589 switch (desc->RegisterSet)
1590 {
1591 case D3DXRS_BOOL:
1592 if (is_vertex_shader(This->desc.Version))
1594 desc->RegisterCount);
1595 else
1597 desc->RegisterCount);
1598 break;
1599
1600 case D3DXRS_INT4:
1601 if (is_vertex_shader(This->desc.Version))
1603 desc->RegisterCount);
1604 else
1606 desc->RegisterCount);
1607 break;
1608
1609 case D3DXRS_FLOAT4:
1610 if (is_vertex_shader(This->desc.Version))
1612 desc->RegisterCount);
1613 else
1615 desc->RegisterCount);
1616 break;
1617
1618 default:
1619 FIXME("Unhandled register set %s\n", debug_d3dxparameter_registerset(desc->RegisterSet));
1620 hr = E_NOTIMPL;
1621 break;
1622 }
1623
1624 if (hr != D3D_OK)
1625 return hr;
1626 }
1627
1628 return D3D_OK;
1629}
#define IDirect3DDevice9_SetPixelShaderConstantI(p, a, b, c)
Definition: d3d9.h:1446
#define IDirect3DDevice9_SetVertexShaderConstantF(p, a, b, c)
Definition: d3d9.h:1429
#define IDirect3DDevice9_SetPixelShaderConstantF(p, a, b, c)
Definition: d3d9.h:1444
#define IDirect3DDevice9_SetVertexShaderConstantI(p, a, b, c)
Definition: d3d9.h:1431
#define IDirect3DDevice9_SetPixelShaderConstantB(p, a, b, c)
Definition: d3d9.h:1448
#define IDirect3DDevice9_SetVertexShaderConstantB(p, a, b, c)
Definition: d3d9.h:1433
const char * debug_d3dxparameter_registerset(D3DXREGISTER_SET r)
Definition: util.c:374
static BOOL is_vertex_shader(DWORD version)
Definition: shader.c:748
@ D3DXRS_FLOAT4
Definition: d3dx9shader.h:55
@ D3DXRS_BOOL
Definition: d3dx9shader.h:53

◆ ID3DXConstantTableImpl_SetFloat()

static HRESULT WINAPI ID3DXConstantTableImpl_SetFloat ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
float  f 
)
static

Definition at line 1705 of file shader.c.

1707{
1709
1710 TRACE("iface %p, device %p, constant %p, f %f\n", iface, device, constant, f);
1711
1713}

◆ ID3DXConstantTableImpl_SetFloatArray()

static HRESULT WINAPI ID3DXConstantTableImpl_SetFloatArray ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const float *  f,
UINT  count 
)
static

Definition at line 1715 of file shader.c.

1717{
1719
1720 TRACE("iface %p, device %p, constant %p, f %p, count %d\n", iface, device, constant, f, count);
1721
1723}

◆ ID3DXConstantTableImpl_SetInt()

static HRESULT WINAPI ID3DXConstantTableImpl_SetInt ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
INT  n 
)
static

Definition at line 1685 of file shader.c.

1687{
1689
1690 TRACE("iface %p, device %p, constant %p, n %d\n", iface, device, constant, n);
1691
1693}
@ D3DXPT_INT
Definition: d3dx9shader.h:75

◆ ID3DXConstantTableImpl_SetIntArray()

static HRESULT WINAPI ID3DXConstantTableImpl_SetIntArray ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const INT *  n,
UINT  count 
)
static

Definition at line 1695 of file shader.c.

1697{
1699
1700 TRACE("iface %p, device %p, constant %p, n %p, count %d\n", iface, device, constant, n, count);
1701
1703}

◆ ID3DXConstantTableImpl_SetMatrix()

static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrix ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const D3DXMATRIX *  matrix 
)
static

Definition at line 1745 of file shader.c.

1747{
1749
1750 TRACE("iface %p, device %p, constant %p, matrix %p\n", iface, device, constant, matrix);
1751
1753}
static HRESULT set_matrix_array(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, UINT count, BOOL transpose)
Definition: shader.c:1509

◆ ID3DXConstantTableImpl_SetMatrixArray()

static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixArray ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const D3DXMATRIX *  matrix,
UINT  count 
)
static

Definition at line 1755 of file shader.c.

1757{
1759
1760 TRACE("iface %p, device %p, constant %p, matrix %p, count %u\n", iface, device, constant, matrix, count);
1761
1763}

◆ ID3DXConstantTableImpl_SetMatrixPointerArray()

static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixPointerArray ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const D3DXMATRIX **  matrix,
UINT  count 
)
static

Definition at line 1765 of file shader.c.

1767{
1769
1770 TRACE("iface %p, device %p, constant %p, matrix %p, count %u)\n", iface, device, constant, matrix, count);
1771
1772 return set_matrix_pointer_array(This, device, constant, (const void **)matrix, count, FALSE);
1773}
static HRESULT set_matrix_pointer_array(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void **indata, UINT count, BOOL transpose)
Definition: shader.c:1538

◆ ID3DXConstantTableImpl_SetMatrixTranspose()

static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTranspose ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const D3DXMATRIX *  matrix 
)
static

Definition at line 1775 of file shader.c.

1777{
1779
1780 TRACE("iface %p, device %p, constant %p, matrix %p\n", iface, device, constant, matrix);
1781
1783}

◆ ID3DXConstantTableImpl_SetMatrixTransposeArray()

static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposeArray ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const D3DXMATRIX *  matrix,
UINT  count 
)
static

Definition at line 1785 of file shader.c.

1787{
1789
1790 TRACE("iface %p, device %p, constant %p, matrix %p, count %u\n", iface, device, constant, matrix, count);
1791
1793}

◆ ID3DXConstantTableImpl_SetMatrixTransposePointerArray()

static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposePointerArray ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const D3DXMATRIX **  matrix,
UINT  count 
)
static

Definition at line 1795 of file shader.c.

1797{
1799
1800 TRACE("iface %p, device %p, constant %p, matrix %p, count %u)\n", iface, device, constant, matrix, count);
1801
1802 return set_matrix_pointer_array(This, device, constant, (const void **)matrix, count, TRUE);
1803}

◆ ID3DXConstantTableImpl_SetValue()

static HRESULT WINAPI ID3DXConstantTableImpl_SetValue ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const void *  data,
unsigned int  bytes 
)
static

Definition at line 1631 of file shader.c.

1633{
1637
1638 TRACE("iface %p, device %p, constant %p, data %p, bytes %u\n", iface, device, constant, data, bytes);
1639
1640 if (!device || !c || !data)
1641 {
1642 WARN("Invalid argument specified\n");
1643 return D3DERR_INVALIDCALL;
1644 }
1645
1646 desc = &c->desc;
1647
1648 switch (desc->Class)
1649 {
1650 case D3DXPC_SCALAR:
1651 case D3DXPC_VECTOR:
1652 case D3DXPC_MATRIX_ROWS:
1654 case D3DXPC_STRUCT:
1655 bytes /= 4;
1656 set(table, device, c, &data, desc->Type, &bytes, desc->Columns, D3DXPC_SCALAR, 0, FALSE);
1657 return D3D_OK;
1658
1659 default:
1660 FIXME("Unhandled parameter class %s\n", debug_d3dxparameter_class(desc->Class));
1661 return D3DERR_INVALIDCALL;
1662 }
1663}
Definition: _set.h:50
const char * debug_d3dxparameter_class(D3DXPARAMETER_CLASS c)
Definition: util.c:328
@ 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_VECTOR
Definition: d3dx9shader.h:63

◆ ID3DXConstantTableImpl_SetVector()

static HRESULT WINAPI ID3DXConstantTableImpl_SetVector ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const D3DXVECTOR4 *  vector 
)
static

Definition at line 1725 of file shader.c.

1727{
1729
1730 TRACE("iface %p, device %p, constant %p, vector %p\n", iface, device, constant, vector);
1731
1733}
static HRESULT set_vector(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, D3DXPARAMETER_TYPE intype)
Definition: shader.c:1451

◆ ID3DXConstantTableImpl_SetVectorArray()

static HRESULT WINAPI ID3DXConstantTableImpl_SetVectorArray ( struct ID3DXConstantTable *  iface,
struct IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const D3DXVECTOR4 *  vector,
UINT  count 
)
static

Definition at line 1735 of file shader.c.

1737{
1739
1740 TRACE("iface %p, device %p, constant %p, vector %p, count %u\n", iface, device, constant, vector, count);
1741
1743}
static HRESULT set_vector_array(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device, D3DXHANDLE constant, const void *indata, UINT count, D3DXPARAMETER_TYPE intype)
Definition: shader.c:1481

◆ impl_from_ID3DXConstantTable()

◆ impl_from_ID3DXFragmentLinker()

static struct d3dx9_fragment_linker * impl_from_ID3DXFragmentLinker ( ID3DXFragmentLinker *  iface)
inlinestatic

Definition at line 2113 of file shader.c.

2114{
2115 return CONTAINING_RECORD(iface, struct d3dx9_fragment_linker, ID3DXFragmentLinker_iface);
2116}

Referenced by d3dx9_fragment_linker_AddRef(), d3dx9_fragment_linker_GetDevice(), and d3dx9_fragment_linker_Release().

◆ impl_from_ID3DXTextureShader()

static struct d3dx9_texture_shader * impl_from_ID3DXTextureShader ( ID3DXTextureShader *  iface)
inlinestatic

Definition at line 2386 of file shader.c.

2387{
2388 return CONTAINING_RECORD(iface, struct d3dx9_texture_shader, ID3DXTextureShader_iface);
2389}

Referenced by d3dx9_texture_shader_AddRef(), d3dx9_texture_shader_GetFunction(), d3dx9_texture_shader_Release(), and unsafe_impl_from_ID3DXTextureShader().

◆ is_valid_bytecode()

static BOOL is_valid_bytecode ( DWORD  token)
inlinestatic

Definition at line 29 of file shader.c.

30{
31 return (token & 0xfffe0000) == 0xfffe0000;
32}
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 token
Definition: glfuncs.h:210

Referenced by D3DXGetShaderConstantTableEx().

◆ is_valid_sub_constant()

static struct ctab_constant * is_valid_sub_constant ( struct ctab_constant *  parent,
D3DXHANDLE  handle 
)
static

Definition at line 847 of file shader.c.

848{
849 struct ctab_constant *c;
850 UINT i, count;
851
852 /* all variable have at least elements = 1, but not always elements */
853 if (!parent->constants) return NULL;
854
855 count = parent->desc.Elements > 1 ? parent->desc.Elements : parent->desc.StructMembers;
856 for (i = 0; i < count; ++i)
857 {
858 if (handle_from_constant(&parent->constants[i]) == handle)
859 return &parent->constants[i];
860
861 c = is_valid_sub_constant(&parent->constants[i], handle);
862 if (c) return c;
863 }
864
865 return NULL;
866}
r parent
Definition: btrfs.c:3010

Referenced by get_valid_constant(), and is_valid_sub_constant().

◆ is_vertex_shader()

static BOOL is_vertex_shader ( DWORD  version)
inlinestatic

Definition at line 748 of file shader.c.

749{
750 return (version & 0xffff0000) == 0xfffe0000;
751}

Referenced by allocate_semantic_registers(), ID3DXConstantTableImpl_SetDefaults(), and set().

◆ load_d3dassemble_once()

static BOOL WINAPI load_d3dassemble_once ( INIT_ONCE *  once,
void *  param,
void **  context 
)
static

Definition at line 191 of file shader.c.

192{
193 /* FIXME: This assumes that d3dcompiler.h and dlls/d3dcompiler_XX/Makefile.in stay
194 * in sync regarding which library creates the unnumbered d3dcompiler.lib implib.
195 * GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, D3DCompile) would
196 * be nice, but "D3DCompile" will point to the IAT stub, not d3dcompiler_xy.dll */
198 void **assemble = param;
199
200 if (!mod)
201 ERR("%s not found - which d3dcompiler are we linked against?\n", D3DCOMPILER_DLL_A);
202
203 *assemble = (void *)GetProcAddress(mod, "D3DAssemble");
204 return TRUE;
205}
std::map< E_MODULE, HMODULE > mod
Definition: LocaleTests.cpp:68
static const WCHAR D3DCOMPILER_DLL_W[]
Definition: d3dcompiler.h:32
#define D3DCOMPILER_DLL_A
Definition: d3dcompiler.h:35
#define GetProcAddress(x, y)
Definition: compat.h:753
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
GLfloat param
Definition: glext.h:5796

Referenced by D3DXAssembleShader().

◆ parse_ctab_constant_type()

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 
)
static

Definition at line 1839 of file shader.c.

1841{
1842 const D3DXSHADER_TYPEINFO *type = (LPD3DXSHADER_TYPEINFO)(ctab + typeoffset);
1843 const D3DXSHADER_STRUCTMEMBERINFO *memberinfo = NULL;
1844 HRESULT hr = D3D_OK;
1845 UINT i, count = 0;
1846 WORD size = 0;
1847
1848 constant->desc.DefaultValue = offset ? ctab + *offset : NULL;
1849 constant->desc.Class = type->Class;
1850 constant->desc.Type = type->Type;
1851 constant->desc.Rows = type->Rows;
1852 constant->desc.Columns = type->Columns;
1853 constant->desc.Elements = is_element ? 1 : type->Elements;
1854 constant->desc.StructMembers = type->StructMembers;
1855 constant->desc.Name = ctab + nameoffset;
1856 constant->desc.RegisterSet = regset;
1857 constant->desc.RegisterIndex = index;
1858
1859 TRACE("name %s, elements %u, index %u, defaultvalue %p, regset %s\n", constant->desc.Name,
1860 constant->desc.Elements, index, constant->desc.DefaultValue,
1862 TRACE("class %s, type %s, rows %d, columns %d, elements %d, struct_members %d\n",
1864 type->Rows, type->Columns, type->Elements, type->StructMembers);
1865
1866 if (type->Elements > 1 && !is_element)
1867 {
1868 count = type->Elements;
1869 }
1870 else if ((type->Class == D3DXPC_STRUCT) && type->StructMembers)
1871 {
1872 memberinfo = (D3DXSHADER_STRUCTMEMBERINFO*)(ctab + type->StructMemberInfo);
1873 count = type->StructMembers;
1874 }
1875
1876 if (count)
1877 {
1878 constant->constants = calloc(count, sizeof(*constant->constants));
1879 if (!constant->constants)
1880 {
1881 ERR("Out of memory\n");
1882 hr = E_OUTOFMEMORY;
1883 goto error;
1884 }
1885
1886 for (i = 0; i < count; ++i)
1887 {
1888 hr = parse_ctab_constant_type(ctab, memberinfo ? memberinfo[i].TypeInfo : typeoffset,
1889 &constant->constants[i], memberinfo == NULL, index + size, max_index, offset,
1890 memberinfo ? memberinfo[i].Name : nameoffset, regset);
1891 if (hr != D3D_OK)
1892 goto error;
1893
1894 size += constant->constants[i].desc.RegisterCount;
1895 }
1896 }
1897 else
1898 {
1899 WORD offsetdiff = type->Columns * type->Rows;
1900 BOOL fail = FALSE;
1901
1902 size = type->Columns * type->Rows;
1903
1904 switch (regset)
1905 {
1906 case D3DXRS_BOOL:
1907 fail = type->Class != D3DXPC_SCALAR && type->Class != D3DXPC_VECTOR
1908 && type->Class != D3DXPC_MATRIX_ROWS && type->Class != D3DXPC_MATRIX_COLUMNS;
1909 break;
1910
1911 case D3DXRS_FLOAT4:
1912 case D3DXRS_INT4:
1913 switch (type->Class)
1914 {
1915 case D3DXPC_VECTOR:
1916 size = 1;
1917 /* fall through */
1918 case D3DXPC_SCALAR:
1919 offsetdiff = type->Rows * 4;
1920 break;
1921
1922 case D3DXPC_MATRIX_ROWS:
1923 offsetdiff = type->Rows * 4;
1924 size = type->Rows;
1925 break;
1926
1928 offsetdiff = type->Columns * 4;
1929 size = type->Columns;
1930 break;
1931
1932 default:
1933 fail = TRUE;
1934 break;
1935 }
1936 break;
1937
1938 case D3DXRS_SAMPLER:
1939 size = 1;
1940 fail = type->Class != D3DXPC_OBJECT;
1941 break;
1942
1943 default:
1944 fail = TRUE;
1945 break;
1946 }
1947
1948 if (fail)
1949 {
1950 FIXME("Unhandled register set %s, type class %s\n", debug_d3dxparameter_registerset(regset),
1952 }
1953
1954 /* offset in bytes => offsetdiff * sizeof(DWORD) */
1955 if (offset) *offset += offsetdiff * 4;
1956 }
1957
1958 constant->desc.RegisterCount = max(0, min(max_index - index, size));
1959 constant->desc.Bytes = 4 * constant->desc.Elements * type->Rows * type->Columns;
1960
1961 return D3D_OK;
1962
1963error:
1964 if (constant->constants)
1965 {
1966 for (i = 0; i < count; ++i)
1967 {
1968 free_constant(&constant->constants[i]);
1969 }
1970 free(constant->constants);
1971 constant->constants = NULL;
1972 }
1973
1974 return hr;
1975}
const char * debug_d3dxparameter_type(D3DXPARAMETER_TYPE t)
Definition: util.c:344
@ D3DXPC_OBJECT
Definition: d3dx9shader.h:66
struct _D3DXSHADER_TYPEINFO * LPD3DXSHADER_TYPEINFO
D3DXREGISTER_SET regset
Definition: shader.c:5881
#define min(a, b)
Definition: monoChain.cc:55
#define max(a, b)
Definition: svc.c:63

Referenced by D3DXGetShaderConstantTableEx(), and parse_ctab_constant_type().

◆ set()

static UINT set ( struct ID3DXConstantTableImpl *  table,
IDirect3DDevice9 *  device,
struct ctab_constant *  constant,
const void **  indata,
D3DXPARAMETER_TYPE  intype,
UINT *  size,
UINT  incol,
D3DXPARAMETER_CLASS  inclass,
UINT  index,
BOOL  is_pointer 
)
static

Definition at line 1087 of file shader.c.

1090{
1092 UINT l, i, regcount = 1, regsize = 1, cin = 1, rin = 1, ret, last = 0;
1093 DWORD tmp;
1094
1095 /* size too small to set anything */
1096 if (*size < desc->Rows * desc->Columns)
1097 {
1098 *size = 0;
1099 return 0;
1100 }
1101
1102 /* D3DXPC_STRUCT is somewhat special */
1103 if (desc->Class == D3DXPC_STRUCT)
1104 {
1105 /*
1106 * Struct array sets the last complete input to the first struct element, all other
1107 * elements are not set.
1108 * E.g.: struct {int i;} s1[2];
1109 * SetValue(device, "s1", [1, 2], 8) => s1 = {2, x};
1110 *
1111 * struct {int i; int n} s2[2];
1112 * SetValue(device, "s2", [1, 2, 3, 4, 5], 20) => s1 = {{3, 4}, {x, x}};
1113 */
1114 if (desc->Elements > 1)
1115 {
1116 UINT offset = *size / (desc->Rows * desc->Columns) - 1;
1117
1118 offset = min(desc->Elements - 1, offset);
1119 last = offset * desc->Rows * desc->Columns;
1120
1121 if ((is_pointer || inclass == D3DXPC_MATRIX_ROWS) && desc->RegisterSet != D3DXRS_BOOL)
1122 {
1123 set(table, device, &constant->constants[0], NULL, intype, size, incol, inclass, 0, is_pointer);
1124 }
1125 else
1126 {
1127 last += set(table, device, &constant->constants[0], indata, intype, size, incol, inclass,
1128 index + last, is_pointer);
1129 }
1130 }
1131 else
1132 {
1133 /*
1134 * D3DXRS_BOOL is always set. As there are only 16 bools and there are
1135 * exactly 16 input values, use matrix transpose.
1136 */
1137 if (inclass == D3DXPC_MATRIX_ROWS && desc->RegisterSet == D3DXRS_BOOL)
1138 {
1139 D3DXMATRIX mat, *m, min;
1140
1141 if (is_pointer)
1142 min = *(D3DXMATRIX *)(indata[index / 16]);
1143 else
1144 min = **(D3DXMATRIX **)indata;
1145
1147 m = &mat;
1148 for (i = 0; i < desc->StructMembers; ++i)
1149 {
1150 last += set(table, device, &constant->constants[i], (const void **)&m, intype, size, incol,
1151 D3DXPC_SCALAR, index + last, is_pointer);
1152 }
1153 }
1154 /*
1155 * For pointers or for matrix rows, only the first member is set.
1156 * All other members are set to 0. This is not true for D3DXRS_BOOL.
1157 * E.g.: struct {int i; int n} s;
1158 * SetValue(device, "s", [1, 2], 8) => s = {1, 0};
1159 */
1160 else if ((is_pointer || inclass == D3DXPC_MATRIX_ROWS) && desc->RegisterSet != D3DXRS_BOOL)
1161 {
1162 last = set(table, device, &constant->constants[0], indata, intype, size, incol, inclass,
1163 index + last, is_pointer);
1164
1165 for (i = 1; i < desc->StructMembers; ++i)
1166 {
1167 set(table, device, &constant->constants[i], NULL, intype, size, incol, inclass, 0, is_pointer);
1168 }
1169 }
1170 else
1171 {
1172 for (i = 0; i < desc->StructMembers; ++i)
1173 {
1174 last += set(table, device, &constant->constants[i], indata, intype, size, incol, D3DXPC_SCALAR,
1175 index + last, is_pointer);
1176 }
1177 }
1178 }
1179
1180 return last;
1181 }
1182
1183 /* elements */
1184 if (desc->Elements > 1)
1185 {
1186 for (i = 0; i < desc->Elements && *size > 0; ++i)
1187 {
1188 last += set(table, device, &constant->constants[i], indata, intype, size, incol, inclass,
1189 index + last, is_pointer);
1190
1191 /* adjust the vector size for matrix rows */
1192 if (inclass == D3DXPC_MATRIX_ROWS && desc->Class == D3DXPC_VECTOR && (i % 4) == 3)
1193 {
1194 last += 12;
1195 *size = *size < 12 ? 0 : *size - 12;
1196 }
1197 }
1198
1199 return last;
1200 }
1201
1202 switch (desc->Class)
1203 {
1204 case D3DXPC_SCALAR:
1205 case D3DXPC_VECTOR:
1206 case D3DXPC_MATRIX_ROWS:
1207 regcount = min(desc->RegisterCount, desc->Rows);
1208 if (inclass == D3DXPC_MATRIX_ROWS) cin = incol;
1209 else rin = incol;
1210 regsize = desc->Columns;
1211 break;
1212
1214 regcount = min(desc->RegisterCount, desc->Columns);
1215 if (inclass == D3DXPC_MATRIX_ROWS) rin = incol;
1216 else cin = incol;
1217 regsize = desc->Rows;
1218 break;
1219
1220 default:
1221 FIXME("Unhandled variable class %s\n", debug_d3dxparameter_class(desc->Class));
1222 return 0;
1223 }
1224
1225 /* specific stuff for different in types */
1226 switch (inclass)
1227 {
1228 case D3DXPC_SCALAR:
1229 ret = desc->Columns * desc->Rows;
1230 *size -= desc->Columns * desc->Rows;
1231 break;
1232
1233 case D3DXPC_VECTOR:
1234 switch (desc->Class)
1235 {
1236 case D3DXPC_MATRIX_ROWS:
1237 if (*size < regcount * 4)
1238 {
1239 *size = 0;
1240 return 0;
1241 }
1242 ret = 4 * regcount;
1243 *size -= 4 * regcount;
1244 break;
1245
1247 ret = 4 * regsize;
1248 *size -= 4 * regcount;
1249 break;
1250
1251 case D3DXPC_SCALAR:
1252 ret = 1;
1253 *size -= ret;
1254 break;
1255
1256 case D3DXPC_VECTOR:
1257 ret = 4;
1258 *size -= ret;
1259 break;
1260
1261 default:
1262 FIXME("Unhandled variable class %s\n", debug_d3dxparameter_class(desc->Class));
1263 return 0;
1264 }
1265 break;
1266
1267 case D3DXPC_MATRIX_ROWS:
1268 switch (desc->Class)
1269 {
1270 case D3DXPC_MATRIX_ROWS:
1272 if (*size < 16)
1273 {
1274 *size = 0;
1275 return 0;
1276 }
1277 ret = 16;
1278 break;
1279
1280 case D3DXPC_SCALAR:
1281 ret = 4;
1282 break;
1283
1284 case D3DXPC_VECTOR:
1285 ret = 1;
1286 break;
1287
1288 default:
1289 FIXME("Unhandled variable class %s\n", debug_d3dxparameter_class(desc->Class));
1290 return 0;
1291 }
1292 *size -= ret;
1293 break;
1294
1296 switch (desc->Class)
1297 {
1298 case D3DXPC_MATRIX_ROWS:
1300 if (*size < 16)
1301 {
1302 *size = 0;
1303 return 0;
1304 }
1305 ret = 16;
1306 break;
1307
1308 case D3DXPC_SCALAR:
1309 ret = 1;
1310 break;
1311
1312 case D3DXPC_VECTOR:
1313 ret = 4;
1314 break;
1315
1316 default:
1317 FIXME("Unhandled variable class %s\n", debug_d3dxparameter_class(desc->Class));
1318 return 0;
1319 }
1320 *size -= ret;
1321 break;
1322
1323 default:
1324 FIXME("Unhandled variable class %s\n", debug_d3dxparameter_class(inclass));
1325 return 0;
1326 }
1327
1328 /* set the registers */
1329 switch (desc->RegisterSet)
1330 {
1331 case D3DXRS_BOOL:
1332 regcount = min(desc->RegisterCount, desc->Columns * desc->Rows);
1333 l = 0;
1334 for (i = 0; i < regcount; ++i)
1335 {
1336 BOOL out;
1337 DWORD t = get_index(indata, index + i / regsize * rin + l * cin, is_pointer);
1338
1339 set_number(&tmp, desc->Type, &t, intype);
1340 set_number(&out, D3DXPT_BOOL, &tmp, desc->Type);
1341 if (is_vertex_shader(table->desc.Version))
1343 else
1345
1346 if (++l >= regsize) l = 0;
1347 }
1348 return ret;
1349
1350 case D3DXRS_INT4:
1351 for (i = 0; i < regcount; ++i)
1352 {
1353 INT vec[4] = {0, 0, 1, 0};
1354
1355 for (l = 0; l < regsize; ++l)
1356 {
1357 DWORD t = get_index(indata, index + i * rin + l * cin, is_pointer);
1358
1359 set_number(&tmp, desc->Type, &t, intype);
1360 set_number(&vec[l], D3DXPT_INT, &tmp, desc->Type);
1361 }
1362 if (is_vertex_shader(table->desc.Version))
1364 else
1366 }
1367 return ret;
1368
1369 case D3DXRS_FLOAT4:
1370 for (i = 0; i < regcount; ++i)
1371 {
1372 FLOAT vec[4] = {0};
1373
1374 for (l = 0; l < regsize; ++l)
1375 {
1376 DWORD t = get_index(indata, index + i * rin + l * cin, is_pointer);
1377
1378 set_number(&tmp, desc->Type, &t, intype);
1379 set_number(&vec[l], D3DXPT_FLOAT, &tmp, desc->Type);
1380 }
1381 if (is_vertex_shader(table->desc.Version))
1383 else
1385 }
1386 return ret;
1387
1388 default:
1389 FIXME("Unhandled register set %s\n", debug_d3dxparameter_registerset(desc->RegisterSet));
1390 return 0;
1391 }
1392}
r l[0]
Definition: byte_order.h:168
static void set_number(void *outdata, D3DXPARAMETER_TYPE outtype, const void *indata, D3DXPARAMETER_TYPE intype)
D3DXMATRIX *WINAPI D3DXMatrixTranspose(D3DXMATRIX *out, const D3DXMATRIX *in)
Definition: math.c:873
static DWORD get_index(const void **indata, UINT index, BOOL is_pointer)
Definition: shader.c:1076
FT_Vector * vec
Definition: ftbbox.c:469
GLdouble GLdouble t
Definition: gl.h:2047
const GLfloat * m
Definition: glext.h:10848
#define cin
Definition: iostream.cpp:37
static const MAT2 mat
Definition: font.c:51
static const LARGE_INTEGER *static const HANDLE const LARGE_INTEGER *static PSLIST_ENTRY PSLIST_ENTRY last
Definition: sync.c:64
float FLOAT
Definition: typedefs.h:69
int32_t INT
Definition: typedefs.h:58
_In_ ULONG Rows
Definition: haltypes.h:17

◆ set_matrix_array()

static HRESULT set_matrix_array ( struct ID3DXConstantTableImpl *  table,
IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const void *  indata,
UINT  count,
BOOL  transpose 
)
static

Definition at line 1509 of file shader.c.

1511{
1513
1514 if (!c)
1515 {
1516 WARN("Invalid argument specified\n");
1517 return D3DERR_INVALIDCALL;
1518 }
1519
1520 switch (c->desc.Class)
1521 {
1522 case D3DXPC_SCALAR:
1523 case D3DXPC_VECTOR:
1524 case D3DXPC_MATRIX_ROWS:
1526 case D3DXPC_STRUCT:
1527 count *= 16;
1528 set(table, device, c, &indata, D3DXPT_FLOAT, &count, 4,
1530 return D3D_OK;
1531
1532 default:
1533 FIXME("Unhandled parameter class %s\n", debug_d3dxparameter_class(c->desc.Class));
1534 return D3DERR_INVALIDCALL;
1535 }
1536}
GLsizei GLboolean transpose
Definition: glext.h:6077

Referenced by ID3DXConstantTableImpl_SetMatrix(), ID3DXConstantTableImpl_SetMatrixArray(), ID3DXConstantTableImpl_SetMatrixTranspose(), and ID3DXConstantTableImpl_SetMatrixTransposeArray().

◆ set_matrix_pointer_array()

static HRESULT set_matrix_pointer_array ( struct ID3DXConstantTableImpl *  table,
IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const void **  indata,
UINT  count,
BOOL  transpose 
)
static

Definition at line 1538 of file shader.c.

1540{
1542
1543 if (!c)
1544 {
1545 WARN("Invalid argument specified\n");
1546 return D3DERR_INVALIDCALL;
1547 }
1548
1549 switch (c->desc.Class)
1550 {
1551 case D3DXPC_SCALAR:
1552 case D3DXPC_VECTOR:
1553 case D3DXPC_MATRIX_ROWS:
1555 case D3DXPC_STRUCT:
1556 count *= 16;
1557 set(table, device, c, indata, D3DXPT_FLOAT, &count, 4,
1559 return D3D_OK;
1560
1561 default:
1562 FIXME("Unhandled parameter class %s\n", debug_d3dxparameter_class(c->desc.Class));
1563 return D3DERR_INVALIDCALL;
1564 }
1565}

Referenced by ID3DXConstantTableImpl_SetMatrixPointerArray(), and ID3DXConstantTableImpl_SetMatrixTransposePointerArray().

◆ set_scalar()

static HRESULT set_scalar ( struct ID3DXConstantTableImpl *  table,
IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const void *  indata,
D3DXPARAMETER_TYPE  intype 
)
static

Definition at line 1394 of file shader.c.

1396{
1398 UINT count = 1;
1399
1400 if (!c)
1401 {
1402 WARN("Invalid argument specified\n");
1403 return D3DERR_INVALIDCALL;
1404 }
1405
1406 switch (c->desc.Class)
1407 {
1408 case D3DXPC_SCALAR:
1409 set(table, device, c, &indata, intype, &count, c->desc.Columns, D3DXPC_SCALAR, 0, FALSE);
1410 return D3D_OK;
1411
1412 case D3DXPC_VECTOR:
1413 case D3DXPC_MATRIX_ROWS:
1415 case D3DXPC_STRUCT:
1416 return D3D_OK;
1417
1418 default:
1419 FIXME("Unhandled parameter class %s\n", debug_d3dxparameter_class(c->desc.Class));
1420 return D3DERR_INVALIDCALL;
1421 }
1422}

Referenced by ID3DXConstantTableImpl_SetBool(), ID3DXConstantTableImpl_SetFloat(), and ID3DXConstantTableImpl_SetInt().

◆ set_scalar_array()

static HRESULT set_scalar_array ( struct ID3DXConstantTableImpl *  table,
IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const void *  indata,
UINT  count,
D3DXPARAMETER_TYPE  intype 
)
static

Definition at line 1424 of file shader.c.

1426{
1428
1429 if (!c)
1430 {
1431 WARN("Invalid argument specified\n");
1432 return D3DERR_INVALIDCALL;
1433 }
1434
1435 switch (c->desc.Class)
1436 {
1437 case D3DXPC_SCALAR:
1438 case D3DXPC_VECTOR:
1439 case D3DXPC_MATRIX_ROWS:
1441 case D3DXPC_STRUCT:
1442 set(table, device, c, &indata, intype, &count, c->desc.Columns, D3DXPC_SCALAR, 0, FALSE);
1443 return D3D_OK;
1444
1445 default:
1446 FIXME("Unhandled parameter class %s\n", debug_d3dxparameter_class(c->desc.Class));
1447 return D3DERR_INVALIDCALL;
1448 }
1449}

Referenced by ID3DXConstantTableImpl_SetBoolArray(), ID3DXConstantTableImpl_SetFloatArray(), and ID3DXConstantTableImpl_SetIntArray().

◆ set_vector()

static HRESULT set_vector ( struct ID3DXConstantTableImpl *  table,
IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const void *  indata,
D3DXPARAMETER_TYPE  intype 
)
static

Definition at line 1451 of file shader.c.

1453{
1455 UINT count = 4;
1456
1457 if (!c)
1458 {
1459 WARN("Invalid argument specified\n");
1460 return D3DERR_INVALIDCALL;
1461 }
1462
1463 switch (c->desc.Class)
1464 {
1465 case D3DXPC_SCALAR:
1466 case D3DXPC_VECTOR:
1467 case D3DXPC_STRUCT:
1468 set(table, device, c, &indata, intype, &count, 4, D3DXPC_VECTOR, 0, FALSE);
1469 return D3D_OK;
1470
1471 case D3DXPC_MATRIX_ROWS:
1473 return D3D_OK;
1474
1475 default:
1476 FIXME("Unhandled parameter class %s\n", debug_d3dxparameter_class(c->desc.Class));
1477 return D3DERR_INVALIDCALL;
1478 }
1479}

Referenced by ID3DXConstantTableImpl_SetVector().

◆ set_vector_array()

static HRESULT set_vector_array ( struct ID3DXConstantTableImpl *  table,
IDirect3DDevice9 *  device,
D3DXHANDLE  constant,
const void *  indata,
UINT  count,
D3DXPARAMETER_TYPE  intype 
)
static

Definition at line 1481 of file shader.c.

1483{
1485
1486 if (!c)
1487 {
1488 WARN("Invalid argument specified\n");
1489 return D3DERR_INVALIDCALL;
1490 }
1491
1492 switch (c->desc.Class)
1493 {
1494 case D3DXPC_SCALAR:
1495 case D3DXPC_VECTOR:
1496 case D3DXPC_MATRIX_ROWS:
1498 case D3DXPC_STRUCT:
1499 count *= 4;
1500 set(table, device, c, &indata, intype, &count, 4, D3DXPC_VECTOR, 0, FALSE);
1501 return D3D_OK;
1502
1503 default:
1504 FIXME("Unhandled parameter class %s\n", debug_d3dxparameter_class(c->desc.Class));
1505 return D3DERR_INVALIDCALL;
1506 }
1507}

Referenced by ID3DXConstantTableImpl_SetVectorArray().

◆ texture_shader_fill_2d()

void WINAPI texture_shader_fill_2d ( D3DXVECTOR4 *  out,
const D3DXVECTOR2 *  texcoord,
const D3DXVECTOR2 *  texelsize,
void *  data 
)

Definition at line 2692 of file shader.c.

2694{
2696 struct d3dx_parameter param = { 0 };
2697 float *inputs;
2698
2699 inputs = (float *)shader->eval->pres.regs.tables[PRES_REGTAB_INPUT];
2700
2701 *(inputs++) = texcoord->x;
2702 *(inputs++) = texcoord->y;
2703 *(inputs++) = 0.0f;
2704 *(inputs++) = 0.0f;
2705
2706 *(inputs++) = texelsize->x;
2707 *(inputs++) = texelsize->y;
2708 *(inputs++) = 0.0f;
2709 *(inputs++) = 0.0f;
2710
2711 param.type = D3DXPT_FLOAT;
2712 param.bytes = 4 * sizeof(float);
2714}
HRESULT d3dx_evaluate_parameter(struct d3dx_param_eval *peval, const struct d3dx_parameter *param, void *param_value)
Definition: preshader.c:1722
@ PRES_REGTAB_INPUT
static float(__cdecl *square_half_float)(float x
FLOAT x
Definition: d3dx9math.h:64
FLOAT y
Definition: d3dx9math.h:64

Referenced by D3DXFillTextureTX().

◆ texture_shader_fill_3d()

void WINAPI texture_shader_fill_3d ( D3DXVECTOR4 *  out,
const D3DXVECTOR3 *  texcoord,
const D3DXVECTOR3 *  texelsize,
void *  data 
)

Definition at line 2716 of file shader.c.

2718{
2720 struct d3dx_parameter param = { 0 };
2721 float *inputs;
2722
2723 inputs = (float *)shader->eval->pres.regs.tables[PRES_REGTAB_INPUT];
2724
2725 *(inputs++) = texcoord->x;
2726 *(inputs++) = texcoord->y;
2727 *(inputs++) = texcoord->z;
2728 *(inputs++) = 0.0f;
2729
2730 *(inputs++) = texelsize->x;
2731 *(inputs++) = texelsize->y;
2732 *(inputs++) = texelsize->z;
2733 *(inputs++) = 0.0f;
2734
2735 param.type = D3DXPT_FLOAT;
2736 param.bytes = 4 * sizeof(float);
2738}

Referenced by D3DXFillCubeTextureTX().

◆ unsafe_impl_from_ID3DXTextureShader()

static struct d3dx9_texture_shader * unsafe_impl_from_ID3DXTextureShader ( ID3DXTextureShader *  iface)
inlinestatic

Definition at line 2635 of file shader.c.

2636{
2637 if (!iface)
2638 return NULL;
2639
2640 assert(iface->lpVtbl == &d3dx9_texture_shader_vtbl);
2641 return impl_from_ID3DXTextureShader(iface);
2642}
#define assert(_expr)
Definition: assert.h:32

Referenced by D3DXFillCubeTextureTX(), and D3DXFillTextureTX().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3dx  )

Variable Documentation

◆ d3dx9_fragment_linker_vtbl

const struct ID3DXFragmentLinkerVtbl d3dx9_fragment_linker_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI d3dx9_fragment_linker_GetDevice(ID3DXFragmentLinker *iface, struct IDirect3DDevice9 **device)
Definition: shader.c:2161
static UINT WINAPI d3dx9_fragment_linker_GetNumberOfFragments(ID3DXFragmentLinker *iface)
Definition: shader.c:2180
static ULONG WINAPI d3dx9_fragment_linker_Release(ID3DXFragmentLinker *iface)
Definition: shader.c:2145
static HRESULT WINAPI d3dx9_fragment_linker_LinkPixelShader(ID3DXFragmentLinker *iface, const char *profile, DWORD flags, const D3DXHANDLE *handles, UINT fragment_count, IDirect3DPixelShader9 **shader, ID3DXBuffer **errors)
Definition: shader.c:2252
static HRESULT WINAPI d3dx9_fragment_linker_ClearCache(ID3DXFragmentLinker *iface)
Definition: shader.c:2262
static HRESULT WINAPI d3dx9_fragment_linker_LinkShader(ID3DXFragmentLinker *iface, const char *profile, DWORD flags, const D3DXHANDLE *handles, UINT fragment_count, ID3DXBuffer **buffer, ID3DXBuffer **errors)
Definition: shader.c:2232
static HRESULT WINAPI d3dx9_fragment_linker_GetFragmentDesc(ID3DXFragmentLinker *iface, D3DXHANDLE name, D3DXFRAGMENT_DESC *desc)
Definition: shader.c:2202
static HRESULT WINAPI d3dx9_fragment_linker_GetFragment(ID3DXFragmentLinker *iface, D3DXHANDLE name, ID3DXBuffer **buffer)
Definition: shader.c:2224
static D3DXHANDLE WINAPI d3dx9_fragment_linker_GetFragmentHandleByIndex(ID3DXFragmentLinker *iface, UINT index)
Definition: shader.c:2187
static ULONG WINAPI d3dx9_fragment_linker_AddRef(ID3DXFragmentLinker *iface)
Definition: shader.c:2135
static HRESULT WINAPI d3dx9_fragment_linker_AddFragments(ID3DXFragmentLinker *iface, const DWORD *fragments)
Definition: shader.c:2210
static HRESULT WINAPI d3dx9_fragment_linker_LinkVertexShader(ID3DXFragmentLinker *iface, const char *profile, DWORD flags, const D3DXHANDLE *handles, UINT fragment_count, IDirect3DVertexShader9 **shader, ID3DXBuffer **errors)
Definition: shader.c:2242
static HRESULT WINAPI d3dx9_fragment_linker_QueryInterface(ID3DXFragmentLinker *iface, REFIID riid, void **out)
Definition: shader.c:2118
static D3DXHANDLE WINAPI d3dx9_fragment_linker_GetFragmentHandleByName(ID3DXFragmentLinker *iface, const char *name)
Definition: shader.c:2194
static HRESULT WINAPI d3dx9_fragment_linker_GetAllFragments(ID3DXFragmentLinker *iface, ID3DXBuffer **buffer)
Definition: shader.c:2217

Definition at line 2269 of file shader.c.

Referenced by D3DXCreateFragmentLinkerEx().

◆ d3dx9_texture_shader_vtbl

const struct ID3DXTextureShaderVtbl d3dx9_texture_shader_vtbl
static

Definition at line 2603 of file shader.c.

Referenced by D3DXCreateTextureShader(), and unsafe_impl_from_ID3DXTextureShader().

◆ d3dx_include_from_file_vtbl

const struct ID3DXIncludeVtbl d3dx_include_from_file_vtbl
Initial value:
=
{
}
static HRESULT WINAPI d3dx_include_from_file_close(ID3DXInclude *iface, const void *data)
Definition: shader.c:319
static HRESULT WINAPI d3dx_include_from_file_open(ID3DXInclude *iface, D3DXINCLUDE_TYPE include_type, const char *filename, const void *parent_data, const void **data, UINT *bytes)
Definition: shader.c:249

Definition at line 328 of file shader.c.

Referenced by D3DXAssembleShaderFromFileW(), D3DXCompileShaderFromFileW(), D3DXCreateEffectFromFileExW(), and D3DXPreprocessShaderFromFileW().

◆ from_file_mutex

◆ from_file_mutex_debug

CRITICAL_SECTION_DEBUG from_file_mutex_debug
static
Initial value:
=
{
{
},
0, 0, {(DWORD_PTR)(__FILE__ ": from_file_mutex")}
}
static CRITICAL_SECTION_DEBUG from_file_mutex_debug
Definition: shader.c:233
#define DWORD_PTR
Definition: treelist.c:76

Definition at line 233 of file shader.c.

◆ ID3DXConstantTable_Vtbl

const struct ID3DXConstantTableVtbl ID3DXConstantTable_Vtbl
static

Definition at line 1805 of file shader.c.

Referenced by D3DXGetShaderConstantTableEx().

◆ main_file_data

const void* main_file_data
static

Definition at line 231 of file shader.c.

Referenced by d3dx_include_from_file_close(), and d3dx_include_from_file_open().