ReactOS 0.4.17-dev-934-g091855f
inputlayout.c File Reference
#include "d3d11_private.h"
#include "winternl.h"
#include <vkd3d_shader.h>
Include dependency graph for inputlayout.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3d11)
 
static BOOL is_vs_sysval_semantic (const struct vkd3d_shader_signature_element *e)
 
static unsigned int find_input_element (const D3D11_INPUT_ELEMENT_DESC *element_descs, unsigned int element_count, const struct vkd3d_shader_signature_element *ise)
 
static enum wined3d_input_classification wined3d_input_classification_from_d3d11 (D3D11_INPUT_CLASSIFICATION slot_class)
 
static HRESULT d3d11_input_layout_to_wined3d_declaration (const D3D11_INPUT_ELEMENT_DESC *element_descs, UINT element_count, const void *shader_byte_code, SIZE_T shader_byte_code_length, struct wined3d_vertex_element **wined3d_elements)
 
static struct d3d_input_layout * impl_from_ID3D11InputLayout (ID3D11InputLayout *iface)
 
static HRESULT STDMETHODCALLTYPE d3d11_input_layout_QueryInterface (ID3D11InputLayout *iface, REFIID riid, void **object)
 
static ULONG STDMETHODCALLTYPE d3d11_input_layout_AddRef (ID3D11InputLayout *iface)
 
static ULONG STDMETHODCALLTYPE d3d11_input_layout_Release (ID3D11InputLayout *iface)
 
static void STDMETHODCALLTYPE d3d11_input_layout_GetDevice (ID3D11InputLayout *iface, ID3D11Device **device)
 
static HRESULT STDMETHODCALLTYPE d3d11_input_layout_GetPrivateData (ID3D11InputLayout *iface, REFGUID guid, UINT *data_size, void *data)
 
static HRESULT STDMETHODCALLTYPE d3d11_input_layout_SetPrivateData (ID3D11InputLayout *iface, REFGUID guid, UINT data_size, const void *data)
 
static HRESULT STDMETHODCALLTYPE d3d11_input_layout_SetPrivateDataInterface (ID3D11InputLayout *iface, REFGUID guid, const IUnknown *data)
 
static struct d3d_input_layout * impl_from_ID3D10InputLayout (ID3D10InputLayout *iface)
 
static HRESULT STDMETHODCALLTYPE d3d10_input_layout_QueryInterface (ID3D10InputLayout *iface, REFIID riid, void **object)
 
static ULONG STDMETHODCALLTYPE d3d10_input_layout_AddRef (ID3D10InputLayout *iface)
 
static ULONG STDMETHODCALLTYPE d3d10_input_layout_Release (ID3D10InputLayout *iface)
 
static void STDMETHODCALLTYPE d3d10_input_layout_GetDevice (ID3D10InputLayout *iface, ID3D10Device **device)
 
static HRESULT STDMETHODCALLTYPE d3d10_input_layout_GetPrivateData (ID3D10InputLayout *iface, REFGUID guid, UINT *data_size, void *data)
 
static HRESULT STDMETHODCALLTYPE d3d10_input_layout_SetPrivateData (ID3D10InputLayout *iface, REFGUID guid, UINT data_size, const void *data)
 
static HRESULT STDMETHODCALLTYPE d3d10_input_layout_SetPrivateDataInterface (ID3D10InputLayout *iface, REFGUID guid, const IUnknown *data)
 
static void STDMETHODCALLTYPE d3d_input_layout_wined3d_object_destroyed (void *parent)
 
static HRESULT d3d_input_layout_init (struct d3d_input_layout *layout, struct d3d_device *device, const D3D11_INPUT_ELEMENT_DESC *element_descs, UINT element_count, const void *shader_byte_code, SIZE_T shader_byte_code_length)
 
HRESULT d3d_input_layout_create (struct d3d_device *device, const D3D11_INPUT_ELEMENT_DESC *element_descs, UINT element_count, const void *shader_byte_code, SIZE_T shader_byte_code_length, struct d3d_input_layout **layout)
 
struct d3d_input_layout * unsafe_impl_from_ID3D11InputLayout (ID3D11InputLayout *iface)
 
