ReactOS 0.4.17-dev-966-gf06eace
d3d9_main.c File Reference
#include "initguid.h"
#include "d3d9_private.h"
Include dependency graph for d3d9_main.c:

Go to the source code of this file.

Classes

struct  IDirect3DShaderValidator9Vtbl
 
struct  IDirect3DShaderValidator9
 

Typedefs

typedef HRESULT(WINAPI * shader_validator_cb) (const char *file, int line, DWORD_PTR arg3, DWORD_PTR message_id, const char *message, void *context)
 
typedef struct IDirect3DShaderValidator9 IDirect3DShaderValidator9
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3d9)
 
void WINAPI DebugSetMute (void)
 
IDirect3D9 *WINAPI DECLSPEC_HOTPATCH Direct3DCreate9 (UINT sdk_version)
 
HRESULT WINAPI DECLSPEC_HOTPATCH Direct3DCreate9Ex (UINT sdk_version, IDirect3D9Ex **d3d9ex)
 
IDirect3D9 *WINAPI DECLSPEC_HOTPATCH Direct3DCreate9On12 (UINT sdk_version, D3D9ON12_ARGS *d3d9on12_args, UINT d3d9on12_args_count)
 
static HRESULT WINAPI shader_validator_QueryInterface (IDirect3DShaderValidator9 *iface, REFIID iid, void **out)
 
static ULONG WINAPI shader_validator_AddRef (IDirect3DShaderValidator9 *iface)
 
static ULONG WINAPI shader_validator_Release (IDirect3DShaderValidator9 *iface)
 
static HRESULT WINAPI shader_validator_Begin (IDirect3DShaderValidator9 *iface, shader_validator_cb callback, void *context, DWORD_PTR arg3)
 
static HRESULT WINAPI shader_validator_Instruction (IDirect3DShaderValidator9 *iface, const char *file, int line, const DWORD *tokens, unsigned int token_count)
 
static HRESULT WINAPI shader_validator_End (IDirect3DShaderValidator9 *iface)
 
IDirect3DShaderValidator9 *WINAPI Direct3DShaderValidatorCreate9 (void)
 
int WINAPI D3DPERF_BeginEvent (D3DCOLOR color, const WCHAR *name)
 
int WINAPI D3DPERF_EndEvent (void)
 
DWORD WINAPI D3DPERF_GetStatus (void)
 
void WINAPI D3DPERF_SetOptions (DWORD options)
 
BOOL WINAPI D3DPERF_QueryRepeatFrame (void)
 
void WINAPI D3DPERF_SetMarker (D3DCOLOR color, const WCHAR *name)
 
void WINAPI D3DPERF_SetRegion (D3DCOLOR color, const WCHAR *name)
 
void d3d9_resource_cleanup (struct d3d9_resource *resource)
 
HRESULT d3d9_resource_free_private_data (struct d3d9_resource *resource, const GUID *guid)
 
HRESULT d3d9_resource_get_private_data (struct d3d9_resource *resource, const GUID *guid, void *data, DWORD *data_size)
 
void d3d9_resource_init (struct d3d9_resource *resource)
 
HRESULT d3d9_resource_set_private_data (struct d3d9_resource *resource, const GUID *guid, const void *data, DWORD data_size, DWORD flags)
 

Variables

static int D3DPERF_event_level = 0
 
static const struct IDirect3DShaderValidator9Vtbl shader_validator_vtbl
 
static IDirect3DShaderValidator9 shader_validator = {&shader_validator_vtbl}
 

Typedef Documentation

◆ IDirect3DShaderValidator9

◆ shader_validator_cb

typedef HRESULT(WINAPI * shader_validator_cb) (const char *file, int line, DWORD_PTR arg3, DWORD_PTR message_id, const char *message, void *context)

Definition at line 127 of file d3d9_main.c.

Function Documentation

◆ d3d9_resource_cleanup()

void d3d9_resource_cleanup ( struct d3d9_resource *  resource)

◆ d3d9_resource_free_private_data()

HRESULT d3d9_resource_free_private_data ( struct d3d9_resource *  resource,
const GUID *  guid 
)

Definition at line 289 of file d3d9_main.c.

290{
292
295 if (!entry)
296 {
298 return D3DERR_NOTFOUND;
299 }
300
303
304 return D3D_OK;
305}
#define D3D_OK
Definition: d3d.h:106
GUID guid
Definition: version.c:147
uint32_t entry
Definition: isohybrid.c:63
#define D3DERR_NOTFOUND
Definition: d3d8.h:76
static struct wined3d_private_data * wined3d_private_store_get_private_data(const struct wined3d_private_store *store, const GUID *tag)
Definition: wined3d.h:2612
static void wined3d_private_store_free_private_data(struct wined3d_private_store *store, struct wined3d_private_data *entry)
Definition: wined3d.h:2627
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539

