ReactOS 0.4.17-dev-934-g091855f
stateblock.c File Reference
#include "d3d10_private.h"
Include dependency graph for stateblock.c:

Go to the source code of this file.

Classes

struct  d3d10_stateblock
 

Macros

#define WINE_D3D10_TO_STR(x)   case x: return #x
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3d10)
 
static const char * debug_d3d10_device_state_types (D3D10_DEVICE_STATE_TYPES t)
 
static struct d3d10_stateblock * impl_from_ID3D10StateBlock (ID3D10StateBlock *iface)
 
static void stateblock_cleanup (struct d3d10_stateblock *stateblock)
 
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_QueryInterface (ID3D10StateBlock *iface, REFIID iid, void **object)
 
static ULONG STDMETHODCALLTYPE d3d10_stateblock_AddRef (ID3D10StateBlock *iface)
 
static ULONG STDMETHODCALLTYPE d3d10_stateblock_Release (ID3D10StateBlock *iface)
 
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_Capture (ID3D10StateBlock *iface)
 
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_Apply (ID3D10StateBlock *iface)
 
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_ReleaseAllDeviceObjects (ID3D10StateBlock *iface)
 
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_GetDevice (ID3D10StateBlock *iface, ID3D10Device **device)
 
HRESULT WINAPI D3D10CreateStateBlock (ID3D10Device *device, D3D10_STATE_BLOCK_MASK *mask, ID3D10StateBlock **stateblock)
 
static BOOL stateblock_mask_get_bit (BYTE *field, UINT field_size, UINT idx)
 
static HRESULT stateblock_mask_set_bits (BYTE *field, UINT field_size, UINT start_bit, UINT count)
 
static HRESULT stateblock_mask_clear_bits (BYTE *field, UINT field_size, UINT start_bit, UINT count)
 
HRESULT WINAPI D3D10StateBlockMaskDifference (D3D10_STATE_BLOCK_MASK *mask_x, D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result)
 
HRESULT WINAPI D3D10StateBlockMaskDisableAll (D3D10_STATE_BLOCK_MASK *mask)
 
HRESULT WINAPI D3D10StateBlockMaskDisableCapture (D3D10_STATE_BLOCK_MASK *mask, D3D10_DEVICE_STATE_TYPES state_type, UINT start_idx, UINT count)
 
HRESULT WINAPI D3D10StateBlockMaskEnableAll (D3D10_STATE_BLOCK_MASK *mask)
 
HRESULT WINAPI D3D10StateBlockMaskEnableCapture (D3D10_STATE_BLOCK_MASK *mask, D3D10_DEVICE_STATE_TYPES state_type, UINT start_idx, UINT count)
 
BOOL WINAPI D3D10StateBlockMaskGetSetting (D3D10_STATE_BLOCK_MASK *mask, D3D10_DEVICE_STATE_TYPES state_type, UINT idx)
 
HRESULT WINAPI D3D10StateBlockMaskIntersect (D3D10_STATE_BLOCK_MASK *mask_x, D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result)
 
HRESULT WINAPI D3D10StateBlockMaskUnion (D3D10_STATE_BLOCK_MASK *mask_x, D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result)
 

Variables

static const struct ID3D10StateBlockVtbl d3d10_stateblock_vtbl
 

Macro Definition Documentation

◆ WINE_D3D10_TO_STR

#define WINE_D3D10_TO_STR (   x)    case x: return #x

Definition at line 68 of file stateblock.c.

Function Documentation

◆ d3d10_stateblock_AddRef()

static ULONG STDMETHODCALLTYPE d3d10_stateblock_AddRef ( ID3D10StateBlock *  iface)
static

Definition at line 292 of file stateblock.c.

293{
294 struct d3d10_stateblock *stateblock = impl_from_ID3D10StateBlock(iface);
296
297 TRACE("%p increasing refcount to %lu.\n", stateblock, refcount);
298
299 return refcount;
300}
#define InterlockedIncrement
Definition: armddk.h:53
static struct d3d10_stateblock * impl_from_ID3D10StateBlock(ID3D10StateBlock *iface)
Definition: stateblock.c:106
#define TRACE(s)
Definition: solgame.cpp:4
uint32_t ULONG
Definition: typedefs.h:59

◆ d3d10_stateblock_Apply()

static HRESULT STDMETHODCALLTYPE d3d10_stateblock_Apply ( ID3D10StateBlock *  iface)
static

Definition at line 423 of file stateblock.c.