struct d3d_input_layout * unsafe_impl_from_ID3D10InputLayout (ID3D10InputLayout *iface)
 

Variables

static const struct ID3D11InputLayoutVtbl d3d11_input_layout_vtbl
 
static const struct ID3D10InputLayoutVtbl d3d10_input_layout_vtbl
 
static const struct wined3d_parent_ops d3d_input_layout_wined3d_parent_ops
 

Function Documentation

◆ d3d10_input_layout_AddRef()

static ULONG STDMETHODCALLTYPE d3d10_input_layout_AddRef ( ID3D10InputLayout *  iface)
static

Definition at line 259 of file inputlayout.c.

260{
261 struct d3d_input_layout *layout = impl_from_ID3D10InputLayout(iface);
262
263 TRACE("iface %p.\n", iface);
264
266}
static ULONG STDMETHODCALLTYPE d3d11_input_layout_AddRef(ID3D11InputLayout *iface)
Definition: inputlayout.c:154
static struct d3d_input_layout * impl_from_ID3D10InputLayout(ID3D10InputLayout *iface)
Definition: inputlayout.c:242
#define TRACE(s)
Definition: solgame.cpp:4
ID3D11InputLayout ID3D11InputLayout_iface

◆ d3d10_input_layout_GetDevice()

static void STDMETHODCALLTYPE d3d10_input_layout_GetDevice ( ID3D10InputLayout *  iface,
ID3D10Device **  device 
)
static

Definition at line 279 of file inputlayout.c.

280{
281 struct d3d_input_layout *layout = impl_from_ID3D10InputLayout(iface);
282
283 TRACE("iface %p, device %p.\n", iface, device);
284
285 ID3D11Device2_QueryInterface(layout->device, &IID_ID3D10Device, (void **)device);
286}
ID3D11Device2 * device
Definition: devices.h:37

◆ d3d10_input_layout_GetPrivateData()

static HRESULT STDMETHODCALLTYPE d3d10_input_layout_GetPrivateData ( ID3D10InputLayout *  iface,
REFGUID  guid,
UINT *  data_size,
void *  data 
)
static

Definition at line 288 of file inputlayout.c.

290{
291 struct d3d_input_layout *layout = impl_from_ID3D10InputLayout(iface);
292
293 TRACE("iface %p, guid %s, data_size %p, data %p.\n",
294 iface, debugstr_guid(guid), data_size, data);
295
296 return d3d_get_private_data(&layout->private_store, guid, data_size, data);
297}
HRESULT d3d_get_private_data(struct wined3d_private_store *store, REFGUID guid, UINT *data_size, void *data)
Definition: utils.c:803
GUID guid
Definition: version.c:147
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define debugstr_guid
Definition: kernel32.h:35
struct wined3d_private_store private_store

◆ d3d10_input_layout_QueryInterface()

static HRESULT STDMETHODCALLTYPE d3d10_input_layout_QueryInterface ( ID3D10InputLayout *  iface,
REFIID  riid,
void **  object 
)
static

Definition at line 249 of file inputlayout.c.

251{
252 struct d3d_input_layout *layout = impl_from_ID3D10InputLayout(iface);
253
254 TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
255
257}
REFIID riid
Definition: atlbase.h:39
static HRESULT STDMETHODCALLTYPE d3d11_input_layout_QueryInterface(ID3D11InputLayout *iface, REFIID riid, void **object)
Definition: inputlayout.c:124

◆ d3d10_input_layout_Release()

static ULONG STDMETHODCALLTYPE d3d10_input_layout_Release ( ID3D10InputLayout *  iface)
static

Definition at line 268 of file inputlayout.c.

269{
270 struct d3d_input_layout *layout = impl_from_ID3D10InputLayout(iface);
271
272 TRACE("iface %p.\n", iface);
273
275}
static ULONG STDMETHODCALLTYPE d3d11_input_layout_Release(ID3D11InputLayout *iface)
Definition: inputlayout.c:170

◆ d3d10_input_layout_SetPrivateData()