Referenced by d3d9_indexbuffer_FreePrivateData(), d3d9_surface_FreePrivateData(), d3d9_texture_2d_FreePrivateData(), d3d9_texture_3d_FreePrivateData(), d3d9_texture_cube_FreePrivateData(), d3d9_vertexbuffer_FreePrivateData(), and d3d9_volume_FreePrivateData().

◆ d3d9_resource_get_private_data()

HRESULT d3d9_resource_get_private_data ( struct d3d9_resource *  resource,
const GUID *  guid,
void *  data,
DWORD *  data_size 
)

Definition at line 307 of file d3d9_main.c.

309{
310 const struct wined3d_private_data *stored_data;
311 DWORD size_in;
312 HRESULT hr;
313
315 stored_data = wined3d_private_store_get_private_data(&resource->private_store, guid);
316 if (!stored_data)
317 {
319 goto done;
320 }
321
322 size_in = *data_size;
323 *data_size = stored_data->size;
324 if (!data)
325 {
326 hr = D3D_OK;
327 goto done;
328 }
329 if (size_in < stored_data->size)
330 {
332 goto done;
333 }
334
335 if (stored_data->flags & WINED3DSPD_IUNKNOWN)
336 IUnknown_AddRef(stored_data->content.object);
337 memcpy(data, stored_data->content.data, stored_data->size);
338 hr = D3D_OK;
339
340done:
342 return hr;
343}
HRESULT hr
Definition: delayimp.cpp:582
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizeiptr size
Definition: glext.h:5919
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define D3DERR_MOREDATA
Definition: d3d8.h:77
union wined3d_private_data::@4825 content
IUnknown * object
Definition: wined3d.h:2285
#define WINED3DSPD_IUNKNOWN
Definition: wined3d.h:1018

Referenced by d3d9_indexbuffer_GetPrivateData(), d3d9_surface_GetPrivateData(), d3d9_texture_2d_GetPrivateData(), d3d9_texture_3d_GetPrivateData(), d3d9_texture_cube_GetPrivateData(), d3d9_vertexbuffer_GetPrivateData(), and d3d9_volume_GetPrivateData().

◆ d3d9_resource_init()

void d3d9_resource_init ( struct d3d9_resource *  resource)

Definition at line 345 of file d3d9_main.c.

346{
347 resource->refcount = 1;
348 wined3d_private_store_init(&resource->private_store);
349}
static void wined3d_private_store_init(struct wined3d_private_store *store)
Definition: wined3d.h:2607

Referenced by d3d9_surface_create(), d3d9_texture_init(), indexbuffer_init(), vertexbuffer_init(), and volume_init().

◆ d3d9_resource_set_private_data()

HRESULT d3d9_resource_set_private_data ( struct d3d9_resource *  resource,
const GUID *  guid,
const void *  data,
DWORD  data_size,
DWORD  flags 
)

Definition at line 351 of file d3d9_main.c.

353{
354 HRESULT hr;
355
357 hr = wined3d_private_store_set_private_data(&resource->private_store, guid, data, data_size, flags);
359 return hr;
360}
GLbitfield flags
Definition: glext.h:7161
static HRESULT wined3d_private_store_set_private_data(struct wined3d_private_store *store, const GUID *guid, const void *data, DWORD data_size, uint32_t flags)
Definition: wined3d.h:2648

Referenced by d3d9_indexbuffer_SetPrivateData(), d3d9_surface_SetPrivateData(), d3d9_texture_2d_SetPrivateData(), d3d9_texture_3d_SetPrivateData(), d3d9_texture_cube_SetPrivateData(), d3d9_vertexbuffer_SetPrivateData(), and d3d9_volume_SetPrivateData().

◆ D3DPERF_BeginEvent()

int WINAPI D3DPERF_BeginEvent ( D3DCOLOR  color,
const WCHAR *  name 
)

Definition at line 225 of file d3d9_main.c.

226{
227 TRACE("color 0x%08lx, name %s.\n", color, debugstr_w(name));
228
229 return D3DPERF_event_level++;
230}
static int D3DPERF_event_level
Definition: d3d9_main.c:29
GLuint color
Definition: glext.h:6243
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
Definition: name.c:39

◆ D3DPERF_EndEvent()

int WINAPI D3DPERF_EndEvent ( void  )

Definition at line 235 of file d3d9_main.c.

235 {
236 TRACE("(void) : stub\n");
237
238 return --D3DPERF_event_level;
239}

◆ D3DPERF_GetStatus()

DWORD WINAPI D3DPERF_GetStatus ( void  )

Definition at line 244 of file d3d9_main.c.