424{
425 struct d3d10_stateblock *stateblock = impl_from_ID3D10StateBlock(iface);
426 unsigned int i;
427
428 TRACE("iface %p.\n", iface);
429
430 if (stateblock->mask.VS)
431 ID3D10Device_VSSetShader(stateblock->device, stateblock->vs);
433 {
434 if (stateblock->mask.VSSamplers[i >> 3] & (1 << (i & 7)))
435 ID3D10Device_VSSetSamplers(stateblock->device, i, 1, &stateblock->vs_samplers[i]);
436 }
438 {
439 if (stateblock->mask.VSShaderResources[i >> 3] & (1 << (i & 7)))
440 ID3D10Device_VSSetShaderResources(stateblock->device, i, 1, &stateblock->vs_resources[i]);
441 }
443 {
444 if (stateblock->mask.VSConstantBuffers[i >> 3] & (1 << (i & 7)))
445 ID3D10Device_VSSetConstantBuffers(stateblock->device, i, 1, &stateblock->vs_cbs[i]);
446 }
447
448 if (stateblock->mask.GS)
449 ID3D10Device_GSSetShader(stateblock->device, stateblock->gs);
451 {
452 if (stateblock->mask.GSSamplers[i >> 3] & (1 << (i & 7)))
453 ID3D10Device_GSSetSamplers(stateblock->device, i, 1, &stateblock->gs_samplers[i]);
454 }
456 {
457 if (stateblock->mask.GSShaderResources[i >> 3] & (1 << (i & 7)))
458 ID3D10Device_GSSetShaderResources(stateblock->device, i, 1, &stateblock->gs_resources[i]);
459 }
461 {
462 if (stateblock->mask.GSConstantBuffers[i >> 3] & (1 << (i & 7)))
463 ID3D10Device_GSSetConstantBuffers(stateblock->device, i, 1, &stateblock->gs_cbs[i]);
464 }
465
466 if (stateblock->mask.PS)
467 ID3D10Device_PSSetShader(stateblock->device, stateblock->ps);
469 {
470 if (stateblock->mask.PSSamplers[i >> 3] & (1 << (i & 7)))
471 ID3D10Device_PSSetSamplers(stateblock->device, i, 1, &stateblock->ps_samplers[i]);
472 }
474 {
475 if (stateblock->mask.PSShaderResources[i >> 3] & (1 << (i & 7)))
476 ID3D10Device_PSSetShaderResources(stateblock->device, i, 1, &stateblock->ps_resources[i]);
477 }
479 {
480 if (stateblock->mask.PSConstantBuffers[i >> 3] & (1 << (i & 7)))
481 ID3D10Device_PSSetConstantBuffers(stateblock->device, i, 1, &stateblock->ps_cbs[i]);
482 }
483
485 {
486 if (stateblock->mask.IAVertexBuffers[i >> 3] & (1 << (i & 7)))
487 ID3D10Device_IASetVertexBuffers(stateblock->device, i, 1, &stateblock->vbs[i],
488 &stateblock->vb_strides[i], &stateblock->vb_offsets[i]);
489 }
490 if (stateblock->mask.IAIndexBuffer)
491 ID3D10Device_IASetIndexBuffer(stateblock->device, stateblock->ib,
492 stateblock->ib_format, stateblock->ib_offset);
493 if (stateblock->mask.IAInputLayout)
494 ID3D10Device_IASetInputLayout(stateblock->device, stateblock->il);
495 if (stateblock->mask.IAPrimitiveTopology)
496 ID3D10Device_IASetPrimitiveTopology(stateblock->device, stateblock->topology);
497
498 if (stateblock->mask.OMRenderTargets)
499 ID3D10Device_OMSetRenderTargets(stateblock->device, D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT,
500 stateblock->rtvs, stateblock->dsv);
501 if (stateblock->mask.OMDepthStencilState)
502 ID3D10Device_OMSetDepthStencilState(stateblock->device, stateblock->dss, stateblock->stencil_ref);
503 if (stateblock->mask.OMBlendState)
504 ID3D10Device_OMSetBlendState(stateblock->device, stateblock->bs,
505 stateblock->blend_factor, stateblock->sample_mask);
506
507 if (stateblock->mask.RSViewports)
508 ID3D10Device_RSSetViewports(stateblock->device, D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE,
509 stateblock->vps);
510 if (stateblock->mask.RSScissorRects)
511 ID3D10Device_RSSetScissorRects(stateblock->device, D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE,
512 stateblock->scissor_rects);
513 if (stateblock->mask.RSRasterizerState)
514 ID3D10Device_RSSetState(stateblock->device, stateblock->rs);
515
516 if (stateblock->mask.SOBuffers)
517 ID3D10Device_SOSetTargets(stateblock->device, D3D10_SO_BUFFER_SLOT_COUNT,
518 stateblock->so_buffers, stateblock->so_offsets);
519
520 if (stateblock->mask.Predication)
521 ID3D10Device_SetPredication(stateblock->device, stateblock->predicate, stateblock->predicate_value);
522
523 return S_OK;
524}
const unsigned int D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE
Definition: d3d10.idl:223
const unsigned int D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
Definition: d3d10.idl:98
const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
Definition: d3d10.idl:93
const unsigned int D3D10_SO_BUFFER_SLOT_COUNT
Definition: d3d10.idl:206
const unsigned int D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT
Definition: d3d10.idl:203
const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
Definition: d3d10.idl:75
const unsigned int D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
Definition: d3d10.idl:147
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
#define S_OK
Definition: intsafe.h:52
BYTE PSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)]
BYTE GSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)]
BYTE VSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)]
BYTE GSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)]
BYTE GSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)]
BYTE IAVertexBuffers[D3D10_BYTES_FROM_BITS(D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT)]
BYTE VSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)]
BYTE PSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)]
BYTE PSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)]
BYTE VSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)]
BOOL predicate_value
Definition: stateblock.c:65
ID3D10RasterizerState * rs
Definition: stateblock.c:61
ID3D10Buffer * vbs[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
Definition: stateblock.c:44
ID3D10Buffer * gs_cbs[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]
Definition: stateblock.c:39
ID3D10Buffer * so_buffers[D3D10_SO_BUFFER_SLOT_COUNT]
Definition: stateblock.c:62
ID3D10Predicate * predicate
Definition: stateblock.c:64
UINT vb_strides[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
Definition: stateblock.c:45
D3D10_PRIMITIVE_TOPOLOGY topology
Definition: stateblock.c:51
ID3D10PixelShader * ps
Definition: stateblock.c:40
UINT so_offsets[D3D10_SO_BUFFER_SLOT_COUNT]
Definition: stateblock.c:63
ID3D10Buffer * vs_cbs[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]
Definition: stateblock.c:35
D3D10_RECT scissor_rects[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE]
Definition: stateblock.c:60
ID3D10RenderTargetView * rtvs[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT]
Definition: stateblock.c:52
ID3D10Device * device
Definition: stateblock.c:29
ID3D10SamplerState * ps_samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]
Definition: stateblock.c:41
ID3D10ShaderResourceView * gs_resources[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]
Definition: stateblock.c:38
DXGI_FORMAT ib_format
Definition: stateblock.c:48
ID3D10InputLayout * il
Definition: stateblock.c:50
ID3D10Buffer * ps_cbs[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]
Definition: stateblock.c:43
ID3D10VertexShader * vs
Definition: stateblock.c:32
ID3D10DepthStencilView * dsv
Definition: stateblock.c:53
ID3D10DepthStencilState * dss
Definition: stateblock.c:54
D3D10_STATE_BLOCK_MASK mask
Definition: stateblock.c:30
ID3D10Buffer * ib
Definition: stateblock.c:47
UINT vb_offsets[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
Definition: stateblock.c:46
ID3D10ShaderResourceView * vs_resources[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]
Definition: stateblock.c:34
D3D10_VIEWPORT vps[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE]
Definition: stateblock.c:59
float blend_factor[4]
Definition: stateblock.c:57
ID3D10SamplerState * gs_samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]
Definition: stateblock.c:37
ID3D10ShaderResourceView * ps_resources[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]
Definition: stateblock.c:42
ID3D10GeometryShader * gs
Definition: stateblock.c:36
ID3D10SamplerState * vs_samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]
Definition: stateblock.c:33
ID3D10BlendState * bs
Definition: stateblock.c:56