static HRESULT STDMETHODCALLTYPE d3d10_input_layout_SetPrivateData ( ID3D10InputLayout *  iface,
REFGUID  guid,
UINT  data_size,
const void *  data 
)
static

Definition at line 299 of file inputlayout.c.

301{
302 struct d3d_input_layout *layout = impl_from_ID3D10InputLayout(iface);
303
304 TRACE("iface %p, guid %s, data_size %u, data %p.\n",
305 iface, debugstr_guid(guid), data_size, data);
306
307 return d3d_set_private_data(&layout->private_store, guid, data_size, data);
308}
HRESULT d3d_set_private_data(struct wined3d_private_store *store, REFGUID guid, UINT data_size, const void *data)
Definition: utils.c:841

◆ d3d10_input_layout_SetPrivateDataInterface()

static HRESULT STDMETHODCALLTYPE d3d10_input_layout_SetPrivateDataInterface ( ID3D10InputLayout *  iface,
REFGUID  guid,
const IUnknown *  data 
)
static

Definition at line 310 of file inputlayout.c.

312{
313 struct d3d_input_layout *layout = impl_from_ID3D10InputLayout(iface);
314
315 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
316
318}
HRESULT d3d_set_private_data_interface(struct wined3d_private_store *store, REFGUID guid, const IUnknown *object)
Definition: utils.c:867

◆ d3d11_input_layout_AddRef()

static ULONG STDMETHODCALLTYPE d3d11_input_layout_AddRef ( ID3D11InputLayout *  iface)
static

Definition at line 154 of file inputlayout.c.

155{
156 struct d3d_input_layout *layout = impl_from_ID3D11InputLayout(iface);
158
159 TRACE("%p increasing refcount to %lu.\n", layout, refcount);
160
161 if (refcount == 1)
162 {
163 ID3D11Device2_AddRef(layout->device);
165 }
166
167 return refcount;
168}
#define InterlockedIncrement
Definition: armddk.h:53
static struct d3d_input_layout * impl_from_ID3D11InputLayout(ID3D11InputLayout *iface)
Definition: inputlayout.c:119
struct wined3d_vertex_declaration * wined3d_decl
uint32_t ULONG
Definition: typedefs.h:59
ULONG CDECL wined3d_vertex_declaration_incref(struct wined3d_vertex_declaration *declaration)

Referenced by d3d10_input_layout_AddRef().

◆ d3d11_input_layout_GetDevice()

static void STDMETHODCALLTYPE d3d11_input_layout_GetDevice ( ID3D11InputLayout *  iface,
ID3D11Device **  device 
)
static

Definition at line 187 of file inputlayout.c.

189{
190 struct d3d_input_layout *layout = impl_from_ID3D11InputLayout(iface);
191
192 TRACE("iface %p, device %p.\n", iface, device);
193
194 ID3D11Device_AddRef(*device = (ID3D11Device *)layout->device);
195}

◆ d3d11_input_layout_GetPrivateData()

static HRESULT STDMETHODCALLTYPE d3d11_input_layout_GetPrivateData ( ID3D11InputLayout *  iface,
REFGUID  guid,
UINT *  data_size,
void *  data 
)
static

Definition at line 197 of file inputlayout.c.

199{
200 struct d3d_input_layout *layout = impl_from_ID3D11InputLayout(iface);
201
202 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
203
204 return d3d_get_private_data(&layout->private_store, guid, data_size, data);
205}

◆ d3d11_input_layout_QueryInterface()

static HRESULT STDMETHODCALLTYPE d3d11_input_layout_QueryInterface ( ID3D11InputLayout *  iface,
REFIID  riid,
void **  object 
)
static

Definition at line 124 of file inputlayout.c.