244 {
245 FIXME("(void) : stub\n");
246
247 return 0;
248}
#define FIXME(fmt,...)
Definition: precomp.h:53

◆ D3DPERF_QueryRepeatFrame()

BOOL WINAPI D3DPERF_QueryRepeatFrame ( void  )

Definition at line 262 of file d3d9_main.c.

262 {
263 FIXME("(void) : stub\n");
264
265 return FALSE;
266}
#define FALSE
Definition: types.h:117

◆ D3DPERF_SetMarker()

void WINAPI D3DPERF_SetMarker ( D3DCOLOR  color,
const WCHAR *  name 
)

Definition at line 271 of file d3d9_main.c.

272{
273 FIXME("color 0x%08lx, name %s stub!\n", color, debugstr_w(name));
274}

◆ D3DPERF_SetOptions()

void WINAPI D3DPERF_SetOptions ( DWORD  options)

Definition at line 254 of file d3d9_main.c.

255{
256 FIXME("options %#lx, stub!\n", options);
257}

◆ D3DPERF_SetRegion()

void WINAPI D3DPERF_SetRegion ( D3DCOLOR  color,
const WCHAR *  name 
)

Definition at line 279 of file d3d9_main.c.

280{
281 FIXME("color 0x%08lx, name %s stub!\n", color, debugstr_w(name));
282}

◆ DebugSetMute()

void WINAPI DebugSetMute ( void  )

Definition at line 31 of file d3d9_main.c.

31 {
32 /* nothing to do */
33}

◆ Direct3DCreate9()

IDirect3D9 *WINAPI DECLSPEC_HOTPATCH Direct3DCreate9 ( UINT  sdk_version)

Definition at line 35 of file d3d9_main.c.

36{
37 struct d3d9 *object;
38
39 TRACE("sdk_version %#x.\n", sdk_version);
40
41 if (!(object = calloc(1, sizeof(*object))))
42 return NULL;
43
44 if (!d3d9_init(object, FALSE, FALSE))
45 {
46 WARN("Failed to initialize d3d9.\n");
47 free(object);
48 return NULL;
49 }
50
51 TRACE("Created d3d9 object %p.\n", object);
52
53 return (IDirect3D9 *)&object->IDirect3D9Ex_iface;
54}
#define WARN(fmt,...)
Definition: precomp.h:61
#define free
Definition: debug_ros.c:5
#define NULL
Definition: types.h:112
static D3D_DRIVER_TYPE HMODULE UINT const D3D_FEATURE_LEVEL UINT UINT sdk_version
Definition: hlsl_d3d11.c:29
#define calloc
Definition: rosglue.h:14
BOOL d3d9_init(struct d3d9 *d3d9, BOOL extended, BOOL d3d9on12)
Definition: directx.c:686

◆ Direct3DCreate9Ex()

HRESULT WINAPI DECLSPEC_HOTPATCH Direct3DCreate9Ex ( UINT  sdk_version,
IDirect3D9Ex **  d3d9ex 
)

Definition at line 56 of file d3d9_main.c.

57{
58 struct d3d9 *object;
59
60 TRACE("sdk_version %#x, d3d9ex %p.\n", sdk_version, d3d9ex);
61
62 if (!(object = calloc(1, sizeof(*object))))
63 return E_OUTOFMEMORY;
64
65 if (!d3d9_init(object, TRUE, FALSE))
66 {
67 WARN("Failed to initialize d3d9.\n");
68 free(object);
70 }
71
72 TRACE("Created d3d9 object %p.\n", object);
73 *d3d9ex = &object->IDirect3D9Ex_iface;
74
75 return D3D_OK;
76}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define TRUE
Definition: types.h:120
#define D3DERR_NOTAVAILABLE
Definition: d3d8.h:80

◆ Direct3DCreate9On12()

IDirect3D9 *WINAPI DECLSPEC_HOTPATCH Direct3DCreate9On12 ( UINT  sdk_version,
D3D9ON12_ARGS *  d3d9on12_args,
UINT  d3d9on12_args_count 
)

Definition at line 78 of file d3d9_main.c.

79{
80 struct d3d9 *object;
82
83 TRACE("sdk_version %#x, d3d9on12_args %p, d3d9on12_args_count %#x.\n", sdk_version, d3d9on12_args, d3d9on12_args_count);
84
85 if (!(object = calloc(1, sizeof(*object))))
86 return NULL;
87
88 if (!d3d9on12_args || !d3d9on12_args->Enable9On12 || !d3d9on12_args_count)
90
91 if (!d3d9_init(object, TRUE, d3d9on12))
92 {
93 WARN("Failed to initialize d3d9.\n");
94 free(object);
95 return NULL;
96 }
97
98 TRACE("Created d3d9 object %p.\n", object);
99 return (IDirect3D9 *)&object->IDirect3D9Ex_iface;
100}
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL Enable9On12
Definition: d3d9on12.idl:29
BOOL d3d9on12
Definition: d3d9_private.h:69