◆ d3d10_stateblock_Capture()

static HRESULT STDMETHODCALLTYPE d3d10_stateblock_Capture ( ID3D10StateBlock *  iface)
static

Definition at line 319 of file stateblock.c.

320{
322 struct d3d10_stateblock *stateblock = impl_from_ID3D10StateBlock(iface);
323 unsigned int i;
324
325 TRACE("iface %p.\n", iface);
326
327 stateblock_cleanup(stateblock);
328
329 if (stateblock->mask.VS)
330 ID3D10Device_VSGetShader(stateblock->device, &stateblock->vs);
332 {
333 if (stateblock->mask.VSSamplers[i >> 3] & (1 << (i & 7)))
334 ID3D10Device_VSGetSamplers(stateblock->device, i, 1, &stateblock->vs_samplers[i]);
335 }
337 {
338 if (stateblock->mask.VSShaderResources[i >> 3] & (1 << (i & 7)))
339 ID3D10Device_VSGetShaderResources(stateblock->device, i, 1, &stateblock->vs_resources[i]);
340 }
342 {
343 if (stateblock->mask.VSConstantBuffers[i >> 3] & (1 << (i & 7)))
344 ID3D10Device_VSGetConstantBuffers(stateblock->device, i, 1, &stateblock->vs_cbs[i]);
345 }
346
347 if (stateblock->mask.GS)
348 ID3D10Device_GSGetShader(stateblock->device, &stateblock->gs);
350 {
351 if (stateblock->mask.GSSamplers[i >> 3] & (1 << (i & 7)))
352 ID3D10Device_GSGetSamplers(stateblock->device, i, 1, &stateblock->gs_samplers[i]);
353 }
355 {
356 if (stateblock->mask.GSShaderResources[i >> 3] & (1 << (i & 7)))
357 ID3D10Device_GSGetShaderResources(stateblock->device, i, 1, &stateblock->gs_resources[i]);
358 }
360 {
361 if (stateblock->mask.GSConstantBuffers[i >> 3] & (1 << (i & 7)))
362 ID3D10Device_GSGetConstantBuffers(stateblock->device, i, 1, &stateblock->gs_cbs[i]);
363 }
364
365 if (stateblock->mask.PS)
366 ID3D10Device_PSGetShader(stateblock->device, &stateblock->ps);
368 {
369 if (stateblock->mask.PSSamplers[i >> 3] & (1 << (i & 7)))
370 ID3D10Device_PSGetSamplers(stateblock->device, i, 1, &stateblock->ps_samplers[i]);
371 }
373 {
374 if (stateblock->mask.PSShaderResources[i >> 3] & (1 << (i & 7)))
375 ID3D10Device_PSGetShaderResources(stateblock->device, i, 1, &stateblock->ps_resources[i]);
376 }
378 {
379 if (stateblock->mask.PSConstantBuffers[i >> 3] & (1 << (i & 7)))
380 ID3D10Device_PSGetConstantBuffers(stateblock->device, i, 1, &stateblock->ps_cbs[i]);
381 }
382
384 {
385 if (stateblock->mask.IAVertexBuffers[i >> 3] & (1 << (i & 7)))
386 ID3D10Device_IAGetVertexBuffers(stateblock->device, i, 1, &stateblock->vbs[i],
387 &stateblock->vb_strides[i], &stateblock->vb_offsets[i]);
388 }
389 if (stateblock->mask.IAIndexBuffer)
390 ID3D10Device_IAGetIndexBuffer(stateblock->device, &stateblock->ib,
391 &stateblock->ib_format, &stateblock->ib_offset);
392 if (stateblock->mask.IAInputLayout)
393 ID3D10Device_IAGetInputLayout(stateblock->device, &stateblock->il);
394 if (stateblock->mask.IAPrimitiveTopology)
395 ID3D10Device_IAGetPrimitiveTopology(stateblock->device, &stateblock->topology);
396
397 if (stateblock->mask.OMRenderTargets)
398 ID3D10Device_OMGetRenderTargets(stateblock->device, D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT,
399 stateblock->rtvs, &stateblock->dsv);
400 if (stateblock->mask.OMDepthStencilState)
401 ID3D10Device_OMGetDepthStencilState(stateblock->device, &stateblock->dss, &stateblock->stencil_ref);
402 if (stateblock->mask.OMBlendState)
403 ID3D10Device_OMGetBlendState(stateblock->device, &stateblock->bs,
404 stateblock->blend_factor, &stateblock->sample_mask);
405
406 if (stateblock->mask.RSViewports)
407 ID3D10Device_RSGetViewports(stateblock->device, &vp_count, stateblock->vps);
408 if (stateblock->mask.RSScissorRects)
409 ID3D10Device_RSGetScissorRects(stateblock->device, &vp_count, stateblock->scissor_rects);
410 if (stateblock->mask.RSRasterizerState)
411 ID3D10Device_RSGetState(stateblock->device, &stateblock->rs);
412
413 if (stateblock->mask.SOBuffers)
414 ID3D10Device_SOGetTargets(stateblock->device, D3D10_SO_BUFFER_SLOT_COUNT,
415 stateblock->so_buffers, stateblock->so_offsets);
416
417 if (stateblock->mask.Predication)
418 ID3D10Device_GetPredication(stateblock->device, &stateblock->predicate, &stateblock->predicate_value);
419
420 return S_OK;
421}
static void stateblock_cleanup(struct d3d10_stateblock *stateblock)
Definition: stateblock.c:111

