68#define WINE_D3D10_TO_STR(x) case x: return #x
99 FIXME(
"Unrecognised D3D10_DEVICE_STATE_TYPES %#x.\n",
t);
100 return "unrecognised";
104#undef WINE_D3D10_TO_STR
117 ID3D10VertexShader_Release(stateblock->
vs);
132 ID3D10ShaderResourceView_Release(stateblock->
vs_resources[
i]);
140 ID3D10Buffer_Release(stateblock->
vs_cbs[
i]);
147 ID3D10GeometryShader_Release(stateblock->
gs);
162 ID3D10ShaderResourceView_Release(stateblock->
gs_resources[
i]);
170 ID3D10Buffer_Release(stateblock->
gs_cbs[
i]);
177 ID3D10PixelShader_Release(stateblock->
ps);
192 ID3D10ShaderResourceView_Release(stateblock->
ps_resources[
i]);
200 ID3D10Buffer_Release(stateblock->
ps_cbs[
i]);
207 if (stateblock->
vbs[
i])
209 ID3D10Buffer_Release(stateblock->
vbs[
i]);
215 ID3D10Buffer_Release(stateblock->
ib);
220 ID3D10InputLayout_Release(stateblock->
il);
226 if (stateblock->
rtvs[
i])
228 ID3D10RenderTargetView_Release(stateblock->
rtvs[
i]);
234 ID3D10DepthStencilView_Release(stateblock->
dsv);
239 ID3D10DepthStencilState_Release(stateblock->
dss);
244 ID3D10BlendState_Release(stateblock->
bs);
250 ID3D10RasterizerState_Release(stateblock->
rs);
265 ID3D10Predicate_Release(stateblock->
predicate);
297 TRACE(
"%p increasing refcount to %lu.\n", stateblock,
refcount);
307 TRACE(
"%p decreasing refcount to %lu.\n", stateblock,
refcount);
312 ID3D10Device_Release(stateblock->
device);
325 TRACE(
"iface %p.\n", iface);
330 ID3D10Device_VSGetShader(stateblock->
device, &stateblock->
vs);
344 ID3D10Device_VSGetConstantBuffers(stateblock->
device,
i, 1, &stateblock->
vs_cbs[
i]);
348 ID3D10Device_GSGetShader(stateblock->
device, &stateblock->
gs);
362 ID3D10Device_GSGetConstantBuffers(stateblock->
device,
i, 1, &stateblock->
gs_cbs[
i]);
366 ID3D10Device_PSGetShader(stateblock->
device, &stateblock->
ps);
380 ID3D10Device_PSGetConstantBuffers(stateblock->
device,
i, 1, &stateblock->
ps_cbs[
i]);
386 ID3D10Device_IAGetVertexBuffers(stateblock->
device,
i, 1, &stateblock->
vbs[
i],
390 ID3D10Device_IAGetIndexBuffer(stateblock->
device, &stateblock->
ib,
393 ID3D10Device_IAGetInputLayout(stateblock->
device, &stateblock->
il);
395 ID3D10Device_IAGetPrimitiveTopology(stateblock->
device, &stateblock->
topology);
399 stateblock->
rtvs, &stateblock->
dsv);
401 ID3D10Device_OMGetDepthStencilState(stateblock->
device, &stateblock->
dss, &stateblock->
stencil_ref);
403 ID3D10Device_OMGetBlendState(stateblock->
device, &stateblock->
bs,
407 ID3D10Device_RSGetViewports(stateblock->
device, &vp_count, stateblock->
vps);
411 ID3D10Device_RSGetState(stateblock->
device, &stateblock->
rs);
428 TRACE(
"iface %p.\n", iface);
431 ID3D10Device_VSSetShader(stateblock->
device, stateblock->
vs);
445 ID3D10Device_VSSetConstantBuffers(stateblock->
device,
i, 1, &stateblock->
vs_cbs[
i]);
449 ID3D10Device_GSSetShader(stateblock->
device, stateblock->
gs);
463 ID3D10Device_GSSetConstantBuffers(stateblock->
device,
i, 1, &stateblock->
gs_cbs[
i]);
467 ID3D10Device_PSSetShader(stateblock->
device, stateblock->
ps);
481 ID3D10Device_PSSetConstantBuffers(stateblock->
device,
i, 1, &stateblock->
ps_cbs[
i]);
487 ID3D10Device_IASetVertexBuffers(stateblock->
device,
i, 1, &stateblock->
vbs[
i],
491 ID3D10Device_IASetIndexBuffer(stateblock->
device, stateblock->
ib,
494 ID3D10Device_IASetInputLayout(stateblock->
device, stateblock->
il);
496 ID3D10Device_IASetPrimitiveTopology(stateblock->
device, stateblock->
topology);
500 stateblock->
rtvs, stateblock->
dsv);
502 ID3D10Device_OMSetDepthStencilState(stateblock->
device, stateblock->
dss, stateblock->
stencil_ref);
504 ID3D10Device_OMSetBlendState(stateblock->
device, stateblock->
bs,
514 ID3D10Device_RSSetState(stateblock->
device, stateblock->
rs);
528 FIXME(
"iface %p stub!\n", iface);
535 FIXME(
"iface %p, device %p stub!\n", iface,
device);
558 TRACE(
"device %p, mask %p, stateblock %p.\n",
device,
mask, stateblock);
560 if (!(
object =
calloc(1,
sizeof(*
object))))
562 ERR(
"Failed to allocate D3D10 stateblock object memory.\n");
567 object->refcount = 1;
570 ID3D10Device_AddRef(
object->device);
571 object->mask = *
mask;
573 TRACE(
"Created stateblock %p.\n",
object);
574 *stateblock = &
object->ID3D10StateBlock_iface;
581 if (
idx >= field_size)
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;
595 if (start_bit >= field_size || field_size - start_bit <
count)
598 if (start_idx == end_idx)
600 field[start_idx] |= start_mask & end_mask;
606 field[start_idx] |= start_mask;
610 memset(&
field[start_idx], 0xff, end_idx - start_idx);
613 field[end_idx] |= end_mask;
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;
626 if (start_bit >= field_size || field_size - start_bit <
count)
629 if (start_idx == end_idx)
631 field[start_idx] &= start_mask | end_mask;
637 field[start_idx] &= start_mask;
644 field[end_idx] &= end_mask;
655 TRACE(
"mask_x %p, mask_y %p, result %p.\n", mask_x, mask_y,
result);
657 if (!mask_x || !mask_y || !
result)
687 TRACE(
"mask %p state_type %s, start_idx %u, count %u.\n",
754 FIXME(
"Unhandled state_type %#x.\n", state_type);
774 TRACE(
"mask %p state_type %s, start_idx %u, count %u.\n",
841 FIXME(
"Unhandled state_type %#x.\n", state_type);
849 TRACE(
"mask %p state_type %s, idx %u.\n",
916 FIXME(
"Unhandled state_type %#x.\n", state_type);
927 TRACE(
"mask_x %p, mask_y %p, result %p.\n", mask_x, mask_y,
result);
929 if (!mask_x || !mask_y || !
result)
950 TRACE(
"mask_x %p, mask_y %p, result %p.\n", mask_x, mask_y,
result);
952 if (!mask_x || !mask_y || !
result)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define STDMETHODCALLTYPE
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_ReleaseAllDeviceObjects(ID3D10StateBlock *iface)
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_QueryInterface(ID3D10StateBlock *iface, REFIID iid, void **object)
static ULONG STDMETHODCALLTYPE d3d10_stateblock_AddRef(ID3D10StateBlock *iface)
HRESULT WINAPI D3D10StateBlockMaskEnableCapture(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 D3D10StateBlockMaskDisableAll(D3D10_STATE_BLOCK_MASK *mask)
static struct d3d10_stateblock * impl_from_ID3D10StateBlock(ID3D10StateBlock *iface)
#define WINE_D3D10_TO_STR(x)
HRESULT WINAPI D3D10StateBlockMaskUnion(D3D10_STATE_BLOCK_MASK *mask_x, D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result)
static HRESULT stateblock_mask_clear_bits(BYTE *field, UINT field_size, UINT start_bit, UINT count)
HRESULT WINAPI D3D10CreateStateBlock(ID3D10Device *device, D3D10_STATE_BLOCK_MASK *mask, ID3D10StateBlock **stateblock)
static const char * debug_d3d10_device_state_types(D3D10_DEVICE_STATE_TYPES t)
HRESULT WINAPI D3D10StateBlockMaskDifference(D3D10_STATE_BLOCK_MASK *mask_x, D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result)
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_GetDevice(ID3D10StateBlock *iface, ID3D10Device **device)
static BOOL stateblock_mask_get_bit(BYTE *field, UINT field_size, UINT idx)
static const struct ID3D10StateBlockVtbl d3d10_stateblock_vtbl
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_Capture(ID3D10StateBlock *iface)
static HRESULT stateblock_mask_set_bits(BYTE *field, UINT field_size, UINT start_bit, UINT count)
HRESULT WINAPI D3D10StateBlockMaskIntersect(D3D10_STATE_BLOCK_MASK *mask_x, D3D10_STATE_BLOCK_MASK *mask_y, D3D10_STATE_BLOCK_MASK *result)
static HRESULT STDMETHODCALLTYPE d3d10_stateblock_Apply(ID3D10StateBlock *iface)
static void stateblock_cleanup(struct d3d10_stateblock *stateblock)
HRESULT WINAPI D3D10StateBlockMaskDisableCapture(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)
static ULONG STDMETHODCALLTYPE d3d10_stateblock_Release(ID3D10StateBlock *iface)
const unsigned int D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE
const unsigned int D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
const unsigned int D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
const unsigned int D3D10_SO_BUFFER_SLOT_COUNT
const unsigned int D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT
const unsigned int D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
const unsigned int D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
enum _D3D10_DEVICE_STATE_TYPES D3D10_DEVICE_STATE_TYPES
@ D3D10_DST_PS_SHADER_RESOURCES
@ D3D10_DST_IA_INPUT_LAYOUT
@ D3D10_DST_OM_RENDER_TARGETS
@ D3D10_DST_GS_SHADER_RESOURCES
@ D3D10_DST_RS_SCISSOR_RECTS
@ D3D10_DST_PS_CONSTANT_BUFFERS
@ D3D10_DST_IA_VERTEX_BUFFERS
@ D3D10_DST_GS_CONSTANT_BUFFERS
@ D3D10_DST_IA_PRIMITIVE_TOPOLOGY
@ D3D10_DST_OM_BLEND_STATE
@ D3D10_DST_OM_DEPTH_STENCIL_STATE
@ D3D10_DST_VS_SHADER_RESOURCES
@ D3D10_DST_RS_RASTERIZER_STATE
@ D3D10_DST_VS_CONSTANT_BUFFERS
@ D3D10_DST_IA_INDEX_BUFFER
GLuint GLuint GLsizei count
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
#define IsEqualGUID(rguid1, rguid2)
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)]
ID3D10RasterizerState * rs
ID3D10StateBlock ID3D10StateBlock_iface
ID3D10Buffer * vbs[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
ID3D10Buffer * gs_cbs[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]
ID3D10Buffer * so_buffers[D3D10_SO_BUFFER_SLOT_COUNT]
ID3D10Predicate * predicate
UINT vb_strides[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
D3D10_PRIMITIVE_TOPOLOGY topology
UINT so_offsets[D3D10_SO_BUFFER_SLOT_COUNT]
ID3D10Buffer * vs_cbs[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]
D3D10_RECT scissor_rects[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE]
ID3D10RenderTargetView * rtvs[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT]
ID3D10SamplerState * ps_samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]
ID3D10ShaderResourceView * gs_resources[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]
ID3D10Buffer * ps_cbs[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]
ID3D10DepthStencilView * dsv
ID3D10DepthStencilState * dss
D3D10_STATE_BLOCK_MASK mask
UINT vb_offsets[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
ID3D10ShaderResourceView * vs_resources[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]
D3D10_VIEWPORT vps[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE]
ID3D10SamplerState * gs_samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]
ID3D10ShaderResourceView * ps_resources[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]
ID3D10GeometryShader * gs
ID3D10SamplerState * vs_samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]
#define CONTAINING_RECORD(address, type, field)