126{
127 struct d3d_input_layout *layout = impl_from_ID3D11InputLayout(iface);
128
129 TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
130
131 if (IsEqualGUID(riid, &IID_ID3D11InputLayout)
132 || IsEqualGUID(riid, &IID_ID3D11DeviceChild)
134 {
135 ID3D11InputLayout_AddRef(iface);
136 *object = iface;
137 return S_OK;
138 }
139
140 if (IsEqualGUID(riid, &IID_ID3D10InputLayout)
141 || IsEqualGUID(riid, &IID_ID3D10DeviceChild))
142 {
143 ID3D10InputLayout_AddRef(&layout->ID3D10InputLayout_iface);
144 *object = &layout->ID3D10InputLayout_iface;
145 return S_OK;
146 }
147
148 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
149
150 *object = NULL;
151 return E_NOINTERFACE;
152}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define NULL
Definition: types.h:112
#define S_OK
Definition: intsafe.h:52
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
ID3D10InputLayout ID3D10InputLayout_iface
#define E_NOINTERFACE
Definition: winerror.h:3479

Referenced by d3d10_input_layout_QueryInterface().

◆ d3d11_input_layout_Release()

static ULONG STDMETHODCALLTYPE d3d11_input_layout_Release ( ID3D11InputLayout *  iface)
static

Definition at line 170 of file inputlayout.c.

171{
172 struct d3d_input_layout *layout = impl_from_ID3D11InputLayout(iface);
174
175 TRACE("%p decreasing refcount to %lu.\n", layout, refcount);
176
177 if (!refcount)
178 {
179 ID3D11Device2 *device = layout->device;
181 ID3D11Device2_Release(device);
182 }
183
184 return refcount;
185}
#define InterlockedDecrement
Definition: armddk.h:52
ULONG CDECL wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration *declaration)

Referenced by d3d10_input_layout_Release().

◆ d3d11_input_layout_SetPrivateData()

static HRESULT STDMETHODCALLTYPE d3d11_input_layout_SetPrivateData ( ID3D11InputLayout *  iface,
REFGUID  guid,
UINT  data_size,
const void *  data 
)
static

Definition at line 207 of file inputlayout.c.

209{
210 struct d3d_input_layout *layout = impl_from_ID3D11InputLayout(iface);
211
212 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
213
214 return d3d_set_private_data(&layout->private_store, guid, data_size, data);
215}

◆ d3d11_input_layout_SetPrivateDataInterface()

static HRESULT STDMETHODCALLTYPE d3d11_input_layout_SetPrivateDataInterface ( ID3D11InputLayout *  iface,
REFGUID  guid,
const IUnknown *  data 
)
static

Definition at line 217 of file inputlayout.c.

219{
220 struct d3d_input_layout *layout = impl_from_ID3D11InputLayout(iface);
221
222 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
223
225}

◆ d3d11_input_layout_to_wined3d_declaration()

static HRESULT d3d11_input_layout_to_wined3d_declaration ( const D3D11_INPUT_ELEMENT_DESC *  element_descs,
UINT  element_count,
const void *  shader_byte_code,
SIZE_T  shader_byte_code_length,
struct wined3d_vertex_element **  wined3d_elements 
)
static

Definition at line 54 of file inputlayout.c.