◆ d3d10_stateblock_GetDevice()

static HRESULT STDMETHODCALLTYPE d3d10_stateblock_GetDevice ( ID3D10StateBlock *  iface,
ID3D10Device **  device 
)
static

Definition at line 533 of file stateblock.c.

534{
535 FIXME("iface %p, device %p stub!\n", iface, device);
536
537 return E_NOTIMPL;
538}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
Definition: devices.h:37

◆ d3d10_stateblock_QueryInterface()

static HRESULT STDMETHODCALLTYPE d3d10_stateblock_QueryInterface ( ID3D10StateBlock *  iface,
REFIID  iid,
void **  object 
)
static

Definition at line 270 of file stateblock.c.

271{
272 struct d3d10_stateblock *stateblock;
273
274 TRACE("iface %p, iid %s, object %p.\n", iface, debugstr_guid(iid), object);
275
276 stateblock = impl_from_ID3D10StateBlock(iface);
277
278 if (IsEqualGUID(iid, &IID_ID3D10StateBlock)
279 || IsEqualGUID(iid, &IID_IUnknown))
280 {
281 IUnknown_AddRef(&stateblock->ID3D10StateBlock_iface);
282 *object = &stateblock->ID3D10StateBlock_iface;
283 return S_OK;
284 }
285
286 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
287 *object = NULL;
288
289 return E_NOINTERFACE;
290}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define NULL
Definition: types.h:112
#define debugstr_guid
Definition: kernel32.h:35
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
ID3D10StateBlock ID3D10StateBlock_iface
Definition: stateblock.c:26
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ d3d10_stateblock_Release()

static ULONG STDMETHODCALLTYPE d3d10_stateblock_Release ( ID3D10StateBlock *  iface)
static

Definition at line 302 of file stateblock.c.

303{
304 struct d3d10_stateblock *stateblock = impl_from_ID3D10StateBlock(iface);
306
307 TRACE("%p decreasing refcount to %lu.\n", stateblock, refcount);
308
309 if (!refcount)
310 {
311 stateblock_cleanup(stateblock);
312 ID3D10Device_Release(stateblock->device);
313 free(stateblock);
314 }
315
316 return refcount;
317}
#define InterlockedDecrement
Definition: armddk.h:52
#define free
Definition: debug_ros.c:5

◆ d3d10_stateblock_ReleaseAllDeviceObjects()

static HRESULT STDMETHODCALLTYPE d3d10_stateblock_ReleaseAllDeviceObjects ( ID3D10StateBlock *  iface)
static

Definition at line 526 of file stateblock.c.

527{
528 FIXME("iface %p stub!\n", iface);
529
530 return E_NOTIMPL;
531}

◆ D3D10CreateStateBlock()

HRESULT WINAPI D3D10CreateStateBlock ( ID3D10Device *  device,
D3D10_STATE_BLOCK_MASK *  mask,
ID3D10StateBlock **  stateblock 
)

Definition at line 553 of file stateblock.c.

555{
556 struct d3d10_stateblock *object;
557
558 TRACE("device %p, mask %p, stateblock %p.\n", device, mask, stateblock);
559
560 if (!(object = calloc(1, sizeof(*object))))
561 {
562 ERR("Failed to allocate D3D10 stateblock object memory.\n");
563 return E_OUTOFMEMORY;
564 }
565
566 object->ID3D10StateBlock_iface.lpVtbl = &d3d10_stateblock_vtbl;
567 object->refcount = 1;
568
569 object->device = device;
570 ID3D10Device_AddRef(object->device);
571 object->mask = *mask;
572
573 TRACE("Created stateblock %p.\n", object);
574 *stateblock = &object->ID3D10StateBlock_iface;
575
576 return S_OK;
577}
#define ERR(fmt,...)
Definition: precomp.h:57
static const struct ID3D10StateBlockVtbl d3d10_stateblock_vtbl
Definition: stateblock.c:540
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
GLenum GLint GLuint mask
Definition: glext.h:6028
#define calloc
Definition: rosglue.h:14

◆ D3D10StateBlockMaskDifference()

HRESULT WINAPI D3D10StateBlockMaskDifference ( D3D10_STATE_BLOCK_MASK *  mask_x,
D3D10_STATE_BLOCK_MASK *  mask_y,
D3D10_STATE_BLOCK_MASK *  result 
)

Definition at line 649 of file stateblock.c.

651{
652 UINT count = sizeof(*result) / sizeof(DWORD);
653 UINT i;
654
655 TRACE("mask_x %p, mask_y %p, result %p.\n", mask_x, mask_y, result);
656
657 if (!mask_x || !mask_y || !result)
658 return E_INVALIDARG;
659
660 for (i = 0; i < count; ++i)
661 {
662 ((DWORD *)result)[i] = ((DWORD *)mask_x)[i] ^ ((DWORD *)mask_y)[i];
663 }
664 for (i = count * sizeof(DWORD); i < sizeof(*result); ++i)
665 {
666 ((BYTE *)result)[i] = ((BYTE *)mask_x)[i] ^ ((BYTE *)mask_y)[i];
667 }
668
669 return S_OK;
670}
#define E_INVALIDARG
Definition: ddrawi.h:101
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint64EXT * result
Definition: glext.h:11304
unsigned int UINT
Definition: sysinfo.c:13
#define DWORD
Definition: nt_native.h:44
unsigned char BYTE
Definition: xxhash.c:193

◆ D3D10StateBlockMaskDisableAll()

HRESULT WINAPI D3D10StateBlockMaskDisableAll ( D3D10_STATE_BLOCK_MASK *  mask)

