ReactOS 0.4.17-dev-934-g091855f
async.c
Go to the documentation of this file.
1/*
2 * Copyright 2009 Henri Verbeet for CodeWeavers
3 * Copyright 2015-2017 Józef Kucia for CodeWeavers
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 *
19 */
20
21#include "d3d11_private.h"
22
24
25/* ID3D11Query methods */
26
27static inline struct d3d_query *impl_from_ID3D11Query(ID3D11Query *iface)
28{
29 return CONTAINING_RECORD(iface, struct d3d_query, ID3D11Query_iface);
30}
31
32static HRESULT STDMETHODCALLTYPE d3d11_query_QueryInterface(ID3D11Query *iface, REFIID riid, void **object)
33{
34 struct d3d_query *query = impl_from_ID3D11Query(iface);
35
36 TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
37
38 if ((IsEqualGUID(riid, &IID_ID3D11Predicate) && query->predicate)
39 || IsEqualGUID(riid, &IID_ID3D11Query)
40 || IsEqualGUID(riid, &IID_ID3D11Asynchronous)
41 || IsEqualGUID(riid, &IID_ID3D11DeviceChild)
43 {
44 ID3D11Query_AddRef(iface);
45 *object = iface;
46 return S_OK;
47 }
48
49 if ((IsEqualGUID(riid, &IID_ID3D10Predicate) && query->predicate)
50 || IsEqualGUID(riid, &IID_ID3D10Query)
51 || IsEqualGUID(riid, &IID_ID3D10Asynchronous)
52 || IsEqualGUID(riid, &IID_ID3D10DeviceChild))
53 {
54 ID3D10Query_AddRef(&query->ID3D10Query_iface);
55 *object = &query->ID3D10Query_iface;
56 return S_OK;
57 }
58
59 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
60
61 *object = NULL;
62 return E_NOINTERFACE;
63}
64
65static ULONG STDMETHODCALLTYPE d3d11_query_AddRef(ID3D11Query *iface)
66{
67 struct d3d_query *query = impl_from_ID3D11Query(iface);
69
70 TRACE("%p increasing refcount to %lu.\n", query, refcount);
71
72 if (refcount == 1)
73 {
74 ID3D11Device2_AddRef(query->device);
75 wined3d_query_incref(query->wined3d_query);
76 }
77
78 return refcount;
79}
80
82{
83 struct d3d_query *query = impl_from_ID3D11Query(iface);
85
86 TRACE("%p decreasing refcount to %lu.\n", query, refcount);
87
88 if (!refcount)
89 {
90 ID3D11Device2 *device = query->device;
91 wined3d_query_decref(query->wined3d_query);
92 ID3D11Device2_Release(device);
93 }
94
95 return refcount;
96}
97
98static void STDMETHODCALLTYPE d3d11_query_GetDevice(ID3D11Query *iface, ID3D11Device **device)
99{
100 struct d3d_query *query = impl_from_ID3D11Query(iface);
101
102 TRACE("iface %p, device %p.\n", iface, device);
103
104 *device = (ID3D11Device *)query->device;
105 ID3D11Device_AddRef(*device);
106}
107
109 REFGUID guid, UINT *data_size, void *data)
110{
111 struct d3d_query *query = impl_from_ID3D11Query(iface);
112
113 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
114
115 return d3d_get_private_data(&query->private_store, guid, data_size, data);
116}
117
119 REFGUID guid, UINT data_size, const void *data)
120{
121 struct d3d_query *query = impl_from_ID3D11Query(iface);
122
123 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
124
125 return d3d_set_private_data(&query->private_store, guid, data_size, data);
126}
127
129 REFGUID guid, const IUnknown *data)
130{
131 struct d3d_query *query = impl_from_ID3D11Query(iface);
132
133 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
134
135 return d3d_set_private_data_interface(&query->private_store, guid, data);
136}
137
139{
140 struct d3d_query *query = impl_from_ID3D11Query(iface);
141 unsigned int data_size;
142
143 TRACE("iface %p.\n", iface);
144
146 data_size = wined3d_query_get_data_size(query->wined3d_query);
148
149 return data_size;
150}
151
153{
154 struct d3d_query *query = impl_from_ID3D11Query(iface);
155
156 TRACE("iface %p, desc %p.\n", iface, desc);
157
158 *desc = query->desc;
159}
160
161static const struct ID3D11QueryVtbl d3d11_query_vtbl =
162{
163 /* IUnknown methods */
167 /* ID3D11DeviceChild methods */
172 /* ID3D11Asynchronous methods */
174 /* ID3D11Query methods */
176};
177
179{
180 struct d3d_query *query = parent;
181
182 wined3d_private_store_cleanup(&query->private_store);
183 free(parent);
184}
185
187{
189};
190
191struct d3d_query *unsafe_impl_from_ID3D11Query(ID3D11Query *iface)
192{
193 if (!iface)
194 return NULL;
195 assert(iface->lpVtbl == &d3d11_query_vtbl);
196 return CONTAINING_RECORD(iface, struct d3d_query, ID3D11Query_iface);
197}
198
199struct d3d_query *unsafe_impl_from_ID3D11Asynchronous(ID3D11Asynchronous *iface)
200{
201 return unsafe_impl_from_ID3D11Query((ID3D11Query *)iface);
202}
203
204/* ID3D10Query methods */
205
206static inline struct d3d_query *impl_from_ID3D10Query(ID3D10Query *iface)
207{
208 return CONTAINING_RECORD(iface, struct d3d_query, ID3D10Query_iface);
209}
210
211/* IUnknown methods */
212
214{
215 struct d3d_query *query = impl_from_ID3D10Query(iface);
216
217 TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
218
219 return d3d11_query_QueryInterface(&query->ID3D11Query_iface, riid, object);
220}
221
223{
224 struct d3d_query *query = impl_from_ID3D10Query(iface);
225
226 TRACE("iface %p.\n", iface);
227
228 return d3d11_query_AddRef(&query->ID3D11Query_iface);
229}
230
232{
233 struct d3d_query *query = impl_from_ID3D10Query(iface);
234
235 TRACE("iface %p.\n", iface);
236
237 return d3d11_query_Release(&query->ID3D11Query_iface);
238}
239
240/* ID3D10DeviceChild methods */
241
243{
244 struct d3d_query *query = impl_from_ID3D10Query(iface);
245
246 TRACE("iface %p, device %p.\n", iface, device);
247
248 ID3D11Device2_QueryInterface(query->device, &IID_ID3D10Device, (void **)device);
249}
250
252 REFGUID guid, UINT *data_size, void *data)
253{
254 struct d3d_query *query = impl_from_ID3D10Query(iface);
255
256 TRACE("iface %p, guid %s, data_size %p, data %p.\n",
257 iface, debugstr_guid(guid), data_size, data);
258
259 return d3d_get_private_data(&query->private_store, guid, data_size, data);
260}
261
263 REFGUID guid, UINT data_size, const void *data)
264{
265 struct d3d_query *query = impl_from_ID3D10Query(iface);
266
267 TRACE("iface %p, guid %s, data_size %u, data %p.\n",
268 iface, debugstr_guid(guid), data_size, data);
269
270 return d3d_set_private_data(&query->private_store, guid, data_size, data);
271}
272
274 REFGUID guid, const IUnknown *data)
275{
276 struct d3d_query *query = impl_from_ID3D10Query(iface);
277
278 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
279
280 return d3d_set_private_data_interface(&query->private_store, guid, data);
281}
282
283/* ID3D10Asynchronous methods */
284
286{
287 struct d3d_query *query = impl_from_ID3D10Query(iface);
288 HRESULT hr;
289
290 TRACE("iface %p.\n", iface);
291
292 if (FAILED(hr = wined3d_query_issue(query->wined3d_query, WINED3DISSUE_BEGIN)))
293 ERR("Failed to issue query, hr %#lx.\n", hr);
294}
295
297{
298 struct d3d_query *query = impl_from_ID3D10Query(iface);
299 HRESULT hr;
300
301 TRACE("iface %p.\n", iface);
302
303 if (FAILED(hr = wined3d_query_issue(query->wined3d_query, WINED3DISSUE_END)))
304 ERR("Failed to issue query, hr %#lx.\n", hr);
305}
306
308{
309 struct d3d_query *query = impl_from_ID3D10Query(iface);
310 D3D11_QUERY_DATA_PIPELINE_STATISTICS d3d11_data;
311 void *d3d10_data_pointer = NULL;
312 unsigned int wined3d_flags;
313 HRESULT hr;
314
315 TRACE("iface %p, data %p, data_size %u, flags %#x.\n", iface, data, data_size, flags);
316
317 if (!data && data_size)
318 return E_INVALIDARG;
319
320 if (query->desc.Query == D3D11_QUERY_PIPELINE_STATISTICS
321 && data_size == sizeof(D3D10_QUERY_DATA_PIPELINE_STATISTICS))
322 {
323 data_size = sizeof(D3D11_QUERY_DATA_PIPELINE_STATISTICS);
324 d3d10_data_pointer = data;
325 data = &d3d11_data;
326 }
327
329
331 if (!data_size || wined3d_query_get_data_size(query->wined3d_query) == data_size)
332 {
333 hr = wined3d_query_get_data(query->wined3d_query, data, data_size, wined3d_flags);
336 }
337 else
338 {
339 WARN("Invalid data size %u.\n", data_size);
341 }
343
344 if (d3d10_data_pointer && hr == S_OK)
345 memcpy(d3d10_data_pointer, data, sizeof(D3D10_QUERY_DATA_PIPELINE_STATISTICS));
346
347 return hr;
348}
349
351{
352 struct d3d_query *query = impl_from_ID3D10Query(iface);
353 unsigned int data_size;
354
355 TRACE("iface %p.\n", iface);
356
358 data_size = wined3d_query_get_data_size(query->wined3d_query);
360
361 if (query->desc.Query == D3D11_QUERY_PIPELINE_STATISTICS)
362 data_size = sizeof(D3D10_QUERY_DATA_PIPELINE_STATISTICS);
363
364 return data_size;
365}
366
367/* ID3D10Query methods */
368
370{
371 struct d3d_query *query = impl_from_ID3D10Query(iface);
372
373 TRACE("iface %p, desc %p.\n", iface, desc);
374
375 memcpy(desc, &query->desc, sizeof(*desc));
376}
377
378static const struct ID3D10QueryVtbl d3d10_query_vtbl =
379{
380 /* IUnknown methods */
384 /* ID3D10DeviceChild methods */
389 /* ID3D10Asynchronous methods */
394 /* ID3D10Query methods */
396};
397
399{
400 if (!iface)
401 return NULL;
402 assert(iface->lpVtbl == &d3d10_query_vtbl);
403 return CONTAINING_RECORD(iface, struct d3d_query, ID3D10Query_iface);
404}
405
408{
409 HRESULT hr;
410
411 static const enum wined3d_query_type query_type_map[] =
412 {
413 /* D3D11_QUERY_EVENT */ WINED3D_QUERY_TYPE_EVENT,
414 /* D3D11_QUERY_OCCLUSION */ WINED3D_QUERY_TYPE_OCCLUSION,
415 /* D3D11_QUERY_TIMESTAMP */ WINED3D_QUERY_TYPE_TIMESTAMP,
416 /* D3D11_QUERY_TIMESTAMP_DISJOINT */ WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT,
417 /* D3D11_QUERY_PIPELINE_STATISTICS */ WINED3D_QUERY_TYPE_PIPELINE_STATISTICS,
418 /* D3D11_QUERY_OCCLUSION_PREDICATE */ WINED3D_QUERY_TYPE_OCCLUSION,
419 /* D3D11_QUERY_SO_STATISTICS */ WINED3D_QUERY_TYPE_SO_STATISTICS,
420 /* D3D11_QUERY_SO_OVERFLOW_PREDICATE */ WINED3D_QUERY_TYPE_SO_OVERFLOW,
421 /* D3D11_QUERY_SO_STATISTICS_STREAM0 */ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0,
422 /* D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 */ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM0,
423 /* D3D11_QUERY_SO_STATISTICS_STREAM1 */ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1,
424 /* D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 */ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM1,
425 /* D3D11_QUERY_SO_STATISTICS_STREAM2 */ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2,
426 /* D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 */ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM2,
427 /* D3D11_QUERY_SO_STATISTICS_STREAM3 */ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3,
428 /* D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 */ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM3,
429 };
430
431 if (desc->Query >= ARRAY_SIZE(query_type_map))
432 {
433 FIXME("Unhandled query type %#x.\n", desc->Query);
434 return E_INVALIDARG;
435 }
436
437 if (desc->MiscFlags)
438 FIXME("Ignoring MiscFlags %#x.\n", desc->MiscFlags);
439
440 query->ID3D11Query_iface.lpVtbl = &d3d11_query_vtbl;
441 query->ID3D10Query_iface.lpVtbl = &d3d10_query_vtbl;
442 query->refcount = 1;
443
444 query->desc = *desc;
445
447 wined3d_private_store_init(&query->private_store);
448
449 if (FAILED(hr = wined3d_query_create(device->wined3d_device, query_type_map[desc->Query],
450 query, &d3d_query_wined3d_parent_ops, &query->wined3d_query)))
451 {
452 WARN("Failed to create wined3d query, hr %#lx.\n", hr);
453 wined3d_private_store_cleanup(&query->private_store);
455 return hr;
456 }
458
459 query->predicate = predicate;
460 ID3D11Device2_AddRef(query->device = &device->ID3D11Device2_iface);
461
462 return S_OK;
463}
464
466 struct d3d_query **query)
467{
468 struct d3d_query *object;
469 BOOL is_predicate_type;
470 HRESULT hr;
471
472 if (!desc)
473 return E_INVALIDARG;
474
475 is_predicate_type = desc->Query == D3D11_QUERY_OCCLUSION_PREDICATE
481
482 if (!is_predicate_type && predicate)
483 {
484 WARN("Query type %u is not a predicate.\n", desc->Query);
485 return E_INVALIDARG;
486 }
487
488 if (is_predicate_type)
489 predicate = TRUE;
490
491 if (!(object = calloc(1, sizeof(*object))))
492 return E_OUTOFMEMORY;
493
494 if (FAILED(hr = d3d_query_init(object, device, desc, predicate)))
495 {
496 WARN("Failed to initialise predicate, hr %#lx.\n", hr);
497 free(object);
498 return hr;
499 }
500
501 TRACE("Created query %p.\n", object);
502 *query = object;
503
504 return S_OK;
505}
#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:20
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
const GUID IID_IUnknown
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
@ D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3
Definition: d3d11.idl:1019
@ D3D11_QUERY_SO_OVERFLOW_PREDICATE
Definition: d3d11.idl:1011
@ D3D11_QUERY_PIPELINE_STATISTICS
Definition: d3d11.idl:1008
@ D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0
Definition: d3d11.idl:1013
@ D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1
Definition: d3d11.idl:1015
@ D3D11_QUERY_OCCLUSION_PREDICATE
Definition: d3d11.idl:1009
@ D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2
Definition: d3d11.idl:1017
HRESULT d3d_get_private_data(struct wined3d_private_store *store, REFGUID guid, UINT *data_size, void *data)
Definition: utils.c:803
unsigned int wined3d_getdata_flags_from_d3d11_async_getdata_flags(unsigned int d3d11_flags)
Definition: utils.c:436
HRESULT d3d_set_private_data_interface(struct wined3d_private_store *store, REFGUID guid, const IUnknown *object)
Definition: utils.c:867
HRESULT d3d_set_private_data(struct wined3d_private_store *store, REFGUID guid, UINT data_size, const void *data)
Definition: utils.c:841
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
static void STDMETHODCALLTYPE d3d_query_wined3d_object_destroyed(void *parent)
Definition: async.c:178
struct d3d_query * unsafe_impl_from_ID3D11Query(ID3D11Query *iface)
Definition: async.c:191
static ULONG STDMETHODCALLTYPE d3d11_query_Release(ID3D11Query *iface)
Definition: async.c:81
static UINT STDMETHODCALLTYPE d3d10_query_GetDataSize(ID3D10Query *iface)
Definition: async.c:350
static UINT STDMETHODCALLTYPE d3d11_query_GetDataSize(ID3D11Query *iface)
Definition: async.c:138
struct d3d_query * unsafe_impl_from_ID3D10Query(ID3D10Query *iface)
Definition: async.c:398
static void STDMETHODCALLTYPE d3d10_query_End(ID3D10Query *iface)
Definition: async.c:296
static HRESULT STDMETHODCALLTYPE d3d10_query_QueryInterface(ID3D10Query *iface, REFIID riid, void **object)
Definition: async.c:213
static HRESULT STDMETHODCALLTYPE d3d10_query_GetPrivateData(ID3D10Query *iface, REFGUID guid, UINT *data_size, void *data)
Definition: async.c:251
static void STDMETHODCALLTYPE d3d10_query_GetDesc(ID3D10Query *iface, D3D10_QUERY_DESC *desc)
Definition: async.c:369
static const struct ID3D11QueryVtbl d3d11_query_vtbl
Definition: async.c:161
static ULONG STDMETHODCALLTYPE d3d10_query_AddRef(ID3D10Query *iface)
Definition: async.c:222
static const struct ID3D10QueryVtbl d3d10_query_vtbl
Definition: async.c:378
static HRESULT STDMETHODCALLTYPE d3d10_query_SetPrivateDataInterface(ID3D10Query *iface, REFGUID guid, const IUnknown *data)
Definition: async.c:273
static void STDMETHODCALLTYPE d3d11_query_GetDesc(ID3D11Query *iface, D3D11_QUERY_DESC *desc)
Definition: async.c:152
static void STDMETHODCALLTYPE d3d10_query_GetDevice(ID3D10Query *iface, ID3D10Device **device)
Definition: async.c:242
static HRESULT STDMETHODCALLTYPE d3d10_query_SetPrivateData(ID3D10Query *iface, REFGUID guid, UINT data_size, const void *data)
Definition: async.c:262
static HRESULT d3d_query_init(struct d3d_query *query, struct d3d_device *device, const D3D11_QUERY_DESC *desc, BOOL predicate)
Definition: async.c:406
static ULONG STDMETHODCALLTYPE d3d11_query_AddRef(ID3D11Query *iface)
Definition: async.c:65
static HRESULT STDMETHODCALLTYPE d3d11_query_GetPrivateData(ID3D11Query *iface, REFGUID guid, UINT *data_size, void *data)
Definition: async.c:108
static struct d3d_query * impl_from_ID3D11Query(ID3D11Query *iface)
Definition: async.c:27
static HRESULT STDMETHODCALLTYPE d3d11_query_QueryInterface(ID3D11Query *iface, REFIID riid, void **object)
Definition: async.c:32
static const struct wined3d_parent_ops d3d_query_wined3d_parent_ops
Definition: async.c:186
static void STDMETHODCALLTYPE d3d11_query_GetDevice(ID3D11Query *iface, ID3D11Device **device)
Definition: async.c:98
static ULONG STDMETHODCALLTYPE d3d10_query_Release(ID3D10Query *iface)
Definition: async.c:231
static HRESULT STDMETHODCALLTYPE d3d10_query_GetData(ID3D10Query *iface, void *data, UINT data_size, UINT flags)
Definition: async.c:307
HRESULT d3d_query_create(struct d3d_device *device, const D3D11_QUERY_DESC *desc, BOOL predicate, struct d3d_query **query)
Definition: async.c:465
static HRESULT STDMETHODCALLTYPE d3d11_query_SetPrivateData(ID3D11Query *iface, REFGUID guid, UINT data_size, const void *data)
Definition: async.c:118
struct d3d_query * unsafe_impl_from_ID3D11Asynchronous(ID3D11Asynchronous *iface)
Definition: async.c:199
static struct d3d_query * impl_from_ID3D10Query(ID3D10Query *iface)
Definition: async.c:206
static void STDMETHODCALLTYPE d3d10_query_Begin(ID3D10Query *iface)
Definition: async.c:285
static HRESULT STDMETHODCALLTYPE d3d11_query_SetPrivateDataInterface(ID3D11Query *iface, REFGUID guid, const IUnknown *data)
Definition: async.c:128
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
HRESULT CDECL wined3d_query_get_data(struct wined3d_query *query, void *data, UINT data_size, uint32_t flags)
Definition: query.c:452
HRESULT CDECL wined3d_query_issue(struct wined3d_query *query, uint32_t flags)
Definition: query.c:498
ULONG CDECL wined3d_query_incref(struct wined3d_query *query)
Definition: query.c:413
HRESULT CDECL wined3d_query_create(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query)
Definition: query.c:1988
UINT CDECL wined3d_query_get_data_size(const struct wined3d_query *query)
Definition: query.c:491
ULONG CDECL wined3d_query_decref(struct wined3d_query *query)
Definition: query.c:432
GUID guid
Definition: version.c:147
#define assert(_expr)
Definition: assert.h:32
r parent
Definition: btrfs.c:3010
unsigned int BOOL
Definition: ntddk_ex.h:94
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLbitfield flags
Definition: glext.h:7161
unsigned int UINT
Definition: sysinfo.c:13
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
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define calloc
Definition: rosglue.h:14
#define TRACE(s)
Definition: solgame.cpp:4
Definition: scsiwmi.h:51
ID3D10Query ID3D10Query_iface
ID3D11Query ID3D11Query_iface
BOOL predicate
Definition: devices.h:37
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define WINED3DISSUE_BEGIN
Definition: wined3d.h:781
static void wined3d_private_store_cleanup(struct wined3d_private_store *store)
Definition: wined3d.h:2636
wined3d_query_type
Definition: wined3d.h:725
@ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2
Definition: wined3d.h:746
@ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM3
Definition: wined3d.h:751
@ WINED3D_QUERY_TYPE_SO_STATISTICS
Definition: wined3d.h:742
@ WINED3D_QUERY_TYPE_PIPELINE_STATISTICS
Definition: wined3d.h:741
@ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM2
Definition: wined3d.h:750
@ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0
Definition: wined3d.h:744
@ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM0
Definition: wined3d.h:748
@ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM1
Definition: wined3d.h:749
@ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1
Definition: wined3d.h:745
@ WINED3D_QUERY_TYPE_TIMESTAMP
Definition: wined3d.h:731
@ WINED3D_QUERY_TYPE_SO_OVERFLOW
Definition: wined3d.h:743
@ WINED3D_QUERY_TYPE_EVENT
Definition: wined3d.h:729
@ WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT
Definition: wined3d.h:732
@ WINED3D_QUERY_TYPE_OCCLUSION
Definition: wined3d.h:730
@ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3
Definition: wined3d.h:747
#define WINED3DISSUE_END
Definition: wined3d.h:782
static void wined3d_private_store_init(struct wined3d_private_store *store)
Definition: wined3d.h:2607
#define WINED3DERR_INVALIDCALL
Definition: wined3d.h:44
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539
#define E_NOINTERFACE
Definition: winerror.h:3479
#define DXGI_ERROR_INVALID_CALL
Definition: winerror.h:7120