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

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3d9)
 
static struct d3d9_stateblock * impl_from_IDirect3DStateBlock9 (IDirect3DStateBlock9 *iface)
 
static HRESULT WINAPI d3d9_stateblock_QueryInterface (IDirect3DStateBlock9 *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3d9_stateblock_AddRef (IDirect3DStateBlock9 *iface)
 
static ULONG WINAPI d3d9_stateblock_Release (IDirect3DStateBlock9 *iface)
 
static HRESULT WINAPI d3d9_stateblock_GetDevice (IDirect3DStateBlock9 *iface, IDirect3DDevice9 **device)
 
static HRESULT WINAPI d3d9_stateblock_Capture (IDirect3DStateBlock9 *iface)
 
static HRESULT WINAPI d3d9_stateblock_Apply (IDirect3DStateBlock9 *iface)
 
HRESULT stateblock_init (struct d3d9_stateblock *stateblock, struct d3d9_device *device, D3DSTATEBLOCKTYPE type, struct wined3d_stateblock *wined3d_stateblock)
 

Variables

static const struct IDirect3DStateBlock9Vtbl d3d9_stateblock_vtbl
 

Function Documentation

◆ d3d9_stateblock_AddRef()

static ULONG WINAPI d3d9_stateblock_AddRef ( IDirect3DStateBlock9 *  iface)
static

Definition at line 50 of file stateblock.c.

51{
52 struct d3d9_stateblock *stateblock = impl_from_IDirect3DStateBlock9(iface);
54
55 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
56
57 return refcount;
58}
#define InterlockedIncrement
Definition: armddk.h:53
static struct d3d9_stateblock * impl_from_IDirect3DStateBlock9(IDirect3DStateBlock9 *iface)
Definition: stateblock.c:27
#define TRACE(s)
Definition: solgame.cpp:4
uint32_t ULONG
Definition: typedefs.h:59

◆ d3d9_stateblock_Apply()

static HRESULT WINAPI d3d9_stateblock_Apply ( IDirect3DStateBlock9 *  iface)
static

Definition at line 113 of file stateblock.c.

114{
115 struct d3d9_stateblock *stateblock = impl_from_IDirect3DStateBlock9(iface);
118 struct d3d9_indexbuffer *index_buffer;
120 struct d3d9_texture *texture;
121 struct d3d9_device *device;
122 unsigned int i;
123
124 TRACE("iface %p.\n", iface);
125
128 if (device->recording)
129 {
131 WARN("Trying to apply stateblock while recording, returning D3DERR_INVALIDCALL.\n");
132 return D3DERR_INVALIDCALL;
133 }
135 device->sysmem_vb = 0;
136 for (i = 0; i < D3D9_MAX_STREAMS; ++i)
137 {
138 if (!(wined3d_buffer = device->stateblock_state->streams[i].buffer))
139 continue;
141 continue;
142 if (vertex_buffer->draw_buffer)
143 device->sysmem_vb |= 1u << i;
144 }
145 device->sysmem_ib = (wined3d_buffer = device->stateblock_state->index_buffer)
147 device->auto_mipmaps = 0;
148 for (i = 0; i < D3D9_MAX_TEXTURE_UNITS; ++i)
149 {
150 if ((wined3d_texture = device->stateblock_state->textures[i])
153 device->auto_mipmaps |= 1u << i;
154 else
155 device->auto_mipmaps &= ~(1u << i);
156 }
158
159 return D3D_OK;
160}
#define WARN(fmt,...)
Definition: precomp.h:61
#define D3DERR_INVALIDCALL
Definition: d3d10_private.h:42
#define D3DUSAGE_AUTOGENMIPMAP
Definition: d3d9types.h:113
#define D3D_OK
Definition: d3d.h:106
void *CDECL wined3d_buffer_get_parent(const struct wined3d_buffer *buffer)
Definition: buffer.c:476
void *CDECL wined3d_texture_get_parent(const struct wined3d_texture *texture)
Definition: texture.c:1690
GLenum GLuint texture
Definition: glext.h:6295
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
for(i=0;i< sizeof(testsuite)/sizeof(testsuite[0]);++i) ok(call_test(testsuite[i].func)
struct wined3d_streaming_buffer vertex_buffer index_buffer
Definition: d3d9_private.h:103
struct wined3d_stateblock * wined3d_stateblock
Definition: d3d9_private.h:251
IDirect3DDevice9Ex * parent_device
Definition: d3d9_private.h:252
Definition: devices.h:37
static struct d3d9_device * impl_from_IDirect3DDevice9Ex(IDirect3DDevice9Ex *iface)
Definition: d3d9_private.h:310
#define D3D9_MAX_TEXTURE_UNITS
Definition: d3d9_private.h:41
#define D3D9_MAX_STREAMS
Definition: d3d9_private.h:42
void CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblock, struct wined3d_stateblock *device_state)
Definition: stateblock.c:1156
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539

◆ d3d9_stateblock_Capture()

static HRESULT WINAPI d3d9_stateblock_Capture ( IDirect3DStateBlock9 *  iface)
static

Definition at line 92 of file stateblock.c.

93{
94 struct d3d9_stateblock *stateblock = impl_from_IDirect3DStateBlock9(iface);
95 struct d3d9_device *device;
96
97 TRACE("iface %p.\n", iface);
98
101 if (device->recording)
102 {
104 WARN("Trying to capture stateblock while recording, returning D3DERR_INVALIDCALL.\n");
105 return D3DERR_INVALIDCALL;
106 }
109
110 return D3D_OK;
111}
void CDECL wined3d_stateblock_capture(struct wined3d_stateblock *stateblock, const struct wined3d_stateblock *device_state)
Definition: stateblock.c:893

◆ d3d9_stateblock_GetDevice()

static HRESULT WINAPI d3d9_stateblock_GetDevice ( IDirect3DStateBlock9 *  iface,
IDirect3DDevice9 **  device 
)
static

Definition at line 78 of file stateblock.c.

79{
80 struct d3d9_stateblock *stateblock = impl_from_IDirect3DStateBlock9(iface);
81
82 TRACE("iface %p, device %p.\n", iface, device);
83
84 *device = (IDirect3DDevice9 *)stateblock->parent_device;
86
87 TRACE("Returning device %p.\n", *device);
88
89 return D3D_OK;
90}
#define IDirect3DDevice9_AddRef(p)
Definition: d3d9.h:1335
DWORD IDirect3DDevice9
Definition: dxva2api.idl:22

◆ d3d9_stateblock_QueryInterface()

static HRESULT WINAPI d3d9_stateblock_QueryInterface ( IDirect3DStateBlock9 *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 32 of file stateblock.c.

33{
34 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
35
36 if (IsEqualGUID(riid, &IID_IDirect3DStateBlock9)
38 {
40 *out = iface;
41 return S_OK;
42 }
43
44 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
45
46 *out = NULL;
47 return E_NOINTERFACE;
48}
const GUID IID_IUnknown
#define IDirect3DStateBlock9_AddRef(p)
Definition: d3d9.h:1127
#define NULL
Definition: types.h:112
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#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

◆ d3d9_stateblock_Release()

static ULONG WINAPI d3d9_stateblock_Release ( IDirect3DStateBlock9 *  iface)
static

Definition at line 60 of file stateblock.c.

61{
62 struct d3d9_stateblock *stateblock = impl_from_IDirect3DStateBlock9(iface);
64
65 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
66
67 if (!refcount)
68 {
70
72 free(stateblock);
73 }
74
75 return refcount;
76}
#define InterlockedDecrement
Definition: armddk.h:52
#define IDirect3DDevice9Ex_Release(p)
Definition: d3d9.h:1930
#define free
Definition: debug_ros.c:5
ULONG CDECL wined3d_stateblock_decref(struct wined3d_stateblock *stateblock)
Definition: stateblock.c:670

◆ impl_from_IDirect3DStateBlock9()

static struct d3d9_stateblock * impl_from_IDirect3DStateBlock9 ( IDirect3DStateBlock9 *  iface)
inlinestatic

Definition at line 27 of file stateblock.c.

28{
29 return CONTAINING_RECORD(iface, struct d3d9_stateblock, IDirect3DStateBlock9_iface);
30}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by d3d9_stateblock_AddRef(), d3d9_stateblock_Apply(), d3d9_stateblock_Capture(), d3d9_stateblock_GetDevice(), and d3d9_stateblock_Release().

◆ stateblock_init()

HRESULT stateblock_init ( struct d3d9_stateblock *  stateblock,
struct d3d9_device *  device,
D3DSTATEBLOCKTYPE  type,
struct wined3d_stateblock *  wined3d_stateblock 
)

Definition at line 175 of file stateblock.c.

177{
178 HRESULT hr;
179
181 stateblock->refcount = 1;
182
184 {
186 }
187 else
188 {
190 hr = wined3d_stateblock_create(device->wined3d_device, device->state,
193 if (FAILED(hr))
194 {
195 WARN("Failed to create wined3d stateblock, hr %#lx.\n", hr);
196 return hr;
197 }
198 }
199
200 stateblock->parent_device = &device->IDirect3DDevice9Ex_iface;
202
203 return D3D_OK;
204}
static const struct IDirect3DStateBlock9Vtbl d3d9_stateblock_vtbl
Definition: stateblock.c:163
#define IDirect3DDevice9Ex_AddRef(p)
Definition: d3d9.h:1929
HRESULT hr
Definition: delayimp.cpp:582
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define FAILED(hr)
Definition: intsafe.h:51
IDirect3DStateBlock9 IDirect3DStateBlock9_iface
Definition: d3d9_private.h:249
HRESULT CDECL wined3d_stateblock_create(struct wined3d_device *device, const struct wined3d_stateblock *device_state, enum wined3d_stateblock_type type, struct wined3d_stateblock **stateblock)
Definition: stateblock.c:2508
wined3d_stateblock_type
Definition: wined3d.h:786

Referenced by d3d9_device_CreateStateBlock(), d3d9_device_EndStateBlock(), and wined3d_stateblock_create().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3d9  )

Variable Documentation

◆ d3d9_stateblock_vtbl

const struct IDirect3DStateBlock9Vtbl d3d9_stateblock_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI d3d9_stateblock_QueryInterface(IDirect3DStateBlock9 *iface, REFIID riid, void **out)
Definition: stateblock.c:32
static HRESULT WINAPI d3d9_stateblock_Apply(IDirect3DStateBlock9 *iface)
Definition: stateblock.c:113
static HRESULT WINAPI d3d9_stateblock_GetDevice(IDirect3DStateBlock9 *iface, IDirect3DDevice9 **device)
Definition: stateblock.c:78
static ULONG WINAPI d3d9_stateblock_AddRef(IDirect3DStateBlock9 *iface)
Definition: stateblock.c:50
static ULONG WINAPI d3d9_stateblock_Release(IDirect3DStateBlock9 *iface)
Definition: stateblock.c:60
static HRESULT WINAPI d3d9_stateblock_Capture(IDirect3DStateBlock9 *iface)
Definition: stateblock.c:92

Definition at line 163 of file stateblock.c.

Referenced by stateblock_init().