◆ Direct3DShaderValidatorCreate9()

IDirect3DShaderValidator9 *WINAPI Direct3DShaderValidatorCreate9 ( void  )

Definition at line 215 of file d3d9_main.c.

216{
217 FIXME("Returning stub validator %p.\n", &shader_validator);
218
219 return &shader_validator;
220}
static IDirect3DShaderValidator9 shader_validator
Definition: d3d9_main.c:213

◆ shader_validator_AddRef()

static ULONG WINAPI shader_validator_AddRef ( IDirect3DShaderValidator9 *  iface)
static

Definition at line 159 of file d3d9_main.c.

160{
161 TRACE("iface %p.\n", iface);
162
163 return 2;
164}

◆ shader_validator_Begin()

static HRESULT WINAPI shader_validator_Begin ( IDirect3DShaderValidator9 *  iface,
shader_validator_cb  callback,
void *  context,
DWORD_PTR  arg3 
)
static

Definition at line 175 of file d3d9_main.c.

177{
178 WARN("iface %p, callback %p, context %p, arg3 %#Ix, stub!\n", iface, callback, context, arg3);
179
180 return S_OK;
181}
GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg3
Definition: glext.h:9515
#define S_OK
Definition: intsafe.h:52
static IPrintDialogCallback callback
Definition: printdlg.c:325
Definition: http.c:7252

◆ shader_validator_End()

static HRESULT WINAPI shader_validator_End ( IDirect3DShaderValidator9 *  iface)
static

Definition at line 196 of file d3d9_main.c.

197{
198 WARN("iface %p, stub!\n", iface);
199
200 return S_OK;
201}

◆ shader_validator_Instruction()

static HRESULT WINAPI shader_validator_Instruction ( IDirect3DShaderValidator9 *  iface,
const char *  file,
int  line,
const DWORD *  tokens,
unsigned int  token_count 
)
static

Definition at line 187 of file d3d9_main.c.

189{
190 WARN("iface %p, file %s, line %u, tokens %p, token_count %u, stub!\n",
191 iface, debugstr_a(file), line, tokens, token_count);
192
193 return S_OK;
194}
#define debugstr_a
Definition: kernel32.h:31
Definition: fci.c:123
Definition: parser.c:49

◆ shader_validator_QueryInterface()

static HRESULT WINAPI shader_validator_QueryInterface ( IDirect3DShaderValidator9 *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 149 of file d3d9_main.c.

150{
151 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
152
153 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
154 *out = NULL;
155
156 return E_NOINTERFACE;
157}
#define debugstr_guid
Definition: kernel32.h:35
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ shader_validator_Release()

static ULONG WINAPI shader_validator_Release ( IDirect3DShaderValidator9 *  iface)
static

Definition at line 166 of file d3d9_main.c.

167{
168 TRACE("iface %p.\n", iface);
169
170 return 1;
171}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3d9  )

Variable Documentation

◆ D3DPERF_event_level

int D3DPERF_event_level = 0
static

Definition at line 29 of file d3d9_main.c.

Referenced by D3DPERF_BeginEvent(), and D3DPERF_EndEvent().

◆ shader_validator

IDirect3DShaderValidator9 shader_validator = {&shader_validator_vtbl}
static

Definition at line 213 of file d3d9_main.c.

Referenced by Direct3DShaderValidatorCreate9().

◆ shader_validator_vtbl

const struct IDirect3DShaderValidator9Vtbl shader_validator_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI shader_validator_Begin(IDirect3DShaderValidator9 *iface, shader_validator_cb callback, void *context, DWORD_PTR arg3)
Definition: d3d9_main.c:175
static ULONG WINAPI shader_validator_Release(IDirect3DShaderValidator9 *iface)
Definition: d3d9_main.c:166
static HRESULT WINAPI shader_validator_Instruction(IDirect3DShaderValidator9 *iface, const char *file, int line, const DWORD *tokens, unsigned int token_count)
Definition: d3d9_main.c:187
static ULONG WINAPI shader_validator_AddRef(IDirect3DShaderValidator9 *iface)
Definition: d3d9_main.c:159
static HRESULT WINAPI shader_validator_QueryInterface(IDirect3DShaderValidator9 *iface, REFIID iid, void **out)
Definition: d3d9_main.c:149
static HRESULT WINAPI shader_validator_End(IDirect3DShaderValidator9 *iface)
Definition: d3d9_main.c:196

Definition at line 203 of file d3d9_main.c.