Definition at line 672 of file stateblock.c.

673{
674 TRACE("mask %p.\n", mask);
675
676 if (!mask)
677 return E_INVALIDARG;
678
679 memset(mask, 0, sizeof(*mask));
680
681 return S_OK;
682}
#define memset(x, y, z)
Definition: compat.h:39

◆ D3D10StateBlockMaskDisableCapture()

HRESULT WINAPI D3D10StateBlockMaskDisableCapture ( D3D10_STATE_BLOCK_MASK *  mask,
D3D10_DEVICE_STATE_TYPES  state_type,
UINT  start_idx,
UINT  count 
)

Definition at line 684 of file stateblock.c.

686{
687 TRACE("mask %p state_type %s, start_idx %u, count %u.\n",
688 mask, debug_d3d10_device_state_types(state_type), start_idx, count);
689
690 if (!mask)
691 return E_INVALIDARG;
692
693 switch (state_type)
694 {
696 return stateblock_mask_clear_bits(&mask->SOBuffers, 1, start_idx, count);
698 return stateblock_mask_clear_bits(&mask->OMRenderTargets, 1, start_idx, count);
700 return stateblock_mask_clear_bits(&mask->OMDepthStencilState, 1, start_idx, count);
702 return stateblock_mask_clear_bits(&mask->OMBlendState, 1, start_idx, count);
703 case D3D10_DST_VS:
704 return stateblock_mask_clear_bits(&mask->VS, 1, start_idx, count);
706 return stateblock_mask_clear_bits(mask->VSSamplers,
709 return stateblock_mask_clear_bits(mask->VSShaderResources,
712 return stateblock_mask_clear_bits(mask->VSConstantBuffers,
714 case D3D10_DST_GS:
715 return stateblock_mask_clear_bits(&mask->GS, 1, start_idx, count);
717 return stateblock_mask_clear_bits(mask->GSSamplers,
720 return stateblock_mask_clear_bits(mask->GSShaderResources,
723 return stateblock_mask_clear_bits(mask->GSConstantBuffers,
725 case D3D10_DST_PS:
726 return stateblock_mask_clear_bits(&mask->PS, 1, start_idx, count);
728 return stateblock_mask_clear_bits(mask->PSSamplers,
731 return stateblock_mask_clear_bits(mask->PSShaderResources,
734 return stateblock_mask_clear_bits(mask->PSConstantBuffers,
737 return stateblock_mask_clear_bits(mask->IAVertexBuffers,
740 return stateblock_mask_clear_bits(&mask->IAIndexBuffer, 1, start_idx, count);
742 return stateblock_mask_clear_bits(&mask->IAInputLayout, 1, start_idx, count);
744 return stateblock_mask_clear_bits(&mask->IAPrimitiveTopology, 1, start_idx, count);
746 return stateblock_mask_clear_bits(&mask->RSViewports, 1, start_idx, count);
748 return stateblock_mask_clear_bits(&mask->RSScissorRects, 1, start_idx, count);
750 return stateblock_mask_clear_bits(&mask->RSRasterizerState, 1, start_idx, count);
752 return stateblock_mask_clear_bits(&mask->Predication, 1, start_idx, count);
753 default:
754 FIXME("Unhandled state_type %#x.\n", state_type);
755 return E_INVALIDARG;
756 }
757}
static HRESULT stateblock_mask_clear_bits(BYTE *field, UINT field_size, UINT start_bit, UINT count)
Definition: stateblock.c:618
static const char * debug_d3d10_device_state_types(D3D10_DEVICE_STATE_TYPES t)
Definition: stateblock.c:70
@ D3D10_DST_PS_SHADER_RESOURCES
Definition: d3d10effect.idl:64
@ D3D10_DST_VS
Definition: d3d10effect.idl:54
@ D3D10_DST_IA_INPUT_LAYOUT
Definition: d3d10effect.idl:68
@ D3D10_DST_OM_RENDER_TARGETS
Definition: d3d10effect.idl:51
@ D3D10_DST_GS_SHADER_RESOURCES
Definition: d3d10effect.idl:60
@ D3D10_DST_RS_SCISSOR_RECTS
Definition: d3d10effect.idl:71
@ D3D10_DST_PS_CONSTANT_BUFFERS
Definition: d3d10effect.idl:65
@ D3D10_DST_IA_VERTEX_BUFFERS
Definition: d3d10effect.idl:66
@ D3D10_DST_GS_CONSTANT_BUFFERS
Definition: d3d10effect.idl:61
@ D3D10_DST_IA_PRIMITIVE_TOPOLOGY
Definition: d3d10effect.idl:69
@ D3D10_DST_OM_BLEND_STATE
Definition: d3d10effect.idl:53
@ D3D10_DST_RS_VIEWPORTS
Definition: d3d10effect.idl:70
@ D3D10_DST_PS
Definition: d3d10effect.idl:62
@ D3D10_DST_GS
Definition: d3d10effect.idl:58
@ D3D10_DST_PS_SAMPLERS
Definition: d3d10effect.idl:63
@ D3D10_DST_SO_BUFFERS
Definition: d3d10effect.idl:50
@ D3D10_DST_OM_DEPTH_STENCIL_STATE
Definition: d3d10effect.idl:52
@ D3D10_DST_VS_SHADER_RESOURCES
Definition: d3d10effect.idl:56
@ D3D10_DST_VS_SAMPLERS
Definition: d3d10effect.idl:55
@ D3D10_DST_PREDICATION
Definition: d3d10effect.idl:73
@ D3D10_DST_RS_RASTERIZER_STATE
Definition: d3d10effect.idl:72
@ D3D10_DST_GS_SAMPLERS
Definition: d3d10effect.idl:59
@ D3D10_DST_VS_CONSTANT_BUFFERS
Definition: d3d10effect.idl:57
@ D3D10_DST_IA_INDEX_BUFFER
Definition: d3d10effect.idl:67

◆ D3D10StateBlockMaskEnableAll()

HRESULT WINAPI D3D10StateBlockMaskEnableAll ( D3D10_STATE_BLOCK_MASK *  mask)

Definition at line 759 of file stateblock.c.

760{
761 TRACE("mask %p.\n", mask);
762
763 if (!mask)
764 return E_INVALIDARG;
765
766 memset(mask, 0xff, sizeof(*mask));
767
768 return S_OK;
769}

◆ D3D10StateBlockMaskEnableCapture()

HRESULT WINAPI D3D10StateBlockMaskEnableCapture ( D3D10_STATE_BLOCK_MASK *  mask,
D3D10_DEVICE_STATE_TYPES  state_type,
UINT  start_idx,
UINT  count 
)

Definition at line 771 of file stateblock.c.

773{
774 TRACE("mask %p state_type %s, start_idx %u, count %u.\n",
775 mask, debug_d3d10_device_state_types(state_type), start_idx, count);
776
777 if (!mask)
778 return E_INVALIDARG;
779
780 switch (state_type)
781 {
783 return stateblock_mask_set_bits(&mask->SOBuffers, 1, start_idx, count);
785 return stateblock_mask_set_bits(&mask->OMRenderTargets, 1, start_idx, count);
787 return stateblock_mask_set_bits(&mask->OMDepthStencilState, 1, start_idx, count);
789 return stateblock_mask_set_bits(&mask->OMBlendState, 1, start_idx, count);
790 case D3D10_DST_VS:
791 return stateblock_mask_set_bits(&mask->VS, 1, start_idx, count);
793 return stateblock_mask_set_bits(mask->VSSamplers,
796 return stateblock_mask_set_bits(mask->VSShaderResources,
799 return stateblock_mask_set_bits(mask->VSConstantBuffers,
801 case D3D10_DST_GS:
802 return stateblock_mask_set_bits(&mask->GS, 1, start_idx, count);
804 return stateblock_mask_set_bits(mask->GSSamplers,
807 return stateblock_mask_set_bits(mask->GSShaderResources,
810 return stateblock_mask_set_bits(mask->GSConstantBuffers,
812 case D3D10_DST_PS:
813 return stateblock_mask_set_bits(&mask->PS, 1, start_idx, count);
815 return stateblock_mask_set_bits(mask->PSSamplers,
818 return stateblock_mask_set_bits(mask->PSShaderResources,
821 return stateblock_mask_set_bits(mask->PSConstantBuffers,
824 return stateblock_mask_set_bits(mask->IAVertexBuffers,
827 return stateblock_mask_set_bits(&mask->IAIndexBuffer, 1, start_idx, count);
829 return stateblock_mask_set_bits(&mask->IAInputLayout, 1, start_idx, count);
831 return stateblock_mask_set_bits(&mask->IAPrimitiveTopology, 1, start_idx, count);
833 return stateblock_mask_set_bits(&mask->RSViewports, 1, start_idx, count);
835 return stateblock_mask_set_bits(&mask->RSScissorRects, 1, start_idx, count);
837 return stateblock_mask_set_bits(&mask->RSRasterizerState, 1, start_idx, count);
839 return stateblock_mask_set_bits(&mask->Predication, 1, start_idx, count);
840 default:
841 FIXME("Unhandled state_type %#x.\n", state_type);
842 return E_INVALIDARG;
843 }
844}
static HRESULT stateblock_mask_set_bits(BYTE *field, UINT field_size, UINT start_bit, UINT count)
Definition: stateblock.c:587

Referenced by d3d10_effect_pass_ComputeStateBlockMask().

◆ D3D10StateBlockMaskGetSetting()

BOOL WINAPI D3D10StateBlockMaskGetSetting ( D3D10_STATE_BLOCK_MASK *  mask,
D3D10_DEVICE_STATE_TYPES  state_type,
UINT  idx 
)

Definition at line 846 of file stateblock.c.

848{
849 TRACE("mask %p state_type %s, idx %u.\n",
851
852 if (!mask)
853 return FALSE;
854
855 switch (state_type)
856 {
858 return stateblock_mask_get_bit(&mask->SOBuffers, 1, idx);
860 return stateblock_mask_get_bit(&mask->OMRenderTargets, 1, idx);
862 return stateblock_mask_get_bit(&mask->OMDepthStencilState, 1, idx);
864 return stateblock_mask_get_bit(&mask->OMBlendState, 1, idx);
865 case D3D10_DST_VS:
866 return stateblock_mask_get_bit(&mask->VS, 1, idx);
868 return stateblock_mask_get_bit(mask->VSSamplers,
871 return stateblock_mask_get_bit(mask->VSShaderResources,
874 return stateblock_mask_get_bit(mask->VSConstantBuffers,
876 case D3D10_DST_GS:
877 return stateblock_mask_get_bit(&mask->GS, 1, idx);
879 return stateblock_mask_get_bit(mask->GSSamplers,
882 return stateblock_mask_get_bit(mask->GSShaderResources,
885 return stateblock_mask_get_bit(mask->GSConstantBuffers,
887 case D3D10_DST_PS:
888 return stateblock_mask_get_bit(&mask->PS, 1, idx);
890 return stateblock_mask_get_bit(mask->PSSamplers,
893 return stateblock_mask_get_bit(mask->PSShaderResources,
896 return stateblock_mask_get_bit(mask->PSConstantBuffers,
899 return stateblock_mask_get_bit(mask->IAVertexBuffers,
902 return stateblock_mask_get_bit(&mask->IAIndexBuffer, 1, idx);
904 return stateblock_mask_get_bit(&mask->IAInputLayout, 1, idx);
906 return stateblock_mask_get_bit(&mask->IAPrimitiveTopology, 1, idx);
908 return stateblock_mask_get_bit(&mask->RSViewports, 1, idx);
910 return stateblock_mask_get_bit(&mask->RSScissorRects, 1, idx);
912 return stateblock_mask_get_bit(&mask->RSRasterizerState, 1, idx);
914 return stateblock_mask_get_bit(&mask->Predication, 1, idx);
915 default:
916 FIXME("Unhandled state_type %#x.\n", state_type);
917 return FALSE;
918 }
919}
static BOOL stateblock_mask_get_bit(BYTE *field, UINT field_size, UINT idx)
Definition: stateblock.c:579
#define FALSE
Definition: types.h:117
unsigned int idx
Definition: utils.c:40

◆ D3D10StateBlockMaskIntersect()

HRESULT WINAPI D3D10StateBlockMaskIntersect ( D3D10_STATE_BLOCK_MASK *  mask_x,
D3D10_STATE_BLOCK_MASK *  mask_y,
D3D10_STATE_BLOCK_MASK *  result 
)

Definition at line 921 of file stateblock.c.

923{
924 UINT count = sizeof(*result) / sizeof(DWORD);
925 UINT i;
926
927 TRACE("mask_x %p, mask_y %p, result %p.\n", mask_x, mask_y, result);
928
929 if (!mask_x || !mask_y || !result)
930 return E_INVALIDARG;
931
932 for (i = 0; i < count; ++i)
933 {
934 ((DWORD *)result)[i] = ((DWORD *)mask_x)[i] & ((DWORD *)mask_y)[i];
935 }
936 for (i = count * sizeof(DWORD); i < sizeof(*result); ++i)
937 {
938 ((BYTE *)result)[i] = ((BYTE *)mask_x)[i] & ((BYTE *)mask_y)[i];
939 }
940
941 return S_OK;
942}

◆ D3D10StateBlockMaskUnion()

HRESULT WINAPI D3D10StateBlockMaskUnion ( D3D10_STATE_BLOCK_MASK *  mask_x,
D3D10_STATE_BLOCK_MASK *  mask_y,
D3D10_STATE_BLOCK_MASK *  result 
)

Definition at line 944 of file stateblock.c.

946{
947 UINT count = sizeof(*result) / sizeof(DWORD);
948 UINT i;
949
950 TRACE("mask_x %p, mask_y %p, result %p.\n", mask_x, mask_y, result);
951
952 if (!mask_x || !mask_y || !result)
953 return E_INVALIDARG;
954
955 for (i = 0; i < count; ++i)
956 {
957 ((DWORD *)result)[i] = ((DWORD *)mask_x)[i] | ((DWORD *)mask_y)[i];
958 }
959 for (i = count * sizeof(DWORD); i < sizeof(*result); ++i)
960 {
961 ((BYTE *)result)[i] = ((BYTE *)mask_x)[i] | ((BYTE *)mask_y)[i];
962 }
963
964 return S_OK;
965}

◆ debug_d3d10_device_state_types()

static const char * debug_d3d10_device_state_types ( D3D10_DEVICE_STATE_TYPES  t)
static

Definition at line 70 of file stateblock.c.

Referenced by D3D10StateBlockMaskDisableCapture(), D3D10StateBlockMaskEnableCapture(), and D3D10StateBlockMaskGetSetting().

◆ impl_from_ID3D10StateBlock()

static struct d3d10_stateblock * impl_from_ID3D10StateBlock ( ID3D10StateBlock *  iface)
inlinestatic

Definition at line 106 of file stateblock.c.

107{
108 return CONTAINING_RECORD(iface, struct d3d10_stateblock, ID3D10StateBlock_iface);
109}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by d3d10_stateblock_AddRef(), d3d10_stateblock_Apply(), d3d10_stateblock_Capture(), d3d10_stateblock_QueryInterface(), and d3d10_stateblock_Release().

◆ stateblock_cleanup()

static void stateblock_cleanup ( struct d3d10_stateblock *  stateblock)
static

Definition at line 111 of file stateblock.c.

112{
113 unsigned int i;
114
115 if (stateblock->vs)
116 {
117 ID3D10VertexShader_Release(stateblock->vs);
118 stateblock->vs = NULL;
119 }
121 {
122 if (stateblock->vs_samplers[i])
123 {
124 ID3D10SamplerState_Release(stateblock->vs_samplers[i]);
125 stateblock->vs_samplers[i] = NULL;
126 }
127 }
129 {
130 if (stateblock->vs_resources[i])
131 {
132 ID3D10ShaderResourceView_Release(stateblock->vs_resources[i]);
133 stateblock->vs_resources[i] = NULL;
134 }
135 }
137 {
138 if (stateblock->vs_cbs[i])
139 {
140 ID3D10Buffer_Release(stateblock->vs_cbs[i]);
141 stateblock->vs_cbs[i] = NULL;
142 }
143 }
144
145 if (stateblock->gs)
146 {
147 ID3D10GeometryShader_Release(stateblock->gs);
148 stateblock->gs = NULL;
149 }
151 {
152 if (stateblock->gs_samplers[i])
153 {
154 ID3D10SamplerState_Release(stateblock->gs_samplers[i]);
155 stateblock->gs_samplers[i] = NULL;
156 }
157 }
159 {
160 if (stateblock->gs_resources[i])
161 {
162 ID3D10ShaderResourceView_Release(stateblock->gs_resources[i]);
163 stateblock->gs_resources[i] = NULL;
164 }
165 }
167 {
168 if (stateblock->gs_cbs[i])
169 {
170 ID3D10Buffer_Release(stateblock->gs_cbs[i]);
171 stateblock->gs_cbs[i] = NULL;
172 }
173 }
174
175 if (stateblock->ps)
176 {
177 ID3D10PixelShader_Release(stateblock->ps);
178 stateblock->ps = NULL;
179 }
181 {
182 if (stateblock->ps_samplers[i])
183 {
184 ID3D10SamplerState_Release(stateblock->ps_samplers[i]);
185 stateblock->ps_samplers[i] = NULL;
186 }
187 }
189 {
190 if (stateblock->ps_resources[i])
191 {
192 ID3D10ShaderResourceView_Release(stateblock->ps_resources[i]);
193 stateblock->ps_resources[i] = NULL;
194 }
195 }
197 {
198 if (stateblock->ps_cbs[i])
199 {
200 ID3D10Buffer_Release(stateblock->ps_cbs[i]);
201 stateblock->ps_cbs[i] = NULL;
202 }
203 }
204
206 {
207 if (stateblock->vbs[i])
208 {
209 ID3D10Buffer_Release(stateblock->vbs[i]);
210 stateblock->vbs[i] = NULL;
211 }
212 }
213 if (stateblock->ib)
214 {
215 ID3D10Buffer_Release(stateblock->ib);
216 stateblock->ib = NULL;
217 }
218 if (stateblock->il)
219 {
220 ID3D10InputLayout_Release(stateblock->il);
221 stateblock->il = NULL;
222 }
223
225 {
226 if (stateblock->rtvs[i])
227 {
228 ID3D10RenderTargetView_Release(stateblock->rtvs[i]);
229 stateblock->rtvs[i] = NULL;
230 }
231 }
232 if (stateblock->dsv)
233 {
234 ID3D10DepthStencilView_Release(stateblock->dsv);
235 stateblock->dsv = NULL;
236 }
237 if (stateblock->dss)
238 {
239 ID3D10DepthStencilState_Release(stateblock->dss);
240 stateblock->dss = NULL;
241 }
242 if (stateblock->bs)
243 {
244 ID3D10BlendState_Release(stateblock->bs);
245 stateblock->bs = NULL;
246 }
247
248 if (stateblock->rs)
249 {
250 ID3D10RasterizerState_Release(stateblock->rs);
251 stateblock->rs = NULL;
252 }
253
254 for (i = 0; i < D3D10_SO_BUFFER_SLOT_COUNT; ++i)
255 {
256 if (stateblock->so_buffers[i])
257 {
258 ID3D10Buffer_Release(stateblock->so_buffers[i]);
259 stateblock->so_buffers[i] = NULL;
260 }
261 }
262
263 if (stateblock->predicate)
264 {
265 ID3D10Predicate_Release(stateblock->predicate);
266 stateblock->predicate = NULL;
267 }
268}

Referenced by d3d10_stateblock_Capture(), and d3d10_stateblock_Release().

◆ stateblock_mask_clear_bits()

static HRESULT stateblock_mask_clear_bits ( BYTE *  field,
UINT  field_size,
UINT  start_bit,
UINT  count 
)
static

Definition at line 618 of file stateblock.c.

619{
620 UINT end_bit = start_bit + count;
621 BYTE start_mask = 0x7f >> (~start_bit & 7);
622 BYTE end_mask = 0xff << (end_bit & 7);
623 UINT start_idx = start_bit >> 3;
624 UINT end_idx = end_bit >> 3;
625
626 if (start_bit >= field_size || field_size - start_bit < count)
627 return E_INVALIDARG;
628
629 if (start_idx == end_idx)
630 {
631 field[start_idx] &= start_mask | end_mask;
632 return S_OK;
633 }
634
635 if (start_bit & 7)
636 {
637 field[start_idx] &= start_mask;
638 ++start_idx;
639 }
640
641 memset(&field[start_idx], 0, end_idx - start_idx);
642
643 if (end_bit & 7)
644 field[end_idx] &= end_mask;
645
646 return S_OK;
647}
Definition: parser.c:44

Referenced by D3D10StateBlockMaskDisableCapture().

◆ stateblock_mask_get_bit()

static BOOL stateblock_mask_get_bit ( BYTE *  field,
UINT  field_size,
UINT  idx 
)
static

Definition at line 579 of file stateblock.c.

580{
581 if (idx >= field_size)
582 return FALSE;
583
584 return field[idx >> 3] & (1 << (idx & 7));
585}

Referenced by D3D10StateBlockMaskGetSetting().

◆ stateblock_mask_set_bits()

static HRESULT stateblock_mask_set_bits ( BYTE *  field,
UINT  field_size,
UINT  start_bit,
UINT  count 
)
static

Definition at line 587 of file stateblock.c.

588{
589 UINT end_bit = start_bit + count;
590 BYTE start_mask = 0xff << (start_bit & 7);
591 BYTE end_mask = 0x7f >> (~end_bit & 7);
592 UINT start_idx = start_bit >> 3;
593 UINT end_idx = end_bit >> 3;
594
595 if (start_bit >= field_size || field_size - start_bit < count)
596 return E_INVALIDARG;
597
598 if (start_idx == end_idx)
599 {
600 field[start_idx] |= start_mask & end_mask;
601 return S_OK;
602 }
603
604 if (start_bit & 7)
605 {
606 field[start_idx] |= start_mask;
607 ++start_idx;
608 }
609
610 memset(&field[start_idx], 0xff, end_idx - start_idx);
611
612 if (end_bit & 7)
613 field[end_idx] |= end_mask;
614
615 return S_OK;
616}

Referenced by D3D10StateBlockMaskEnableCapture().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3d10  )

Variable Documentation

◆ d3d10_stateblock_vtbl

const struct ID3D10StateBlockVtbl d3d10_stateblock_vtbl
static
Initial value:
=
{
}
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_ReleaseAllDeviceObjects(ID3D10StateBlock *iface)
Definition: stateblock.c:526
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_QueryInterface(ID3D10StateBlock *iface, REFIID iid, void **object)
Definition: stateblock.c:270
static ULONG STDMETHODCALLTYPE d3d10_stateblock_AddRef(ID3D10StateBlock *iface)
Definition: stateblock.c:292
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_GetDevice(ID3D10StateBlock *iface, ID3D10Device **device)
Definition: stateblock.c:533
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_Capture(ID3D10StateBlock *iface)
Definition: stateblock.c:319
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_Apply(ID3D10StateBlock *iface)
Definition: stateblock.c:423
static ULONG STDMETHODCALLTYPE d3d10_stateblock_Release(ID3D10StateBlock *iface)
Definition: stateblock.c:302

Definition at line 540 of file stateblock.c.

Referenced by D3D10CreateStateBlock().