57{
58 const struct vkd3d_shader_code dxbc = {shader_byte_code, shader_byte_code_length};
61 struct vkd3d_shader_signature is;
62 unsigned int i, index;
63 int ret;
64
65 if ((ret = vkd3d_shader_parse_input_signature(&dxbc, &is, NULL)) < 0)
66 {
67 ERR("Failed to extract input signature, ret %d.\n", ret);
68 return E_FAIL;
69 }
70
71 if (!(*wined3d_elements = calloc(element_count, sizeof(**wined3d_elements))))
72 {
73 ERR("Failed to allocate wined3d vertex element array memory.\n");
75 return E_OUTOFMEMORY;
76 }
77
78 for (i = 0; i < element_count; ++i)
79 {
80 struct wined3d_vertex_element *e = &(*wined3d_elements)[i];
81
82 f = &element_descs[i];
83
84 e->format = wined3dformat_from_dxgi_format(f->Format);
85 e->input_slot = f->InputSlot;
86 e->offset = f->AlignedByteOffset;
87 e->output_slot = WINED3D_OUTPUT_SLOT_UNUSED;
88 e->input_slot_class = wined3d_input_classification_from_d3d11(f->InputSlotClass);
89 e->instance_data_step_rate = f->InstanceDataStepRate;
91 e->usage = 0;
92 e->usage_idx = 0;
93 }
94
95 ise = is.elements;
96
97 for (i = 0; i < is.element_count; ++i)
98 {
99 if ((index = find_input_element(element_descs, element_count, &ise[i])) < element_count)
100 {
101 (*wined3d_elements)[index].output_slot = ise[i].register_index;
102 }
103 else if (!is_vs_sysval_semantic(&ise[i]))
104 {
105 WARN("Input element %s%u not found in shader signature.\n", ise[i].semantic_name, ise[i].semantic_index);
106 free(*wined3d_elements);
108 return E_INVALIDARG;
109 }
110 }
111
113
114 return S_OK;
115}
#define index(s, c)
Definition: various.h:29
#define ERR(fmt,...)
Definition: precomp.h:57
enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format)
Definition: utils.c:323
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
return ret
Definition: mutex.c:147
GLuint index
Definition: glext.h:6031
GLfloat f
Definition: glext.h:7540
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
static BOOL is_vs_sysval_semantic(const struct vkd3d_shader_signature_element *e)
Definition: inputlayout.c:26
static enum wined3d_input_classification wined3d_input_classification_from_d3d11(D3D11_INPUT_CLASSIFICATION slot_class)
Definition: inputlayout.c:49
static unsigned int find_input_element(const D3D11_INPUT_ELEMENT_DESC *element_descs, unsigned int element_count, const struct vkd3d_shader_signature_element *ise)
Definition: inputlayout.c:31
#define e
Definition: ke_i.h:82
#define f
Definition: ke_i.h:83
static ULONG ** element_count
Definition: exception.c:124
#define calloc
Definition: rosglue.h:14
VKD3D_SHADER_API int vkd3d_shader_parse_input_signature(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_signature *signature, char **messages)
VKD3D_SHADER_API void vkd3d_shader_free_shader_signature(struct vkd3d_shader_signature *signature)
@ WINED3D_DECL_METHOD_DEFAULT
Definition: wined3d.h:796
#define WINED3D_OUTPUT_SLOT_UNUSED
Definition: wined3d.h:1574

Referenced by d3d_input_layout_init().

◆ d3d_input_layout_create()

HRESULT d3d_input_layout_create ( struct d3d_device *  device,
const D3D11_INPUT_ELEMENT_DESC *  element_descs,
UINT  element_count,
const void *  shader_byte_code,
SIZE_T  shader_byte_code_length,
struct d3d_input_layout **  layout 
)

Definition at line 385 of file inputlayout.c.

389{
390 struct d3d_input_layout *object;
391 HRESULT hr;
392
393 if (!element_descs) return E_INVALIDARG;
394
395 if (!(object = calloc(1, sizeof(*object))))
396 return E_OUTOFMEMORY;
397
398 if (FAILED(hr = d3d_input_layout_init(object, device, element_descs, element_count,
399 shader_byte_code, shader_byte_code_length)))
400 {
401 WARN("Failed to initialise input layout, hr %#lx.\n", hr);
402 free(object);
403 return hr;
404 }
405
406 TRACE("Created input layout %p.\n", object);
407 *layout = object;
408
409 return S_OK;
410}
HRESULT hr
Definition: delayimp.cpp:582
static HRESULT d3d_input_layout_init(struct d3d_input_layout *layout, struct d3d_device *device, const D3D11_INPUT_ELEMENT_DESC *element_descs, UINT element_count, const void *shader_byte_code, SIZE_T shader_byte_code_length)
Definition: inputlayout.c:346
#define FAILED(hr)
Definition: intsafe.h:51

Referenced by d3d10_device_CreateInputLayout(), and d3d11_device_CreateInputLayout().

◆ d3d_input_layout_init()

static HRESULT d3d_input_layout_init ( struct d3d_input_layout *  layout,
struct d3d_device *  device,
const D3D11_INPUT_ELEMENT_DESC *  element_descs,
UINT  element_count,
const void *  shader_byte_code,
SIZE_T  shader_byte_code_length 
)
static

Definition at line 346 of file inputlayout.c.

