ReactOS 0.4.15-dev-7906-g1b85a5f
vertexdeclaration.c
Go to the documentation of this file.
1/*
2 * IDirect3DVertexDeclaration9 implementation
3 *
4 * Copyright 2002-2003 Raphael Junqueira
5 * Jason Edmeades
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#include "config.h"
23#include "d3d9_private.h"
24
26
27static const struct
28{
30 unsigned int component_count;
31 unsigned int component_size;
32}
34{
35 /* D3DDECLTYPE_FLOAT1 */ {WINED3DFMT_R32_FLOAT, 1, sizeof(float)},
36 /* D3DDECLTYPE_FLOAT2 */ {WINED3DFMT_R32G32_FLOAT, 2, sizeof(float)},
37 /* D3DDECLTYPE_FLOAT3 */ {WINED3DFMT_R32G32B32_FLOAT, 3, sizeof(float)},
38 /* D3DDECLTYPE_FLOAT4 */ {WINED3DFMT_R32G32B32A32_FLOAT, 4, sizeof(float)},
39 /* D3DDECLTYPE_D3DCOLOR */ {WINED3DFMT_B8G8R8A8_UNORM, 4, sizeof(BYTE)},
40 /* D3DDECLTYPE_UBYTE4 */ {WINED3DFMT_R8G8B8A8_UINT, 4, sizeof(BYTE)},
41 /* D3DDECLTYPE_SHORT2 */ {WINED3DFMT_R16G16_SINT, 2, sizeof(short int)},
42 /* D3DDECLTYPE_SHORT4 */ {WINED3DFMT_R16G16B16A16_SINT, 4, sizeof(short int)},
43 /* D3DDECLTYPE_UBYTE4N */ {WINED3DFMT_R8G8B8A8_UNORM, 4, sizeof(BYTE)},
44 /* D3DDECLTYPE_SHORT2N */ {WINED3DFMT_R16G16_SNORM, 2, sizeof(short int)},
45 /* D3DDECLTYPE_SHORT4N */ {WINED3DFMT_R16G16B16A16_SNORM, 4, sizeof(short int)},
46 /* D3DDECLTYPE_USHORT2N */ {WINED3DFMT_R16G16_UNORM, 2, sizeof(short int)},
47 /* D3DDECLTYPE_USHORT4N */ {WINED3DFMT_R16G16B16A16_UNORM, 4, sizeof(short int)},
48 /* D3DDECLTYPE_UDEC3 */ {WINED3DFMT_R10G10B10X2_UINT, 3, sizeof(short int)},
49 /* D3DDECLTYPE_DEC3N */ {WINED3DFMT_R10G10B10X2_SNORM, 3, sizeof(short int)},
50 /* D3DDECLTYPE_FLOAT16_2 */ {WINED3DFMT_R16G16_FLOAT, 2, sizeof(short int)},
51 /* D3DDECLTYPE_FLOAT16_4 */ {WINED3DFMT_R16G16B16A16_FLOAT, 4, sizeof(short int)}
52};
53
54static inline struct d3d9_vertex_declaration *impl_from_IDirect3DVertexDeclaration9(IDirect3DVertexDeclaration9 *iface)
55{
57}
58
60 DWORD fvf,
61 D3DVERTEXELEMENT9** ppVertexElements) {
62
63 unsigned int idx, idx2;
64 unsigned int offset;
65 BOOL has_pos = (fvf & D3DFVF_POSITION_MASK) != 0;
66 BOOL has_blend = (fvf & D3DFVF_XYZB5) > D3DFVF_XYZRHW;
67 BOOL has_blend_idx = has_blend &&
68 (((fvf & D3DFVF_XYZB5) == D3DFVF_XYZB5) ||
71 BOOL has_normal = (fvf & D3DFVF_NORMAL) != 0;
72 BOOL has_psize = (fvf & D3DFVF_PSIZE) != 0;
73
74 BOOL has_diffuse = (fvf & D3DFVF_DIFFUSE) != 0;
75 BOOL has_specular = (fvf & D3DFVF_SPECULAR) !=0;
76
78 DWORD texcoords = (fvf & 0xFFFF0000) >> 16;
79
80 D3DVERTEXELEMENT9 end_element = D3DDECL_END();
82
83 unsigned int size;
84 DWORD num_blends = 1 + (((fvf & D3DFVF_XYZB5) - D3DFVF_XYZB1) >> 1);
85 if (has_blend_idx) num_blends--;
86
87 /* Compute declaration size */
88 size = has_pos + (has_blend && num_blends > 0) + has_blend_idx + has_normal +
89 has_psize + has_diffuse + has_specular + num_textures + 1;
90
91 /* convert the declaration */
92 if (!(elements = heap_alloc(size * sizeof(*elements))))
94
95 elements[size-1] = end_element;
96 idx = 0;
97 if (has_pos) {
98 if (!has_blend && (fvf & D3DFVF_XYZRHW)) {
101 }
102 else if (!has_blend && (fvf & D3DFVF_XYZW) == D3DFVF_XYZW) {
105 }
106 else {
109 }
111 idx++;
112 }
113 if (has_blend && (num_blends > 0)) {
116 else {
117 switch(num_blends) {
118 case 1: elements[idx].Type = D3DDECLTYPE_FLOAT1; break;
119 case 2: elements[idx].Type = D3DDECLTYPE_FLOAT2; break;
120 case 3: elements[idx].Type = D3DDECLTYPE_FLOAT3; break;
121 case 4: elements[idx].Type = D3DDECLTYPE_FLOAT4; break;
122 default:
123 ERR("Unexpected amount of blend values: %u\n", num_blends);
124 }
125 }
128 idx++;
129 }
130 if (has_blend_idx) {
134 else if (fvf & D3DFVF_LASTBETA_D3DCOLOR)
136 else
140 idx++;
141 }
142 if (has_normal) {
146 idx++;
147 }
148 if (has_psize) {
152 idx++;
153 }
154 if (has_diffuse) {
158 idx++;
159 }
160 if (has_specular) {
164 idx++;
165 }
166 for (idx2 = 0; idx2 < num_textures; idx2++) {
167 unsigned int numcoords = (texcoords >> (idx2*2)) & 0x03;
168 switch (numcoords) {
171 break;
174 break;
177 break;
180 break;
181 }
183 elements[idx].UsageIndex = idx2;
184 idx++;
185 }
186
187 /* Now compute offsets, and initialize the rest of the fields */
188 for (idx = 0, offset = 0; idx < size-1; idx++) {
189 elements[idx].Stream = 0;
192 offset += d3d_dtype_lookup[elements[idx].Type].component_count
193 * d3d_dtype_lookup[elements[idx].Type].component_size;
194 }
195
196 *ppVertexElements = elements;
197 return D3D_OK;
198}
199
200static HRESULT WINAPI d3d9_vertex_declaration_QueryInterface(IDirect3DVertexDeclaration9 *iface,
201 REFIID riid, void **out)
202{
203 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
204
205 if (IsEqualGUID(riid, &IID_IDirect3DVertexDeclaration9)
207 {
209 *out = iface;
210 return S_OK;
211 }
212
213 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
214
215 *out = NULL;
216 return E_NOINTERFACE;
217}
218
219static ULONG WINAPI d3d9_vertex_declaration_AddRef(IDirect3DVertexDeclaration9 *iface)
220{
223
224 TRACE("%p increasing refcount to %u.\n", iface, refcount);
225
226 if (refcount == 1)
227 {
232 }
233
234 return refcount;
235}
236
237static ULONG WINAPI d3d9_vertex_declaration_Release(IDirect3DVertexDeclaration9 *iface)
238{
241
242 TRACE("%p decreasing refcount to %u.\n", iface, refcount);
243
244 if (!refcount)
245 {
246 IDirect3DDevice9Ex *parent_device = declaration->parent_device;
250
251 /* Release the device last, as it may cause the device to be destroyed. */
253 }
254
255 return refcount;
256}
257
258static HRESULT WINAPI d3d9_vertex_declaration_GetDevice(IDirect3DVertexDeclaration9 *iface, IDirect3DDevice9 **device)
259{
261
262 TRACE("iface %p, device %p.\n", iface, device);
263
264 *device = (IDirect3DDevice9 *)declaration->parent_device;
266
267 TRACE("Returning device %p.\n", *device);
268
269 return D3D_OK;
270}
271
272static HRESULT WINAPI d3d9_vertex_declaration_GetDeclaration(IDirect3DVertexDeclaration9 *iface,
274{
276
277 TRACE("iface %p, elements %p, element_count %p.\n", iface, elements, element_count);
278
279 *element_count = declaration->element_count;
280
281 /* Passing a NULL elements is used to just retrieve the number of elements */
282 if (!elements)
283 return D3D_OK;
284
285 TRACE("Copying %p to %p.\n", declaration->elements, elements);
286 memcpy(elements, declaration->elements, sizeof(*declaration->elements) * declaration->element_count);
287
288 return D3D_OK;
289}
290
291static const struct IDirect3DVertexDeclaration9Vtbl d3d9_vertex_declaration_vtbl =
292{
293 /* IUnknown */
297 /* IDirect3DVertexDeclaration9 */
300};
301
303{
304 if (!iface)
305 return NULL;
306 assert(iface->lpVtbl == &d3d9_vertex_declaration_vtbl);
308}
309
311{
313 heap_free(declaration->elements);
315}
316
318{
320};
321
323 struct wined3d_vertex_element **wined3d_elements, UINT *element_count)
324{
326 UINT count = 1;
327 UINT i;
328
329 TRACE("d3d9_elements %p, wined3d_elements %p, element_count %p\n", d3d9_elements, wined3d_elements, element_count);
330
331 element = d3d9_elements;
332 while (element++->Stream != 0xff && count++ < 128);
333
334 if (count == 128) return E_FAIL;
335
336 /* Skip the END element */
337 --count;
338
339 if (!(*wined3d_elements = heap_alloc(count * sizeof(**wined3d_elements))))
340 {
341 FIXME("Memory allocation failed\n");
343 }
344
345 for (i = 0; i < count; ++i)
346 {
347 if (d3d9_elements[i].Type >= ARRAY_SIZE(d3d_dtype_lookup))
348 {
349 WARN("Invalid element type %#x.\n", d3d9_elements[i].Type);
350 heap_free(*wined3d_elements);
351 return E_FAIL;
352 }
353 (*wined3d_elements)[i].format = d3d_dtype_lookup[d3d9_elements[i].Type].format;
354 (*wined3d_elements)[i].input_slot = d3d9_elements[i].Stream;
355 (*wined3d_elements)[i].offset = d3d9_elements[i].Offset;
356 (*wined3d_elements)[i].output_slot = WINED3D_OUTPUT_SLOT_SEMANTIC;
357 (*wined3d_elements)[i].input_slot_class = WINED3D_INPUT_PER_VERTEX_DATA;
358 (*wined3d_elements)[i].instance_data_step_rate = 0;
359 (*wined3d_elements)[i].method = d3d9_elements[i].Method;
360 (*wined3d_elements)[i].usage = d3d9_elements[i].Usage;
361 (*wined3d_elements)[i].usage_idx = d3d9_elements[i].UsageIndex;
362 }
363
364 *element_count = count;
365
366 return D3D_OK;
367}
368
370 struct d3d9_device *device, const D3DVERTEXELEMENT9 *elements)
371{
372 struct wined3d_vertex_element *wined3d_elements;
373 UINT wined3d_element_count;
374 UINT element_count;
375 HRESULT hr;
376
377 hr = convert_to_wined3d_declaration(elements, &wined3d_elements, &wined3d_element_count);
378 if (FAILED(hr))
379 {
380 WARN("Failed to create wined3d vertex declaration elements, hr %#x.\n", hr);
381 return hr;
382 }
383
384 declaration->IDirect3DVertexDeclaration9_iface.lpVtbl = &d3d9_vertex_declaration_vtbl;
385 declaration->refcount = 1;
386
387 element_count = wined3d_element_count + 1;
388 if (!(declaration->elements = heap_alloc(element_count * sizeof(*declaration->elements))))
389 {
390 heap_free(wined3d_elements);
391 ERR("Failed to allocate vertex declaration elements memory.\n");
393 }
394 memcpy(declaration->elements, elements, element_count * sizeof(*elements));
395 declaration->element_count = element_count;
396
398 hr = wined3d_vertex_declaration_create(device->wined3d_device, wined3d_elements, wined3d_element_count,
401 heap_free(wined3d_elements);
402 if (FAILED(hr))
403 {
404 heap_free(declaration->elements);
405 WARN("Failed to create wined3d vertex declaration, hr %#x.\n", hr);
406 return hr;
407 }
408
409 declaration->parent_device = &device->IDirect3DDevice9Ex_iface;
411
412 return D3D_OK;
413}
414
416 const D3DVERTEXELEMENT9 *elements, struct d3d9_vertex_declaration **declaration)
417{
419 HRESULT hr;
420
421 if (!(object = heap_alloc_zero(sizeof(*object))))
422 return E_OUTOFMEMORY;
423
425 if (FAILED(hr))
426 {
427 WARN("Failed to initialize vertex declaration, hr %#x.\n", hr);
428 heap_free(object);
429 return hr;
430 }
431
432 TRACE("Created vertex declaration %p.\n", object);
434
435 return D3D_OK;
436}
Type
Definition: Type.h:7
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define ARRAY_SIZE(A)
Definition: main.h:33
const GUID IID_IUnknown
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
#define FIXME(fmt,...)
Definition: debug.h:111
#define WARN(fmt,...)
Definition: debug.h:112
#define ERR(fmt,...)
Definition: debug.h:110
static UINT convert_to_wined3d_declaration(const DWORD *d3d8_elements, DWORD *d3d8_elements_size, struct wined3d_vertex_element **wined3d_elements)
#define D3DFVF_DIFFUSE
Definition: d3d8types.h:122
#define D3DFVF_TEXCOUNT_SHIFT
Definition: d3d8types.h:125
#define D3DFVF_XYZB1
Definition: d3d8types.h:115
#define D3DFVF_LASTBETA_UBYTE4
Definition: d3d8types.h:135
#define D3DFVF_XYZB5
Definition: d3d8types.h:119
#define D3DFVF_XYZRHW
Definition: d3d8types.h:114
#define D3DFVF_NORMAL
Definition: d3d8types.h:120
#define D3DFVF_TEXTUREFORMAT4
Definition: d3d8types.h:63
#define D3DFVF_XYZB2
Definition: d3d8types.h:116
#define D3DFVF_TEXTUREFORMAT3
Definition: d3d8types.h:62
#define D3DFVF_TEXCOUNT_MASK
Definition: d3d8types.h:124
#define D3DFVF_TEXTUREFORMAT1
Definition: d3d8types.h:60
#define D3DFVF_PSIZE
Definition: d3d8types.h:121
#define D3DFVF_TEXTUREFORMAT2
Definition: d3d8types.h:61
#define D3DFVF_SPECULAR
Definition: d3d8types.h:123
#define D3DFVF_POSITION_MASK
Definition: d3d8types.h:112
static HRESULT WINAPI d3d9_vertex_declaration_GetDeclaration(IDirect3DVertexDeclaration9 *iface, D3DVERTEXELEMENT9 *elements, UINT *element_count)
unsigned int component_count
enum wined3d_format_id format
struct d3d9_vertex_declaration * unsafe_impl_from_IDirect3DVertexDeclaration9(IDirect3DVertexDeclaration9 *iface)
static const struct IDirect3DVertexDeclaration9Vtbl d3d9_vertex_declaration_vtbl
static HRESULT vertexdeclaration_init(struct d3d9_vertex_declaration *declaration, struct d3d9_device *device, const D3DVERTEXELEMENT9 *elements)
static void STDMETHODCALLTYPE d3d9_vertexdeclaration_wined3d_object_destroyed(void *parent)
static const struct @235 d3d_dtype_lookup[]
static struct d3d9_vertex_declaration * impl_from_IDirect3DVertexDeclaration9(IDirect3DVertexDeclaration9 *iface)
static const struct wined3d_parent_ops d3d9_vertexdeclaration_wined3d_parent_ops
static HRESULT WINAPI d3d9_vertex_declaration_GetDevice(IDirect3DVertexDeclaration9 *iface, IDirect3DDevice9 **device)
HRESULT d3d9_vertex_declaration_create(struct d3d9_device *device, const D3DVERTEXELEMENT9 *elements, struct d3d9_vertex_declaration **declaration)
static HRESULT WINAPI d3d9_vertex_declaration_QueryInterface(IDirect3DVertexDeclaration9 *iface, REFIID riid, void **out)
static ULONG WINAPI d3d9_vertex_declaration_AddRef(IDirect3DVertexDeclaration9 *iface)
HRESULT vdecl_convert_fvf(DWORD fvf, D3DVERTEXELEMENT9 **ppVertexElements)
static ULONG WINAPI d3d9_vertex_declaration_Release(IDirect3DVertexDeclaration9 *iface)
unsigned int component_size
#define IDirect3DDevice9Ex_Release(p)
Definition: d3d9.h:1917
#define IDirect3DVertexDeclaration9_AddRef(p)
Definition: d3d9.h:1184
#define IDirect3DDevice9Ex_AddRef(p)
Definition: d3d9.h:1916
#define IDirect3DDevice9_AddRef(p)
Definition: d3d9.h:1507
@ D3DDECLUSAGE_BLENDWEIGHT
Definition: d3d9types.h:221
@ D3DDECLUSAGE_BLENDINDICES
Definition: d3d9types.h:222
@ D3DDECLUSAGE_POSITIONT
Definition: d3d9types.h:229
@ D3DDECLUSAGE_NORMAL
Definition: d3d9types.h:223
@ D3DDECLUSAGE_TEXCOORD
Definition: d3d9types.h:225
@ D3DDECLUSAGE_POSITION
Definition: d3d9types.h:220
@ D3DDECLUSAGE_PSIZE
Definition: d3d9types.h:224
@ D3DDECLUSAGE_COLOR
Definition: d3d9types.h:230
#define D3DFVF_LASTBETA_D3DCOLOR
Definition: d3d9types.h:160
@ D3DDECLTYPE_UBYTE4
Definition: d3d9types.h:260
@ D3DDECLTYPE_FLOAT3
Definition: d3d9types.h:257
@ D3DDECLTYPE_FLOAT1
Definition: d3d9types.h:255
@ D3DDECLTYPE_D3DCOLOR
Definition: d3d9types.h:259
@ D3DDECLTYPE_FLOAT2
Definition: d3d9types.h:256
@ D3DDECLTYPE_FLOAT4
Definition: d3d9types.h:258
#define D3DDECL_END()
Definition: d3d9types.h:311
#define D3DFVF_XYZW
Definition: d3d9types.h:143
@ D3DDECLMETHOD_DEFAULT
Definition: d3d9types.h:242
#define D3D_OK
Definition: d3d.h:106
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
unsigned int idx
Definition: utils.c:41
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
#define assert(x)
Definition: debug.h:53
r parent
Definition: btrfs.c:3010
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
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
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_guid
Definition: kernel32.h:35
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static IStream Stream
Definition: htmldoc.c:1115
static float(__cdecl *square_half_float)(float x
unsigned int UINT
Definition: ndis.h:50
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
static FILE * out
Definition: regtests2xml.c:44
#define D3DERR_OUTOFVIDEOMEMORY
Definition: d3d8.h:85
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
IDirect3DVertexDeclaration9 IDirect3DVertexDeclaration9_iface
Definition: d3d9_private.h:240
IDirect3DDevice9Ex * parent_device
Definition: d3d9_private.h:246
D3DVERTEXELEMENT9 * elements
Definition: d3d9_private.h:242
Definition: devices.h:37
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define WINAPI
Definition: msvc.h:6
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)
ULONG CDECL wined3d_vertex_declaration_incref(struct wined3d_vertex_declaration *declaration)
ULONG CDECL wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration *declaration)
wined3d_format_id
Definition: wined3d.h:106
@ WINED3DFMT_R16G16_UNORM
Definition: wined3d.h:171
@ WINED3DFMT_R10G10B10X2_UINT
Definition: wined3d.h:124
@ WINED3DFMT_R32G32_FLOAT
Definition: wined3d.h:150
@ WINED3DFMT_R16G16_SNORM
Definition: wined3d.h:173
@ WINED3DFMT_B8G8R8A8_UNORM
Definition: wined3d.h:223
@ WINED3DFMT_R16G16B16A16_SINT
Definition: wined3d.h:148
@ WINED3DFMT_R32G32B32_FLOAT
Definition: wined3d.h:140
@ WINED3DFMT_R16G16B16A16_FLOAT
Definition: wined3d.h:144
@ WINED3DFMT_R8G8B8A8_UNORM
Definition: wined3d.h:164
@ WINED3DFMT_R16G16B16A16_UNORM
Definition: wined3d.h:145
@ WINED3DFMT_R32_FLOAT
Definition: wined3d.h:177
@ WINED3DFMT_R16G16_FLOAT
Definition: wined3d.h:170
@ WINED3DFMT_R8G8B8A8_UINT
Definition: wined3d.h:166
@ WINED3DFMT_R10G10B10X2_SNORM
Definition: wined3d.h:125
@ WINED3DFMT_R32G32B32A32_FLOAT
Definition: wined3d.h:136
@ WINED3DFMT_R16G16B16A16_SNORM
Definition: wined3d.h:147
@ WINED3DFMT_R16G16_SINT
Definition: wined3d.h:174
#define WINED3D_OUTPUT_SLOT_SEMANTIC
Definition: wined3d.h:1566
@ WINED3D_INPUT_PER_VERTEX_DATA
Definition: wined3d.h:1785
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:373
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:368
#define E_NOINTERFACE
Definition: winerror.h:2364
unsigned char BYTE
Definition: xxhash.c:193