349{
350 struct wined3d_vertex_element *wined3d_elements;
351 HRESULT hr;
352
355 layout->refcount = 1;
358
360 shader_byte_code, shader_byte_code_length, &wined3d_elements)))
361 {
362 WARN("Failed to create wined3d vertex declaration elements, hr %#lx.\n", hr);
365 return hr;
366 }
367
368 hr = wined3d_vertex_declaration_create(device->wined3d_device, wined3d_elements, element_count,
370 free(wined3d_elements);
371 if (FAILED(hr))
372 {
373 WARN("Failed to create wined3d vertex declaration, hr %#lx.\n", hr);
376 return hr;
377 }
379
380 ID3D11Device2_AddRef(layout->device = &device->ID3D11Device2_iface);
381
382 return S_OK;
383}
static const struct ID3D11InputLayoutVtbl d3d11_input_layout_vtbl
Definition: inputlayout.c:227
static HRESULT d3d11_input_layout_to_wined3d_declaration(const D3D11_INPUT_ELEMENT_DESC *element_descs, UINT element_count, const void *shader_byte_code, SIZE_T shader_byte_code_length, struct wined3d_vertex_element **wined3d_elements)
Definition: inputlayout.c:54
static const struct wined3d_parent_ops d3d_input_layout_wined3d_parent_ops
Definition: inputlayout.c:341
static const struct ID3D10InputLayoutVtbl d3d10_input_layout_vtbl
Definition: inputlayout.c:320
HRESULT CDECL wined3d_vertex_declaration_create(struct wined3d_device *device, const struct wined3d_vertex_element *elements, UINT element_count, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_vertex_declaration **declaration)
static void wined3d_private_store_cleanup(struct wined3d_private_store *store)
Definition: wined3d.h:2636
static void wined3d_private_store_init(struct wined3d_private_store *store)
Definition: wined3d.h:2607
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539

Referenced by d3d_input_layout_create().

◆ d3d_input_layout_wined3d_object_destroyed()

static void STDMETHODCALLTYPE d3d_input_layout_wined3d_object_destroyed ( void *  parent)
static

Definition at line 333 of file inputlayout.c.

334{
335 struct d3d_input_layout *layout = parent;
336
338 free(parent);
339}
r parent
Definition: btrfs.c:3010

◆ find_input_element()

static unsigned int find_input_element ( const D3D11_INPUT_ELEMENT_DESC *  element_descs,
unsigned int  element_count,
const struct vkd3d_shader_signature_element *  ise 
)
static

Definition at line 31 of file inputlayout.c.

33{
35 unsigned int i;
36
37 if (ise->stream_index)
38 return element_count;
39
40 for (i = 0; i < element_count; ++i)
41 {
42 f = &element_descs[i];
43 if (!stricmp(ise->semantic_name, f->SemanticName) && ise->semantic_index == f->SemanticIndex)
44 return i;
45 }
46 return element_count;
47}
#define stricmp(_String1, _String2)
Definition: compat.h:24

Referenced by d3d11_input_layout_to_wined3d_declaration().

◆ impl_from_ID3D10InputLayout()

◆ impl_from_ID3D11InputLayout()

◆ is_vs_sysval_semantic()

static BOOL is_vs_sysval_semantic ( const struct vkd3d_shader_signature_element *  e)
static

Definition at line 26 of file inputlayout.c.

27{
28 return !stricmp(e->semantic_name, "sv_instanceid") || !stricmp(e->semantic_name, "sv_vertexid");
29}

Referenced by d3d11_input_layout_to_wined3d_declaration().

◆ unsafe_impl_from_ID3D10InputLayout()

struct d3d_input_layout * unsafe_impl_from_ID3D10InputLayout ( ID3D10InputLayout *  iface)

Definition at line 421 of file inputlayout.c.

422{
423 if (!iface)
424 return NULL;
425 assert(iface->lpVtbl == &d3d10_input_layout_vtbl);
426
427 return impl_from_ID3D10InputLayout(iface);
428}
#define assert(_expr)
Definition: assert.h:32

Referenced by d3d10_device_IASetInputLayout().

◆ unsafe_impl_from_ID3D11InputLayout()

struct d3d_input_layout * unsafe_impl_from_ID3D11InputLayout ( ID3D11InputLayout *  iface)

Definition at line 412 of file inputlayout.c.

413{
414 if (!iface)
415 return NULL;
416 assert(iface->lpVtbl == &d3d11_input_layout_vtbl);
417
418 return impl_from_ID3D11InputLayout(iface);
419}

Referenced by d3d11_device_context_IASetInputLayout().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3d11  )

◆ wined3d_input_classification_from_d3d11()

static enum wined3d_input_classification wined3d_input_classification_from_d3d11 ( D3D11_INPUT_CLASSIFICATION  slot_class)
static

Definition at line 49 of file inputlayout.c.

50{
51 return (enum wined3d_input_classification)slot_class;
52}
wined3d_input_classification
Definition: wined3d.h:1825

Referenced by d3d11_input_layout_to_wined3d_declaration().

Variable Documentation

◆ d3d10_input_layout_vtbl

const struct ID3D10InputLayoutVtbl d3d10_input_layout_vtbl
static
Initial value:
=
{
}
static HRESULT STDMETHODCALLTYPE d3d10_input_layout_SetPrivateDataInterface(ID3D10InputLayout *iface, REFGUID guid, const IUnknown *data)
Definition: inputlayout.c:310
static HRESULT STDMETHODCALLTYPE d3d10_input_layout_GetPrivateData(ID3D10InputLayout *iface, REFGUID guid, UINT *data_size, void *data)
Definition: inputlayout.c:288
static HRESULT STDMETHODCALLTYPE d3d10_input_layout_QueryInterface(ID3D10InputLayout *iface, REFIID riid, void **object)
Definition: inputlayout.c:249
static void STDMETHODCALLTYPE d3d10_input_layout_GetDevice(ID3D10InputLayout *iface, ID3D10Device **device)
Definition: inputlayout.c:279
static ULONG STDMETHODCALLTYPE d3d10_input_layout_AddRef(ID3D10InputLayout *iface)
Definition: inputlayout.c:259
static ULONG STDMETHODCALLTYPE d3d10_input_layout_Release(ID3D10InputLayout *iface)
Definition: inputlayout.c:268
static HRESULT STDMETHODCALLTYPE d3d10_input_layout_SetPrivateData(ID3D10InputLayout *iface, REFGUID guid, UINT data_size, const void *data)
Definition: inputlayout.c:299

Definition at line 320 of file inputlayout.c.

Referenced by d3d_input_layout_init(), and unsafe_impl_from_ID3D10InputLayout().

◆ d3d11_input_layout_vtbl

const struct ID3D11InputLayoutVtbl d3d11_input_layout_vtbl
static
Initial value:
=
{
}
static HRESULT STDMETHODCALLTYPE d3d11_input_layout_SetPrivateData(ID3D11InputLayout *iface, REFGUID guid, UINT data_size, const void *data)
Definition: inputlayout.c:207
static void STDMETHODCALLTYPE d3d11_input_layout_GetDevice(ID3D11InputLayout *iface, ID3D11Device **device)
Definition: inputlayout.c:187
static HRESULT STDMETHODCALLTYPE d3d11_input_layout_SetPrivateDataInterface(ID3D11InputLayout *iface, REFGUID guid, const IUnknown *data)
Definition: inputlayout.c:217
static HRESULT STDMETHODCALLTYPE d3d11_input_layout_GetPrivateData(ID3D11InputLayout *iface, REFGUID guid, UINT *data_size, void *data)
Definition: inputlayout.c:197

Definition at line 227 of file inputlayout.c.

Referenced by d3d_input_layout_init(), and unsafe_impl_from_ID3D11InputLayout().

◆ d3d_input_layout_wined3d_parent_ops

const struct wined3d_parent_ops d3d_input_layout_wined3d_parent_ops
static
Initial value:
=
{
}
static void STDMETHODCALLTYPE d3d_input_layout_wined3d_object_destroyed(void *parent)
Definition: inputlayout.c:333

Definition at line 341 of file inputlayout.c.

Referenced by d3d_input_layout_init().