ReactOS 0.4.17-dev-966-gf06eace
d3d9_private.h File Reference
#include <assert.h>
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "wine/debug.h"
#include "d3d9.h"
#include "d3d9on12.h"
#include "wine/wined3d.h"
Include dependency graph for d3d9_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  d3d9
 
struct  fvf_declaration
 
struct  d3d9_device
 
struct  d3d9_resource
 
struct  d3d9_volume
 
struct  d3d9_swapchain
 
struct  d3d9_surface
 
struct  d3d9_vertexbuffer
 
struct  d3d9_indexbuffer
 
struct  d3d9_texture
 
struct  d3d9_stateblock
 
struct  d3d9_vertex_declaration
 
struct  d3d9_vertexshader
 
struct  d3d9_pixelshader
 
struct  d3d9_query
 

Macros

#define COBJMACROS
 
#define D3D9_MAX_VERTEX_SHADER_CONSTANTF   256
 
#define D3D9_MAX_TEXTURE_UNITS   20
 
#define D3D9_MAX_STREAMS   16
 
#define D3DPRESENTFLAGS_MASK   0x00000fffu
 
#define D3D9_TEXTURE_MIPMAP_DIRTY   0x1
 
#define D3DFMT_RESZ   MAKEFOURCC('R','E','S','Z')
 
#define D3D9_RESZ_CODE   0x7fa05000
 

Enumerations

enum  d3d9_device_state { D3D9_DEVICE_STATE_OK , D3D9_DEVICE_STATE_LOST , D3D9_DEVICE_STATE_NOT_RESET }
 

Functions

HRESULT vdecl_convert_fvf (DWORD FVF, D3DVERTEXELEMENT9 **ppVertexElements)
 
D3DFORMAT d3dformat_from_wined3dformat (enum wined3d_format_id format)
 
BOOL is_gdi_compat_wined3dformat (enum wined3d_format_id format)
 
enum wined3d_format_id wined3dformat_from_d3dformat (D3DFORMAT format)
 
unsigned int wined3dmapflags_from_d3dmapflags (unsigned int flags, unsigned int usage)
 
void present_parameters_from_wined3d_swapchain_desc (D3DPRESENT_PARAMETERS *present_parameters, const struct wined3d_swapchain_desc *swapchain_desc, DWORD presentation_interval)
 
void d3d9_caps_from_wined3dcaps (const struct d3d9 *d3d9, unsigned int adapter_ordinal, D3DCAPS9 *caps, const struct wined3d_caps *wined3d_caps)
 
BOOL d3d9_init (struct d3d9 *d3d9, BOOL extended, BOOL d3d9on12)
 
HRESULT device_init (struct d3d9_device *device, struct d3d9 *parent, struct wined3d *wined3d, UINT adapter, D3DDEVTYPE device_type, HWND focus_window, DWORD flags, D3DPRESENT_PARAMETERS *parameters, D3DDISPLAYMODEEX *mode)
 
void d3d9_resource_cleanup (struct d3d9_resource *resource)
 
HRESULT d3d9_resource_free_private_data (struct d3d9_resource *resource, const GUID *guid)
 
HRESULT d3d9_resource_get_private_data (struct d3d9_resource *resource, const GUID *guid, void *data, DWORD *data_size)
 
void d3d9_resource_init (struct d3d9_resource *resource)
 
HRESULT d3d9_resource_set_private_data (struct d3d9_resource *resource, const GUID *guid, const void *data, DWORD data_size, DWORD flags)
 
void volume_init (struct d3d9_volume *volume, struct wined3d_texture *wined3d_texture, unsigned int sub_resource_idx, const struct wined3d_parent_ops **parent_ops)
 
HRESULT d3d9_swapchain_create (struct d3d9_device *device, struct wined3d_swapchain_desc *desc, unsigned int swap_interval, struct d3d9_swapchain **swapchain)
 
struct wined3d_rendertarget_view * d3d9_surface_acquire_rendertarget_view (struct d3d9_surface *surface)
 
struct d3d9_surface * d3d9_surface_create (struct wined3d_texture *wined3d_texture, unsigned int sub_resource_idx, IUnknown *container)
 
struct d3d9_device * d3d9_surface_get_device (const struct d3d9_surface *surface)
 
void d3d9_surface_release_rendertarget_view (struct d3d9_surface *surface, struct wined3d_rendertarget_view *rtv)
 
struct d3d9_surface * unsafe_impl_from_IDirect3DSurface9 (IDirect3DSurface9 *iface)
 
HRESULT vertexbuffer_init (struct d3d9_vertexbuffer *buffer, struct d3d9_device *device, UINT size, UINT usage, DWORD fvf, D3DPOOL pool)
 
struct d3d9_vertexbuffer * unsafe_impl_from_IDirect3DVertexBuffer9 (IDirect3DVertexBuffer9 *iface)
 
HRESULT indexbuffer_init (struct d3d9_indexbuffer *buffer, struct d3d9_device *device, UINT size, DWORD usage, D3DFORMAT format, D3DPOOL pool)
 
struct d3d9_indexbuffer * unsafe_impl_from_IDirect3DIndexBuffer9 (IDirect3DIndexBuffer9 *iface)
 
HRESULT d3d9_texture_2d_init (struct d3d9_texture *texture, struct d3d9_device *device, unsigned int width, unsigned int height, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
 
HRESULT d3d9_texture_3d_init (struct d3d9_texture *texture, struct d3d9_device *device, unsigned int width, unsigned int height, unsigned int depth, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
 
HRESULT d3d9_texture_cube_init (struct d3d9_texture *texture, struct d3d9_device *device, unsigned int edge_length, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
 
static struct wined3d_texture * d3d9_texture_get_draw_texture (struct d3d9_texture *texture)
 
struct d3d9_texture * unsafe_impl_from_IDirect3DBaseTexture9 (IDirect3DBaseTexture9 *iface)
 
void d3d9_texture_flag_auto_gen_mipmap (struct d3d9_texture *texture)
 
void d3d9_texture_gen_auto_mipmap (struct d3d9_texture *texture)
 
HRESULT stateblock_init (struct d3d9_stateblock *stateblock, struct d3d9_device *device, D3DSTATEBLOCKTYPE type, struct wined3d_stateblock *wined3d_stateblock)
 
HRESULT d3d9_vertex_declaration_create (struct d3d9_device *device, const D3DVERTEXELEMENT9 *elements, struct d3d9_vertex_declaration **declaration)
 
struct d3d9_vertex_declaration * unsafe_impl_from_IDirect3DVertexDeclaration9 (IDirect3DVertexDeclaration9 *iface)
 
HRESULT vertexshader_init (struct d3d9_vertexshader *shader, struct d3d9_device *device, const DWORD *byte_code)
 
struct d3d9_vertexshader * unsafe_impl_from_IDirect3DVertexShader9 (IDirect3DVertexShader9 *iface)
 
HRESULT pixelshader_init (struct d3d9_pixelshader *shader, struct d3d9_device *device, const DWORD *byte_code)
 
struct d3d9_pixelshader * unsafe_impl_from_IDirect3DPixelShader9 (IDirect3DPixelShader9 *iface)
 
HRESULT query_init (struct d3d9_query *query, struct d3d9_device *device, D3DQUERYTYPE type)
 
static struct d3d9_device * impl_from_IDirect3DDevice9Ex (IDirect3DDevice9Ex *iface)
 
static DWORD d3dusage_from_wined3dusage (unsigned int wined3d_usage, unsigned int bind_flags)
 
static D3DPOOL d3dpool_from_wined3daccess (unsigned int access, unsigned int usage)
 
static D3DMULTISAMPLE_TYPE d3dmultisample_type_from_wined3d (enum wined3d_multisample_type type)
 
static D3DSCANLINEORDERING d3dscanlineordering_from_wined3d (enum wined3d_scanline_ordering ordering)
 
static unsigned int map_access_from_usage (unsigned int usage)
 
static unsigned int wined3daccess_from_d3dpool (D3DPOOL pool, unsigned int usage)
 
static unsigned int wined3d_usage_from_d3d (D3DPOOL pool, DWORD usage)
 
static unsigned int wined3d_bind_flags_from_d3d9_usage (DWORD usage)
 
static enum wined3d_multisample_type wined3d_multisample_type_from_d3d (D3DMULTISAMPLE_TYPE type)
 
static enum wined3d_device_type wined3d_device_type_from_d3d (D3DDEVTYPE type)
 
static enum wined3d_scanline_ordering wined3d_scanline_ordering_from_d3d (D3DSCANLINEORDERING ordering)
 

Variables

const struct wined3d_parent_ops d3d9_null_wined3d_parent_ops
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 29 of file d3d9_private.h.

◆ D3D9_MAX_STREAMS

#define D3D9_MAX_STREAMS   16

Definition at line 42 of file d3d9_private.h.

◆ D3D9_MAX_TEXTURE_UNITS

#define D3D9_MAX_TEXTURE_UNITS   20

Definition at line 41 of file d3d9_private.h.

◆ D3D9_MAX_VERTEX_SHADER_CONSTANTF

#define D3D9_MAX_VERTEX_SHADER_CONSTANTF   256

Definition at line 40 of file d3d9_private.h.

◆ D3D9_RESZ_CODE

#define D3D9_RESZ_CODE   0x7fa05000

Definition at line 49 of file d3d9_private.h.

◆ D3D9_TEXTURE_MIPMAP_DIRTY

#define D3D9_TEXTURE_MIPMAP_DIRTY   0x1

Definition at line 46 of file d3d9_private.h.

◆ D3DFMT_RESZ

#define D3DFMT_RESZ   MAKEFOURCC('R','E','S','Z')

Definition at line 48 of file d3d9_private.h.

◆ D3DPRESENTFLAGS_MASK

#define D3DPRESENTFLAGS_MASK   0x00000fffu

Definition at line 44 of file d3d9_private.h.

Enumeration Type Documentation

◆ d3d9_device_state

Enumerator
D3D9_DEVICE_STATE_OK 
D3D9_DEVICE_STATE_LOST 
D3D9_DEVICE_STATE_NOT_RESET 

Definition at line 82 of file d3d9_private.h.

83{
87};
@ D3D9_DEVICE_STATE_OK
Definition: d3d9_private.h:84
@ D3D9_DEVICE_STATE_NOT_RESET
Definition: d3d9_private.h:86
@ D3D9_DEVICE_STATE_LOST
Definition: d3d9_private.h:85

Function Documentation

◆ d3d9_caps_from_wined3dcaps()

void d3d9_caps_from_wined3dcaps ( const struct d3d9 *  d3d9,
unsigned int  adapter_ordinal,
D3DCAPS9 *  caps,
const struct wined3d_caps *  wined3d_caps 
)

Definition at line 369 of file device.c.

371{
372 static const DWORD ps_minor_version[] = {0, 4, 0, 0};
373 static const DWORD vs_minor_version[] = {0, 1, 0, 0};
374 static const DWORD texture_filter_caps =
381 struct wined3d_output_desc output_desc;
383 unsigned int output_idx;
384 HRESULT hr;
385
387 caps->AdapterOrdinal = adapter_ordinal;
388 caps->Caps = wined3d_caps->Caps;
389 caps->Caps2 = wined3d_caps->Caps2;
390 caps->Caps3 = wined3d_caps->Caps3;
444 caps->VS20Caps.Caps = wined3d_caps->VS20Caps.caps;
445 caps->VS20Caps.DynamicFlowControlDepth = wined3d_caps->VS20Caps.dynamic_flow_control_depth;
446 caps->VS20Caps.NumTemps = wined3d_caps->VS20Caps.temp_count;
447 caps->VS20Caps.StaticFlowControlDepth = wined3d_caps->VS20Caps.static_flow_control_depth;
448 caps->PS20Caps.Caps = wined3d_caps->PS20Caps.caps;
449 caps->PS20Caps.DynamicFlowControlDepth = wined3d_caps->PS20Caps.dynamic_flow_control_depth;
450 caps->PS20Caps.NumTemps = wined3d_caps->PS20Caps.temp_count;
451 caps->PS20Caps.StaticFlowControlDepth = wined3d_caps->PS20Caps.static_flow_control_depth;
452 caps->PS20Caps.NumInstructionSlots = wined3d_caps->PS20Caps.instruction_slot_count;
458
459 /* Some functionality is implemented in d3d9.dll, not wined3d.dll. Add the needed caps. */
461
462 /* Filter wined3d caps. */
463 caps->TextureFilterCaps &= texture_filter_caps;
464 caps->CubeTextureFilterCaps &= texture_filter_caps;
465 caps->VolumeTextureFilterCaps &= texture_filter_caps;
466
467 caps->DevCaps &=
475
476 caps->ShadeCaps &=
479
480 caps->RasterCaps &=
487
488 caps->DevCaps2 &=
492
493 caps->Caps2 &=
496
497 caps->VertexProcessingCaps &=
501
502 caps->TextureCaps &=
509
512
513 if (caps->PixelShaderVersion > 3)
514 {
515 caps->PixelShaderVersion = D3DPS_VERSION(3, 0);
516 }
517 else
518 {
520 caps->PixelShaderVersion = D3DPS_VERSION(major, ps_minor_version[major]);
521 }
522
523 if (caps->VertexShaderVersion > 3)
524 {
526 }
527 else
528 {
530 caps->VertexShaderVersion = D3DVS_VERSION(major, vs_minor_version[major]);
531 }
532
533 /* Get adapter group information */
534 output_idx = adapter_ordinal;
535 wined3d_output = d3d9->wined3d_outputs[output_idx];
536
540
541 if (FAILED(hr))
542 {
543 ERR("Failed to get output desc, hr %#lx.\n", hr);
544 return;
545 }
546
547 caps->MasterAdapterOrdinal = output_idx - output_desc.ordinal;
548 caps->AdapterOrdinalInGroup = output_desc.ordinal;
549 if (!caps->AdapterOrdinalInGroup)
550 {
553 }
554 else
555 {
556 caps->NumberOfAdaptersInGroup = 0;
557 }
558}
#define ERR(fmt,...)
Definition: precomp.h:57
#define D3DPS_VERSION(major, minor)
Definition: d3d8types.h:474
enum _D3DDEVTYPE D3DDEVTYPE
#define D3DVS_VERSION(major, minor)
Definition: d3d8types.h:475
#define D3D_MAX_SIMULTANEOUS_RENDERTARGETS
Definition: d3d9types.h:193
HRESULT hr
Definition: delayimp.cpp:582
#define D3DCAPS2_RESERVED
Definition: d3d8caps.h:23
#define D3DDEVCAPS_EXECUTESYSTEMMEMORY
Definition: d3d8caps.h:36
#define D3DPTEXTURECAPS_CUBEMAP_POW2
Definition: d3d8caps.h:126
#define D3DDEVCAPS_CANRENDERAFTERFLIP
Definition: d3d8caps.h:43
#define D3DVTXPCAPS_LOCALVIEWER
Definition: d3d8caps.h:185
#define D3DPTEXTURECAPS_PROJECTED
Definition: d3d8caps.h:120
#define D3DPRASTERCAPS_WBUFFER
Definition: d3d8caps.h:83
#define D3DDEVCAPS_HWTRANSFORMANDLIGHT
Definition: d3d8caps.h:48
#define D3DPTFILTERCAPS_MIPFLINEAR
Definition: d3d8caps.h:132
#define D3DDEVCAPS_TEXTUREVIDEOMEMORY
Definition: d3d8caps.h:41
#define D3DDEVCAPS_DRAWPRIMITIVES2
Definition: d3d8caps.h:45
#define D3DDEVCAPS_TEXTURESYSTEMMEMORY
Definition: d3d8caps.h:40
#define D3DPTFILTERCAPS_MINFANISOTROPIC
Definition: d3d8caps.h:130
#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE
Definition: d3d8caps.h:117
#define D3DDEVCAPS_QUINTICRTPATCHES
Definition: d3d8caps.h:52
#define D3DVTXPCAPS_MATERIALSOURCE7
Definition: d3d8caps.h:182
#define D3DPTFILTERCAPS_MINFLINEAR
Definition: d3d8caps.h:129
#define D3DPTEXTURECAPS_SQUAREONLY
Definition: d3d8caps.h:116
#define D3DDEVCAPS_DRAWPRIMITIVES2EX
Definition: d3d8caps.h:47
#define D3DPTFILTERCAPS_MAGFANISOTROPIC
Definition: d3d8caps.h:135
#define D3DPTEXTURECAPS_ALPHAPALETTE
Definition: d3d8caps.h:118
#define D3DPSHADECAPS_COLORGOURAUDRGB
Definition: d3d8caps.h:109
#define D3DPRASTERCAPS_ZBUFFERLESSHSR
Definition: d3d8caps.h:80
#define D3DDEVCAPS_EXECUTEVIDEOMEMORY
Definition: d3d8caps.h:37
#define D3DPRASTERCAPS_WFOG
Definition: d3d8caps.h:84
#define D3DPSHADECAPS_FOGGOURAUD
Definition: d3d8caps.h:112
#define D3DPTEXTURECAPS_ALPHA
Definition: d3d8caps.h:115
#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES
Definition: d3d8caps.h:46
#define D3DPSHADECAPS_SPECULARGOURAUDRGB
Definition: d3d8caps.h:110
#define D3DPTEXTURECAPS_VOLUMEMAP
Definition: d3d8caps.h:122
#define D3DPTEXTURECAPS_VOLUMEMAP_POW2
Definition: d3d8caps.h:127
#define D3DPRESENT_INTERVAL_IMMEDIATE
Definition: d3d8caps.h:33
#define D3DDEVCAPS_DRAWPRIMTLVERTEX
Definition: d3d8caps.h:42
#define D3DPRASTERCAPS_ANISOTROPY
Definition: d3d8caps.h:82
#define D3DVTXPCAPS_DIRECTIONALLIGHTS
Definition: d3d8caps.h:183
#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY
Definition: d3d8caps.h:38
#define D3DPRASTERCAPS_COLORPERSPECTIVE
Definition: d3d8caps.h:86
#define D3DDEVCAPS_RTPATCHES
Definition: d3d8caps.h:53
#define D3DCAPS2_CANCALIBRATEGAMMA
Definition: d3d8caps.h:22
#define D3DDEVCAPS_NPATCHES
Definition: d3d8caps.h:55
#define D3DPRASTERCAPS_ZFOG
Definition: d3d8caps.h:85
#define D3DDEVCAPS_RTPATCHHANDLEZERO
Definition: d3d8caps.h:54
#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL
Definition: d3d8caps.h:119
#define D3DPRESENT_INTERVAL_ONE
Definition: d3d8caps.h:29
#define D3DPRASTERCAPS_FOGRANGE
Definition: d3d8caps.h:81
#define D3DPSHADECAPS_ALPHAGOURAUDBLEND
Definition: d3d8caps.h:111
#define D3DPTEXTURECAPS_PERSPECTIVE
Definition: d3d8caps.h:113
#define D3DDEVCAPS_HWRASTERIZATION
Definition: d3d8caps.h:50
#define D3DVTXPCAPS_TWEENING
Definition: d3d8caps.h:186
#define D3DPRASTERCAPS_FOGVERTEX
Definition: d3d8caps.h:75
#define D3DPTFILTERCAPS_MAGFLINEAR
Definition: d3d8caps.h:134
#define D3DPTFILTERCAPS_MINFPOINT
Definition: d3d8caps.h:128
#define D3DPTEXTURECAPS_CUBEMAP
Definition: d3d8caps.h:121
#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM
Definition: d3d8caps.h:44
#define D3DVTXPCAPS_TEXGEN
Definition: d3d8caps.h:181
#define D3DCAPS2_DYNAMICTEXTURES
Definition: d3d8caps.h:25
#define D3DDEVCAPS_CANBLTSYSTONONLOCAL
Definition: d3d8caps.h:49
#define D3DPRASTERCAPS_FOGTABLE
Definition: d3d8caps.h:76
#define D3DCAPS2_CANMANAGERESOURCE
Definition: d3d8caps.h:24
#define D3DPTEXTURECAPS_MIPCUBEMAP
Definition: d3d8caps.h:125
#define D3DPTFILTERCAPS_MIPFPOINT
Definition: d3d8caps.h:131
#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY
Definition: d3d8caps.h:39
#define D3DPRASTERCAPS_ZTEST
Definition: d3d8caps.h:74
#define D3DVTXPCAPS_POSITIONALLIGHTS
Definition: d3d8caps.h:184
#define D3DDEVCAPS_PUREDEVICE
Definition: d3d8caps.h:51
#define D3DCAPS2_FULLSCREENGAMMA
Definition: d3d8caps.h:20
#define D3DPTEXTURECAPS_MIPMAP
Definition: d3d8caps.h:123
#define D3DPTEXTURECAPS_POW2
Definition: d3d8caps.h:114
#define D3DPTFILTERCAPS_MAGFPOINT
Definition: d3d8caps.h:133
#define D3DPRASTERCAPS_MIPMAPLODBIAS
Definition: d3d8caps.h:78
#define D3DPTEXTURECAPS_MIPVOLUMEMAP
Definition: d3d8caps.h:124
#define D3DPRASTERCAPS_DITHER
Definition: d3d8caps.h:72
#define D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER
Definition: d3d9caps.h:200
#define D3DDEVCAPS2_ADAPTIVETESSNPATCH
Definition: d3d9caps.h:204
#define D3DDEVCAPS2_ADAPTIVETESSRTPATCH
Definition: d3d9caps.h:203
#define D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS
Definition: d3d9caps.h:92
#define D3DPTEXTURECAPS_NOPROJECTEDBUMPENV
Definition: d3d9caps.h:136
#define D3DDEVCAPS2_DMAPNPATCH
Definition: d3d9caps.h:202
#define D3DPRASTERCAPS_SCISSORTEST
Definition: d3d9caps.h:91
#define D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES
Definition: d3d9caps.h:205
#define D3DPRASTERCAPS_DEPTHBIAS
Definition: d3d9caps.h:93
#define D3DDEVCAPS2_STREAMOFFSET
Definition: d3d9caps.h:201
#define D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH
Definition: d3d9caps.h:206
#define D3DPTFILTERCAPS_MINFGAUSSIANQUAD
Definition: d3d9caps.h:141
#define D3DPTFILTERCAPS_MINFPYRAMIDALQUAD
Definition: d3d9caps.h:140
#define D3DCAPS2_CANAUTOGENMIPMAP
Definition: d3d9caps.h:22
#define D3DPRASTERCAPS_MULTISAMPLE_TOGGLE
Definition: d3d9caps.h:94
#define D3DPTFILTERCAPS_MAGFGAUSSIANQUAD
Definition: d3d9caps.h:148
#define D3DVTXPCAPS_TEXGEN_SPHEREMAP
Definition: d3d9caps.h:199
#define D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET
Definition: d3d9caps.h:207
#define D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD
Definition: d3d9caps.h:147
unsigned long DWORD
Definition: ntddk_ex.h:95
#define FAILED(hr)
Definition: intsafe.h:51
#define min(a, b)
Definition: monoChain.cc:55
#define major(rdev)
Definition: propsheet.cpp:928
D3DDEVTYPE DeviceType
Definition: d3d9caps.h:264
float MaxVertexW
Definition: d3d9caps.h:292
DWORD TextureOpCaps
Definition: d3d9caps.h:300
DWORD DevCaps2
Definition: d3d9caps.h:317
DWORD MaxTextureWidth
Definition: d3d9caps.h:286
DWORD Caps3
Definition: d3d9caps.h:268
DWORD MaxVertexBlendMatrixIndex
Definition: d3d9caps.h:307
DWORD MaxTextureHeight
Definition: d3d9caps.h:287
DWORD VertexProcessingCaps
Definition: d3d9caps.h:303
DWORD DevCaps
Definition: d3d9caps.h:271
float GuardBandBottom
Definition: d3d9caps.h:296
DWORD DestBlendCaps
Definition: d3d9caps.h:276
DWORD RasterCaps
Definition: d3d9caps.h:273
DWORD MaxUserClipPlanes
Definition: d3d9caps.h:305
UINT MasterAdapterOrdinal
Definition: d3d9caps.h:320
DWORD Caps2
Definition: d3d9caps.h:267
DWORD MaxVertexIndex
Definition: d3d9caps.h:310
DWORD TextureFilterCaps
Definition: d3d9caps.h:280
DWORD MaxAnisotropy
Definition: d3d9caps.h:291
DWORD PixelShaderVersion
Definition: d3d9caps.h:315
DWORD ShadeCaps
Definition: d3d9caps.h:278
DWORD StretchRectFilterCaps
Definition: d3d9caps.h:325
DWORD PrimitiveMiscCaps
Definition: d3d9caps.h:272
DWORD LineCaps
Definition: d3d9caps.h:285
DWORD MaxPShaderInstructionsExecuted
Definition: d3d9caps.h:330
UINT AdapterOrdinalInGroup
Definition: d3d9caps.h:321
D3DVSHADERCAPS2_0 VS20Caps
Definition: d3d9caps.h:326
float GuardBandRight
Definition: d3d9caps.h:295
DWORD VolumeTextureAddressCaps
Definition: d3d9caps.h:284
DWORD MaxVolumeExtent
Definition: d3d9caps.h:288
DWORD MaxTextureAspectRatio
Definition: d3d9caps.h:290
DWORD FVFCaps
Definition: d3d9caps.h:299
DWORD ZCmpCaps
Definition: d3d9caps.h:274
float PixelShader1xMaxValue
Definition: d3d9caps.h:316
UINT AdapterOrdinal
Definition: d3d9caps.h:265
DWORD CursorCaps
Definition: d3d9caps.h:270
DWORD VertexShaderVersion
Definition: d3d9caps.h:313
DWORD MaxTextureRepeat
Definition: d3d9caps.h:289
DWORD Caps
Definition: d3d9caps.h:266
DWORD MaxVertexBlendMatrices
Definition: d3d9caps.h:306
float GuardBandLeft
Definition: d3d9caps.h:293
float MaxPointSize
Definition: d3d9caps.h:308
float ExtentsAdjust
Definition: d3d9caps.h:297
DWORD MaxPrimitiveCount
Definition: d3d9caps.h:309
DWORD CubeTextureFilterCaps
Definition: d3d9caps.h:281
DWORD MaxPixelShader30InstructionSlots
Definition: d3d9caps.h:332
DWORD MaxTextureBlendStages
Definition: d3d9caps.h:301
DWORD PresentationIntervals
Definition: d3d9caps.h:269
UINT NumberOfAdaptersInGroup
Definition: d3d9caps.h:322
D3DPSHADERCAPS2_0 PS20Caps
Definition: d3d9caps.h:327
DWORD MaxVertexShader30InstructionSlots
Definition: d3d9caps.h:331
DWORD TextureAddressCaps
Definition: d3d9caps.h:283
DWORD MaxSimultaneousTextures
Definition: d3d9caps.h:302
DWORD MaxVertexShaderConst
Definition: d3d9caps.h:314
DWORD MaxActiveLights
Definition: d3d9caps.h:304
float GuardBandTop
Definition: d3d9caps.h:294
DWORD MaxStreams
Definition: d3d9caps.h:311
float MaxNpatchTessellationLevel
Definition: d3d9caps.h:318
DWORD MaxVShaderInstructionsExecuted
Definition: d3d9caps.h:329
DWORD SrcBlendCaps
Definition: d3d9caps.h:275
DWORD NumSimultaneousRTs
Definition: d3d9caps.h:324
DWORD AlphaCmpCaps
Definition: d3d9caps.h:277
DWORD StencilCaps
Definition: d3d9caps.h:298
DWORD TextureCaps
Definition: d3d9caps.h:279
DWORD VertexTextureFilterCaps
Definition: d3d9caps.h:328
DWORD DeclTypes
Definition: d3d9caps.h:323
DWORD VolumeTextureFilterCaps
Definition: d3d9caps.h:282
DWORD MaxStreamStride
Definition: d3d9caps.h:312
INT StaticFlowControlDepth
Definition: d3d9caps.h:257
INT DynamicFlowControlDepth
Definition: d3d9caps.h:255
INT DynamicFlowControlDepth
Definition: d3d9caps.h:246
INT StaticFlowControlDepth
Definition: d3d9caps.h:248
struct wined3d_output ** wined3d_outputs
Definition: d3d9_private.h:66
DWORD MaxPShaderInstructionsExecuted
Definition: wined3d.h:1995
DWORD MaxVertexBlendMatrices
Definition: wined3d.h:1967
DWORD MaxVertexShader30InstructionSlots
Definition: wined3d.h:1996
DWORD MaxTextureBlendStages
Definition: wined3d.h:1961
struct wined3d_vertex_shader_caps VS20Caps
Definition: wined3d.h:1991
DWORD StretchRectFilterCaps
Definition: wined3d.h:1990
DWORD VolumeTextureAddressCaps
Definition: wined3d.h:1940
float GuardBandTop
Definition: wined3d.h:1952
float PixelShader1xMaxValue
Definition: wined3d.h:1981
DWORD FVFCaps
Definition: wined3d.h:1959
DWORD PrimitiveMiscCaps
Definition: wined3d.h:1928
DWORD MaxVertexBlendMatrixIndex
Definition: wined3d.h:1968
DWORD VertexProcessingCaps
Definition: wined3d.h:1964
DWORD TextureAddressCaps
Definition: wined3d.h:1939
DWORD TextureCaps
Definition: wined3d.h:1935
DWORD ShadeCaps
Definition: wined3d.h:1934
DWORD TextureOpCaps
Definition: wined3d.h:1960
DWORD MaxTextureRepeat
Definition: wined3d.h:1946
DWORD MaxAnisotropy
Definition: wined3d.h:1948
DWORD MaxPixelShader30InstructionSlots
Definition: wined3d.h:1997
DWORD MaxVolumeExtent
Definition: wined3d.h:1945
float ExtentsAdjust
Definition: wined3d.h:1956
float MaxNpatchTessellationLevel
Definition: wined3d.h:1986
float GuardBandLeft
Definition: wined3d.h:1951
DWORD VolumeTextureFilterCaps
Definition: wined3d.h:1938
DWORD DevCaps
Definition: wined3d.h:1927
DWORD ZCmpCaps
Definition: wined3d.h:1930
DWORD MaxTextureHeight
Definition: wined3d.h:1944
DWORD CursorCaps
Definition: wined3d.h:1926
DWORD Caps
Definition: wined3d.h:1922
DWORD Caps3
Definition: wined3d.h:1924
DWORD MaxStreams
Definition: wined3d.h:1974
DWORD NumSimultaneousRTs
Definition: wined3d.h:1989
DWORD AlphaCmpCaps
Definition: wined3d.h:1933
DWORD DestBlendCaps
Definition: wined3d.h:1932
DWORD RasterCaps
Definition: wined3d.h:1929
DWORD DevCaps2
Definition: wined3d.h:1984
struct wined3d_pixel_shader_caps PS20Caps
Definition: wined3d.h:1992
float MaxVertexW
Definition: wined3d.h:1949
float MaxPointSize
Definition: wined3d.h:1970
DWORD Caps2
Definition: wined3d.h:1923
DWORD MaxPrimitiveCount
Definition: wined3d.h:1972
DWORD VertexShaderVersion
Definition: wined3d.h:1977
enum wined3d_device_type DeviceType
Definition: wined3d.h:1920
DWORD MaxTextureWidth
Definition: wined3d.h:1943
DWORD LineCaps
Definition: wined3d.h:1941
DWORD MaxUserClipPlanes
Definition: wined3d.h:1966
DWORD VertexTextureFilterCaps
Definition: wined3d.h:1993
DWORD PixelShaderVersion
Definition: wined3d.h:1980
float GuardBandBottom
Definition: wined3d.h:1954
float GuardBandRight
Definition: wined3d.h:1953
DWORD MaxVertexIndex
Definition: wined3d.h:1973
DWORD CubeTextureFilterCaps
Definition: wined3d.h:1937
DWORD MaxTextureAspectRatio
Definition: wined3d.h:1947
DWORD MaxStreamStride
Definition: wined3d.h:1975
DWORD MaxSimultaneousTextures
Definition: wined3d.h:1962
DWORD MaxActiveLights
Definition: wined3d.h:1965
DWORD StencilCaps
Definition: wined3d.h:1957
DWORD SrcBlendCaps
Definition: wined3d.h:1931
DWORD DeclTypes
Definition: wined3d.h:1988
DWORD TextureFilterCaps
Definition: wined3d.h:1936
DWORD MaxVertexShaderConst
Definition: wined3d.h:1978
DWORD MaxVShaderInstructionsExecuted
Definition: wined3d.h:1994
#define D3D9_MAX_VERTEX_SHADER_CONSTANTF
Definition: d3d9_private.h:40
unsigned int CDECL wined3d_adapter_get_output_count(const struct wined3d_adapter *adapter)
Definition: directx.c:1038
struct wined3d_adapter *CDECL wined3d_output_get_adapter(const struct wined3d_output *output)
Definition: directx.c:1508
HRESULT CDECL wined3d_output_get_desc(const struct wined3d_output *output, struct wined3d_output_desc *desc)
Definition: directx.c:1256
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539

Referenced by d3d9_device_GetDeviceCaps(), d3d9_GetDeviceCaps(), and device_init().

◆ d3d9_init()

BOOL d3d9_init ( struct d3d9 *  d3d9,
BOOL  extended,
BOOL  d3d9on12 
)

Definition at line 686 of file directx.c.

687{
692 unsigned int adapter_idx, output_idx, adapter_count, output_count = 0;
694
695 if (extended)
697
699 d3d9->refcount = 1;
700
703 if (!d3d9->wined3d)
704 {
706 return FALSE;
707 }
708
710 for (adapter_idx = 0; adapter_idx < adapter_count; ++adapter_idx)
711 {
714 }
715
717 if (!d3d9->wined3d_outputs)
718 {
721 return FALSE;
722 }
723
725 for (adapter_idx = 0; adapter_idx < adapter_count; ++adapter_idx)
726 {
729 for (output_idx = 0; output_idx < output_count; ++output_idx)
730 {
734 }
735 }
736
738 d3d9->extended = extended;
739 d3d9->d3d9on12 = d3d9on12;
740
741 return TRUE;
742}
static const struct IDirect3D9ExVtbl d3d9_vtbl
Definition: directx.c:657
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
GLbitfield flags
Definition: glext.h:7161
static int adapter_count
Definition: monitor.c:148
#define calloc
Definition: rosglue.h:14
struct wined3d * wined3d
Definition: d3d9_private.h:65
BOOL d3d9on12
Definition: d3d9_private.h:69
LONG refcount
Definition: d3d9_private.h:64
unsigned int wined3d_output_count
Definition: d3d9_private.h:67
BOOL extended
Definition: d3d9_private.h:68
IDirect3D9Ex IDirect3D9Ex_iface
Definition: d3d9_private.h:63
ULONG CDECL wined3d_decref(struct wined3d *wined3d)
Definition: directx.c:198
UINT CDECL wined3d_get_adapter_count(const struct wined3d *wined3d)
Definition: directx.c:1019
struct wined3d_adapter *CDECL wined3d_get_adapter(const struct wined3d *wined3d, unsigned int idx)
Definition: directx.c:1009
struct wined3d_output *CDECL wined3d_adapter_get_output(const struct wined3d_adapter *adapter, unsigned int idx)
Definition: directx.c:1027
#define WINED3D_RESTORE_MODE_ON_ACTIVATE
Definition: wined3d.h:1325
#define WINED3D_NORMALIZED_DEPTH_BIAS
Definition: wined3d.h:1334
#define WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR
Definition: wined3d.h:1331
#define WINED3D_HANDLE_RESTORE
Definition: wined3d.h:1327
#define WINED3D_NO_PRIMITIVE_RESTART
Definition: wined3d.h:1332
#define WINED3D_PRESENT_CONVERSION
Definition: wined3d.h:1324
#define WINED3D_NO_DRAW_INDIRECT
Definition: wined3d.h:1335
#define WINED3D_PIXEL_CENTER_INTEGER
Definition: wined3d.h:1328
#define WINED3D_SRGB_READ_WRITE_CONTROL
Definition: wined3d.h:1330
#define WINED3D_LEGACY_CUBEMAP_FILTERING
Definition: wined3d.h:1333
struct wined3d *CDECL wined3d_create(uint32_t flags)
Definition: wined3d_main.c:142

Referenced by Direct3DCreate9(), Direct3DCreate9Ex(), and Direct3DCreate9On12().

◆ d3d9_resource_cleanup()

void d3d9_resource_cleanup ( struct d3d9_resource *  resource)

◆ d3d9_resource_free_private_data()

HRESULT d3d9_resource_free_private_data ( struct d3d9_resource *  resource,
const GUID *  guid 
)

Definition at line 289 of file d3d9_main.c.

290{
292
295 if (!entry)
296 {
298 return D3DERR_NOTFOUND;
299 }
300
303
304 return D3D_OK;
305}
#define D3D_OK
Definition: d3d.h:106
GUID guid
Definition: version.c:147
uint32_t entry
Definition: isohybrid.c:63
#define D3DERR_NOTFOUND
Definition: d3d8.h:76
static struct wined3d_private_data * wined3d_private_store_get_private_data(const struct wined3d_private_store *store, const GUID *tag)
Definition: wined3d.h:2612
static void wined3d_private_store_free_private_data(struct wined3d_private_store *store, struct wined3d_private_data *entry)
Definition: wined3d.h:2627

Referenced by d3d9_indexbuffer_FreePrivateData(), d3d9_surface_FreePrivateData(), d3d9_texture_2d_FreePrivateData(), d3d9_texture_3d_FreePrivateData(), d3d9_texture_cube_FreePrivateData(), d3d9_vertexbuffer_FreePrivateData(), and d3d9_volume_FreePrivateData().

◆ d3d9_resource_get_private_data()

HRESULT d3d9_resource_get_private_data ( struct d3d9_resource *  resource,
const GUID *  guid,
void *  data,
DWORD *  data_size 
)

Definition at line 307 of file d3d9_main.c.

309{
310 const struct wined3d_private_data *stored_data;
311 DWORD size_in;
312 HRESULT hr;
313
315 stored_data = wined3d_private_store_get_private_data(&resource->private_store, guid);
316 if (!stored_data)
317 {
319 goto done;
320 }
321
322 size_in = *data_size;
323 *data_size = stored_data->size;
324 if (!data)
325 {
326 hr = D3D_OK;
327 goto done;
328 }
329 if (size_in < stored_data->size)
330 {
332 goto done;
333 }
334
335 if (stored_data->flags & WINED3DSPD_IUNKNOWN)
336 IUnknown_AddRef(stored_data->content.object);
337 memcpy(data, stored_data->content.data, stored_data->size);
338 hr = D3D_OK;
339
340done:
342 return hr;
343}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizeiptr size
Definition: glext.h:5919
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define D3DERR_MOREDATA
Definition: d3d8.h:77
union wined3d_private_data::@4825 content
IUnknown * object
Definition: wined3d.h:2285
#define WINED3DSPD_IUNKNOWN
Definition: wined3d.h:1018

Referenced by d3d9_indexbuffer_GetPrivateData(), d3d9_surface_GetPrivateData(), d3d9_texture_2d_GetPrivateData(), d3d9_texture_3d_GetPrivateData(), d3d9_texture_cube_GetPrivateData(), d3d9_vertexbuffer_GetPrivateData(), and d3d9_volume_GetPrivateData().

◆ d3d9_resource_init()

void d3d9_resource_init ( struct d3d9_resource *  resource)

Definition at line 345 of file d3d9_main.c.

346{
347 resource->refcount = 1;
348 wined3d_private_store_init(&resource->private_store);
349}
static void wined3d_private_store_init(struct wined3d_private_store *store)
Definition: wined3d.h:2607

Referenced by d3d9_surface_create(), d3d9_texture_init(), indexbuffer_init(), vertexbuffer_init(), and volume_init().

◆ d3d9_resource_set_private_data()

HRESULT d3d9_resource_set_private_data ( struct d3d9_resource *  resource,
const GUID *  guid,
const void *  data,
DWORD  data_size,
DWORD  flags 
)

Definition at line 351 of file d3d9_main.c.

353{
354 HRESULT hr;
355
357 hr = wined3d_private_store_set_private_data(&resource->private_store, guid, data, data_size, flags);
359 return hr;
360}
static HRESULT wined3d_private_store_set_private_data(struct wined3d_private_store *store, const GUID *guid, const void *data, DWORD data_size, uint32_t flags)
Definition: wined3d.h:2648

Referenced by d3d9_indexbuffer_SetPrivateData(), d3d9_surface_SetPrivateData(), d3d9_texture_2d_SetPrivateData(), d3d9_texture_3d_SetPrivateData(), d3d9_texture_cube_SetPrivateData(), d3d9_vertexbuffer_SetPrivateData(), and d3d9_volume_SetPrivateData().

◆ d3d9_surface_acquire_rendertarget_view()

struct wined3d_rendertarget_view * d3d9_surface_acquire_rendertarget_view ( struct d3d9_surface *  surface)

Definition at line 417 of file surface.c.

418{
419 HRESULT hr;
420
421 /* The surface reference count can be equal to 0 when this function is
422 * called. In order to properly manage the render target view reference
423 * count, we temporarily increment the surface reference count. */
425
426 if (surface->wined3d_rtv)
427 return surface->wined3d_rtv;
428
430 surface->sub_resource_idx, surface, &d3d9_view_wined3d_parent_ops, &surface->wined3d_rtv)))
431 {
432 ERR("Failed to create rendertarget view, hr %#lx.\n", hr);
434 return NULL;
435 }
436
437 if (surface->texture)
438 list_add_head(&surface->texture->rtv_list, &surface->rtv_entry);
439
440 return surface->wined3d_rtv;
441}
static void list_add_head(struct list_entry *head, struct list_entry *entry)
Definition: list.h:76
#define NULL
Definition: types.h:112
static const struct wined3d_parent_ops d3d9_view_wined3d_parent_ops
Definition: surface.c:405
static ULONG WINAPI d3d9_surface_AddRef(IDirect3DSurface9 *iface)
Definition: surface.c:50
static ULONG WINAPI d3d9_surface_Release(IDirect3DSurface9 *iface)
Definition: surface.c:80
HRESULT CDECL wined3d_rendertarget_view_create_from_sub_resource(struct wined3d_texture *texture, unsigned int sub_resource_idx, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_rendertarget_view **view)
Definition: view.c:946
struct wined3d_texture * wined3d_texture
Definition: d3d9_private.h:172
struct list rtv_entry
Definition: d3d9_private.h:174
IDirect3DSurface9 IDirect3DSurface9_iface
Definition: d3d9_private.h:170
struct wined3d_rendertarget_view * wined3d_rtv
Definition: d3d9_private.h:175
struct d3d9_texture * texture
Definition: d3d9_private.h:178
unsigned int sub_resource_idx
Definition: d3d9_private.h:173

Referenced by d3d9_device_ColorFill(), d3d9_device_SetDepthStencilSurface(), and d3d9_device_SetRenderTarget().

◆ d3d9_surface_create()

struct d3d9_surface * d3d9_surface_create ( struct wined3d_texture *  wined3d_texture,
unsigned int  sub_resource_idx,
IUnknown *  container 
)

Definition at line 356 of file surface.c.

358{
359 IDirect3DBaseTexture9 *texture;
360 struct d3d9_surface *surface;
361
362 if (!(surface = calloc(1, sizeof(*surface))))
363 return NULL;
364
366 d3d9_resource_init(&surface->resource);
367 surface->resource.refcount = 0;
368 list_init(&surface->rtv_entry);
369 surface->container = container;
373
374 if (surface->container && SUCCEEDED(IUnknown_QueryInterface(surface->container,
375 &IID_IDirect3DBaseTexture9, (void **)&texture)))
376 {
379 }
380
383
384 TRACE("Created surface %p.\n", surface);
385 return surface;
386}
static void list_init(struct list_entry *head)
Definition: list.h:51
#define IDirect3DBaseTexture9_Release(p)
Definition: d3d9.h:663
void d3d9_resource_init(struct d3d9_resource *resource)
Definition: d3d9_main.c:345
static const struct IDirect3DSurface9Vtbl d3d9_surface_vtbl
Definition: surface.c:320
static const struct wined3d_parent_ops d3d9_surface_wined3d_parent_ops
Definition: surface.c:351
struct wined3d_swapchain *CDECL wined3d_texture_get_swapchain(struct wined3d_texture *texture)
Definition: texture.c:4028
void CDECL wined3d_texture_set_sub_resource_parent(struct wined3d_texture *texture, unsigned int sub_resource_idx, void *parent, const struct wined3d_parent_ops *parent_ops)
Definition: texture.c:4043
GLenum GLuint texture
Definition: glext.h:6295
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define TRACE(s)
Definition: solgame.cpp:4
IUnknown * container
Definition: d3d9_private.h:177
struct wined3d_swapchain * swapchain
Definition: d3d9_private.h:179
struct d3d9_resource resource
Definition: d3d9_private.h:171
struct d3d9_texture * unsafe_impl_from_IDirect3DBaseTexture9(IDirect3DBaseTexture9 *iface)
Definition: texture.c:1204

Referenced by d3d9_device_create_surface(), d3d9_device_CreateCubeTexture(), d3d9_device_CreateTexture(), d3d9_device_reset(), and d3d9_swapchain_create().

◆ d3d9_surface_get_device()

struct d3d9_device * d3d9_surface_get_device ( const struct d3d9_surface *  surface)

Definition at line 410 of file surface.c.

411{
413 device = surface->texture ? &surface->texture->parent_device->IDirect3DDevice9Ex_iface : surface->parent_device;
415}
DWORD IDirect3DDevice9Ex
Definition: dxvahd.idl:22
IDirect3DDevice9Ex * parent_device
Definition: d3d9_private.h:176
Definition: devices.h:37
static struct d3d9_device * impl_from_IDirect3DDevice9Ex(IDirect3DDevice9Ex *iface)
Definition: d3d9_private.h:310

Referenced by d3d9_device_SetRenderTarget().

◆ d3d9_surface_release_rendertarget_view()

void d3d9_surface_release_rendertarget_view ( struct d3d9_surface *  surface,
struct wined3d_rendertarget_view *  rtv 
)

Definition at line 443 of file surface.c.

445{
446 if (rtv)
448}

Referenced by d3d9_device_ColorFill(), d3d9_device_SetDepthStencilSurface(), and d3d9_device_SetRenderTarget().

◆ d3d9_swapchain_create()

HRESULT d3d9_swapchain_create ( struct d3d9_device *  device,
struct wined3d_swapchain_desc *  desc,
unsigned int  swap_interval,
struct d3d9_swapchain **  swapchain 
)

Definition at line 399 of file swapchain.c.

401{
402 struct wined3d_rendertarget_view *wined3d_dsv;
403 struct d3d9_swapchain *object;
404 struct d3d9_surface *surface;
405 unsigned int i;
406 HRESULT hr;
407
408 if (!(object = calloc(1, sizeof(*object))))
409 return E_OUTOFMEMORY;
410
411 if (FAILED(hr = swapchain_init(object, device, desc, swap_interval)))
412 {
413 WARN("Failed to initialize swapchain, hr %#lx.\n", hr);
414 free(object);
415 return hr;
416 }
417
418 for (i = 0; i < desc->backbuffer_count; ++i)
419 {
420 if (!(surface = d3d9_surface_create(wined3d_swapchain_get_back_buffer(object->wined3d_swapchain, i), 0,
421 (IUnknown *)&object->IDirect3DSwapChain9Ex_iface)))
422 {
423 IDirect3DSwapChain9Ex_Release(&object->IDirect3DSwapChain9Ex_iface);
424 return E_OUTOFMEMORY;
425 }
426 surface->parent_device = &device->IDirect3DDevice9Ex_iface;
427 }
428
429 if ((desc->flags & WINED3D_SWAPCHAIN_IMPLICIT)
430 && (wined3d_dsv = wined3d_device_context_get_depth_stencil_view(device->immediate_context)))
431 {
433
435 (IUnknown *)&device->IDirect3DDevice9Ex_iface)))
436 {
437 IDirect3DSwapChain9Ex_Release(&object->IDirect3DSwapChain9Ex_iface);
438 return E_OUTOFMEMORY;
439 }
440 surface->parent_device = &device->IDirect3DDevice9Ex_iface;
441 }
442
443 TRACE("Created swapchain %p.\n", object);
444 *swapchain = object;
445
446 return D3D_OK;
447}
#define WARN(fmt,...)
Definition: precomp.h:61
static HRESULT swapchain_init(struct d3d8_swapchain *swapchain, struct d3d8_device *device, struct wined3d_swapchain_desc *desc, unsigned int swap_interval)
Definition: swapchain.c:170
#define IDirect3DSwapChain9Ex_Release(p)
Definition: d3d9.h:1717
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
struct wined3d_rendertarget_view *CDECL wined3d_device_context_get_depth_stencil_view(const struct wined3d_device_context *context)
Definition: device.c:4676
struct wined3d_texture *__cdecl wined3d_texture_from_resource(struct wined3d_resource *resource)
Definition: texture.c:3343
struct wined3d_resource *CDECL wined3d_rendertarget_view_get_resource(const struct wined3d_rendertarget_view *view)
Definition: view.c:430
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
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
struct d3d9_surface * d3d9_surface_create(struct wined3d_texture *wined3d_texture, unsigned int sub_resource_idx, IUnknown *container)
Definition: surface.c:356
struct wined3d_texture *CDECL wined3d_swapchain_get_back_buffer(const struct wined3d_swapchain *swapchain, UINT back_buffer_idx)
Definition: swapchain.c:256
#define WINED3D_SWAPCHAIN_IMPLICIT
Definition: wined3d.h:901

Referenced by d3d9_device_CreateAdditionalSwapChain(), and device_init().

◆ d3d9_texture_2d_init()

HRESULT d3d9_texture_2d_init ( struct d3d9_texture *  texture,
struct d3d9_device *  device,
unsigned int  width,
unsigned int  height,
unsigned int  level_count,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool 
)

Definition at line 1356 of file texture.c.

1358{
1360
1361 desc.resource_type = WINED3D_RTYPE_TEXTURE_2D;
1363 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1364 desc.multisample_quality = 0;
1368 desc.width = width;
1369 desc.height = height;
1370 desc.depth = 1;
1371 desc.size = 0;
1372
1373 if (!device->d3d_parent->extended)
1375
1376 texture->IDirect3DBaseTexture9_iface.lpVtbl = (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_2d_vtbl;
1377 return d3d9_texture_init(texture, device, &desc, pool, usage, 1, level_count);
1378}
static unsigned int wined3d_usage_from_d3d(D3DPOOL pool, DWORD usage)
Definition: d3d8_private.h:365
static unsigned int wined3daccess_from_d3dpool(D3DPOOL pool, unsigned int usage)
Definition: d3d8_private.h:341
enum wined3d_format_id wined3dformat_from_d3dformat(D3DFORMAT format)
Definition: device.c:84
static const IDirect3DTexture9Vtbl d3d9_texture_2d_vtbl
Definition: texture.c:457
static HRESULT d3d9_texture_init(struct d3d9_texture *texture, struct d3d9_device *device, const struct wined3d_resource_desc *desc, D3DPOOL pool, DWORD usage, unsigned int layer_count, unsigned int level_count)
Definition: texture.c:1236
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
static unsigned int wined3d_bind_flags_from_d3d9_usage(DWORD usage)
Definition: d3d9_private.h:395
@ WINED3D_MULTISAMPLE_NONE
Definition: wined3d.h:573
@ WINED3D_RTYPE_TEXTURE_2D
Definition: wined3d.h:720
#define WINED3D_BIND_SHADER_RESOURCE
Definition: wined3d.h:912
#define WINED3DUSAGE_VIDMEM_ACCOUNTING
Definition: wined3d.h:939

Referenced by d3d9_device_CreateTexture().

◆ d3d9_texture_3d_init()

HRESULT d3d9_texture_3d_init ( struct d3d9_texture *  texture,
struct d3d9_device *  device,
unsigned int  width,
unsigned int  height,
unsigned int  depth,
unsigned int  level_count,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool 
)

Definition at line 1404 of file texture.c.

1406{
1408
1409 /* In d3d9, 3D textures can't be used as rendertarget or depth/stencil buffer. */
1411 return D3DERR_INVALIDCALL;
1412
1413 desc.resource_type = WINED3D_RTYPE_TEXTURE_3D;
1415 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1416 desc.multisample_quality = 0;
1420 desc.width = width;
1421 desc.height = height;
1422 desc.depth = depth;
1423 desc.size = 0;
1424
1425 if (!device->d3d_parent->extended)
1427
1428 texture->IDirect3DBaseTexture9_iface.lpVtbl = (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_3d_vtbl;
1429 return d3d9_texture_init(texture, device, &desc, pool, usage, 1, level_count);
1430}
#define D3DERR_INVALIDCALL
Definition: d3d10_private.h:42
#define D3DUSAGE_RENDERTARGET
Definition: d3d8types.h:91
#define D3DUSAGE_DEPTHSTENCIL
Definition: d3d8types.h:92
static const IDirect3DVolumeTexture9Vtbl d3d9_texture_3d_vtbl
Definition: texture.c:1174
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
@ WINED3D_RTYPE_TEXTURE_3D
Definition: wined3d.h:721

Referenced by d3d9_device_CreateVolumeTexture().

◆ d3d9_texture_cube_init()

HRESULT d3d9_texture_cube_init ( struct d3d9_texture *  texture,
struct d3d9_device *  device,
unsigned int  edge_length,
unsigned int  level_count,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool 
)

Definition at line 1380 of file texture.c.

1382{
1384
1385 desc.resource_type = WINED3D_RTYPE_TEXTURE_2D;
1387 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1388 desc.multisample_quality = 0;
1392 desc.width = edge_length;
1393 desc.height = edge_length;
1394 desc.depth = 1;
1395 desc.size = 0;
1396
1397 if (!device->d3d_parent->extended)
1399
1400 texture->IDirect3DBaseTexture9_iface.lpVtbl = (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_cube_vtbl;
1401 return d3d9_texture_init(texture, device, &desc, pool, usage, 6, level_count);
1402}
static const IDirect3DCubeTexture9Vtbl d3d9_texture_cube_vtbl
Definition: texture.c:858
#define WINED3DUSAGE_LEGACY_CUBEMAP
Definition: wined3d.h:934

Referenced by d3d9_device_CreateCubeTexture().

◆ d3d9_texture_flag_auto_gen_mipmap()

void d3d9_texture_flag_auto_gen_mipmap ( struct d3d9_texture *  texture)

◆ d3d9_texture_gen_auto_mipmap()

void d3d9_texture_gen_auto_mipmap ( struct d3d9_texture *  texture)

Definition at line 94 of file texture.c.

95{
96 if (!(texture->flags & D3D9_TEXTURE_MIPMAP_DIRTY))
97 return;
98 if (texture->draw_texture)
99 wined3d_device_update_texture(texture->parent_device->wined3d_device,
100 texture->wined3d_texture, texture->draw_texture);
101 wined3d_device_context_generate_mipmaps(texture->parent_device->immediate_context,
103 texture->flags &= ~D3D9_TEXTURE_MIPMAP_DIRTY;
104}
void CDECL wined3d_device_context_generate_mipmaps(struct wined3d_device_context *context, struct wined3d_shader_resource_view *view)
Definition: device.c:4684
HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture)
Definition: device.c:3808
struct wined3d_shader_resource_view *CDECL wined3d_texture_acquire_identity_srv(struct wined3d_texture *texture)
Definition: texture.c:4476
static struct wined3d_texture * d3d9_texture_get_draw_texture(struct d3d9_texture *texture)
Definition: d3d9_private.h:238

Referenced by d3d9_generate_auto_mipmaps(), d3d9_texture_2d_GenerateMipSubLevels(), and d3d9_texture_cube_GenerateMipSubLevels().

◆ d3d9_texture_get_draw_texture()

◆ d3d9_vertex_declaration_create()

HRESULT d3d9_vertex_declaration_create ( struct d3d9_device *  device,
const D3DVERTEXELEMENT9 *  elements,
struct d3d9_vertex_declaration **  declaration 
)

Definition at line 416 of file vertexdeclaration.c.

418{
420 HRESULT hr;
421
422 if (!(object = calloc(1, sizeof(*object))))
423 return E_OUTOFMEMORY;
424
426 if (FAILED(hr))
427 {
428 WARN("Failed to initialize vertex declaration, hr %#lx.\n", hr);
429 free(object);
430 return hr;
431 }
432
433 TRACE("Created vertex declaration %p.\n", object);
435
436 return D3D_OK;
437}
static HRESULT vertexdeclaration_init(struct d3d9_vertex_declaration *declaration, struct d3d9_device *device, const D3DVERTEXELEMENT9 *elements)
D3DVERTEXELEMENT9 * elements
Definition: d3d9_private.h:262

Referenced by d3d9_device_CreateVertexDeclaration(), and device_get_fvf_declaration().

◆ d3dformat_from_wined3dformat()

D3DFORMAT d3dformat_from_wined3dformat ( enum wined3d_format_id  format)

Definition at line 33 of file device.c.

34{
35 BYTE *c = (BYTE *)&format;
36
37 /* Don't translate FOURCC formats */
38 if (isprint(c[0]) && isprint(c[1]) && isprint(c[2]) && isprint(c[3]))
39 return (D3DFORMAT)format;
40
41 switch(format)
42 {
52 case WINED3DFMT_A8_UNORM: return D3DFMT_A8;
58 case WINED3DFMT_P8_UINT: return D3DFMT_P8;
59 case WINED3DFMT_L8_UNORM: return D3DFMT_L8;
78 default:
79 FIXME("Unhandled wined3d format %#x.\n", format);
80 return D3DFMT_UNKNOWN;
81 }
82}
#define isprint(c)
Definition: acclib.h:73
#define FIXME(fmt,...)
Definition: precomp.h:53
@ D3DFMT_L6V5U5
Definition: d3d8types.h:625
@ D3DFMT_A1R5G5B5
Definition: d3d8types.h:608
@ D3DFMT_A8P8
Definition: d3d8types.h:617
@ D3DFMT_D16
Definition: d3d8types.h:644
@ D3DFMT_X1R5G5B5
Definition: d3d8types.h:607
@ D3DFMT_W11V11U10
Definition: d3d8types.h:629
@ D3DFMT_D16_LOCKABLE
Definition: d3d8types.h:640
@ D3DFMT_R8G8B8
Definition: d3d8types.h:603
@ D3DFMT_R3G3B2
Definition: d3d8types.h:610
@ D3DFMT_A8L8
Definition: d3d8types.h:621
@ D3DFMT_V16U16
Definition: d3d8types.h:628
@ D3DFMT_A8R8G8B8
Definition: d3d8types.h:604
@ D3DFMT_A2B10G10R10
Definition: d3d8types.h:614
@ D3DFMT_X8L8V8U8
Definition: d3d8types.h:626
@ D3DFMT_INDEX16
Definition: d3d8types.h:649
@ D3DFMT_A8
Definition: d3d8types.h:611
@ D3DFMT_X4R4G4B4
Definition: d3d8types.h:613
@ D3DFMT_R5G6B5
Definition: d3d8types.h:606
@ D3DFMT_A8R3G3B2
Definition: d3d8types.h:612
@ D3DFMT_V8U8
Definition: d3d8types.h:624
@ D3DFMT_A4R4G4B4
Definition: d3d8types.h:609
@ D3DFMT_D24S8
Definition: d3d8types.h:643
@ D3DFMT_D32
Definition: d3d8types.h:641
@ D3DFMT_D24X8
Definition: d3d8types.h:645
@ D3DFMT_P8
Definition: d3d8types.h:618
@ D3DFMT_INDEX32
Definition: d3d8types.h:650
@ D3DFMT_UNKNOWN
Definition: d3d8types.h:601
@ D3DFMT_X8R8G8B8
Definition: d3d8types.h:605
@ D3DFMT_L8
Definition: d3d8types.h:620
@ D3DFMT_G16R16
Definition: d3d8types.h:615
@ D3DFMT_A2W10V10U10
Definition: d3d8types.h:630
@ D3DFMT_Q8W8V8U8
Definition: d3d8types.h:627
@ D3DFMT_D15S1
Definition: d3d8types.h:642
@ D3DFMT_D24X4S4
Definition: d3d8types.h:646
@ D3DFMT_A4L4
Definition: d3d8types.h:622
enum _D3DFORMAT D3DFORMAT
const GLubyte * c
Definition: glext.h:8905
@ WINED3DFMT_B2G3R3_UNORM
Definition: wined3d.h:131
@ WINED3DFMT_B4G4R4A4_UNORM
Definition: wined3d.h:130
@ WINED3DFMT_R16G16_UNORM
Definition: wined3d.h:192
@ WINED3DFMT_X8D24_UNORM
Definition: wined3d.h:151
@ WINED3DFMT_R10G10B10A2_UNORM
Definition: wined3d.h:179
@ WINED3DFMT_R16G16_SNORM
Definition: wined3d.h:194
@ WINED3DFMT_B8G8R8A8_UNORM
Definition: wined3d.h:244
@ WINED3DFMT_R8G8B8A8_SNORM
Definition: wined3d.h:188
@ WINED3DFMT_D16_LOCKABLE
Definition: wined3d.h:148
@ WINED3DFMT_R10G11B11_SNORM
Definition: wined3d.h:143
@ WINED3DFMT_S1_UINT_D15_UNORM
Definition: wined3d.h:150
@ WINED3DFMT_B2G3R3A8_UNORM
Definition: wined3d.h:132
@ WINED3DFMT_L8A8_UNORM
Definition: wined3d.h:139
@ WINED3DFMT_L4A4_UNORM
Definition: wined3d.h:140
@ WINED3DFMT_B8G8R8X8_UNORM
Definition: wined3d.h:245
@ WINED3DFMT_B5G5R5X1_UNORM
Definition: wined3d.h:129
@ WINED3DFMT_D16_UNORM
Definition: wined3d.h:212
@ WINED3DFMT_L8_UNORM
Definition: wined3d.h:138
@ WINED3DFMT_R8G8_SNORM
Definition: wined3d.h:208
@ WINED3DFMT_UNKNOWN
Definition: wined3d.h:127
@ WINED3DFMT_R5G5_SNORM_L6_UNORM
Definition: wined3d.h:141
@ WINED3DFMT_B8G8R8_UNORM
Definition: wined3d.h:128
@ WINED3DFMT_R32_UINT
Definition: wined3d.h:199
@ WINED3DFMT_B5G5R5A1_UNORM
Definition: wined3d.h:243
@ WINED3DFMT_R10G10B10_SNORM_A2_UNORM
Definition: wined3d.h:147
@ WINED3DFMT_D32_UNORM
Definition: wined3d.h:149
@ WINED3DFMT_R8G8_SNORM_L8X8_UNORM
Definition: wined3d.h:142
@ WINED3DFMT_B5G6R5_UNORM
Definition: wined3d.h:242
@ WINED3DFMT_S4X4_UINT_D24_UNORM
Definition: wined3d.h:152
@ WINED3DFMT_P8_UINT
Definition: wined3d.h:137
@ WINED3DFMT_R16_UINT
Definition: wined3d.h:214
@ WINED3DFMT_A8_UNORM
Definition: wined3d.h:222
@ WINED3DFMT_B4G4R4X4_UNORM
Definition: wined3d.h:133
@ WINED3DFMT_D24_UNORM_S8_UINT
Definition: wined3d.h:202
@ WINED3DFMT_P8_UINT_A8_UNORM
Definition: wined3d.h:136
unsigned char BYTE
Definition: xxhash.c:193

Referenced by d3d8_device_GetDisplayMode(), d3d9_device_GetDisplayMode(), d3d9_device_GetDisplayModeEx(), d3d9_device_reset(), d3d9_device_UpdateSurface(), and present_parameters_from_wined3d_swapchain_desc().

◆ d3dmultisample_type_from_wined3d()

static D3DMULTISAMPLE_TYPE d3dmultisample_type_from_wined3d ( enum wined3d_multisample_type  type)
inlinestatic

Definition at line 344 of file d3d9_private.h.

345{
347}
enum _D3DMULTISAMPLE_TYPE D3DMULTISAMPLE_TYPE
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545

◆ d3dpool_from_wined3daccess()

static D3DPOOL d3dpool_from_wined3daccess ( unsigned int  access,
unsigned int  usage 
)
inlinestatic

Definition at line 325 of file d3d9_private.h.

326{
328 return D3DPOOL_MANAGED;
329
331 {
332 default:
334 return D3DPOOL_DEFAULT;
337 return D3DPOOL_SCRATCH;
338 return D3DPOOL_SYSTEMMEM;
340 return D3DPOOL_MANAGED;
341 }
342}
@ D3DPOOL_SCRATCH
Definition: d3d8types.h:712
@ D3DPOOL_DEFAULT
Definition: d3d8types.h:709
@ D3DPOOL_SYSTEMMEM
Definition: d3d8types.h:711
@ D3DPOOL_MANAGED
Definition: d3d8types.h:710
GLuint GLint GLboolean GLint GLenum access
Definition: glext.h:7866
#define WINED3D_RESOURCE_ACCESS_GPU
Definition: wined3d.h:51
#define WINED3D_RESOURCE_ACCESS_CPU
Definition: wined3d.h:52
#define WINED3DUSAGE_MANAGED
Definition: wined3d.h:938
#define WINED3DUSAGE_SCRATCH
Definition: wined3d.h:932

◆ d3dscanlineordering_from_wined3d()

static D3DSCANLINEORDERING d3dscanlineordering_from_wined3d ( enum wined3d_scanline_ordering  ordering)
inlinestatic

Definition at line 349 of file d3d9_private.h.

350{
352}
D3DSCANLINEORDERING
Definition: d3d9types.h:1564
static enum @1153 ordering

Referenced by d3d9_device_GetDisplayModeEx(), d3d9_EnumAdapterModesEx(), d3d9_GetAdapterDisplayModeEx(), and d3d9_swapchain_GetDisplayModeEx().

◆ d3dusage_from_wined3dusage()

static DWORD d3dusage_from_wined3dusage ( unsigned int  wined3d_usage,
unsigned int  bind_flags 
)
inlinestatic

Definition at line 315 of file d3d9_private.h.

316{
317 DWORD usage = wined3d_usage & WINED3DUSAGE_MASK;
318 if (bind_flags & WINED3D_BIND_RENDER_TARGET)
320 if (bind_flags & WINED3D_BIND_DEPTH_STENCIL)
322 return usage;
323}
#define WINED3DUSAGE_MASK
Definition: wined3d.h:930
#define WINED3D_BIND_DEPTH_STENCIL
Definition: wined3d.h:915
#define WINED3D_BIND_RENDER_TARGET
Definition: wined3d.h:914

◆ device_init()

HRESULT device_init ( struct d3d9_device *  device,
struct d3d9 *  parent,
struct wined3d *  wined3d,
UINT  adapter,
D3DDEVTYPE  device_type,
HWND  focus_window,
DWORD  flags,
D3DPRESENT_PARAMETERS *  parameters,
D3DDISPLAYMODEEX *  mode 
)

Definition at line 4714 of file device.c.

4717{
4718 struct wined3d_swapchain_desc *swapchain_desc;
4720 struct d3d9_swapchain *d3d_swapchain;
4722 unsigned int output_idx;
4723 unsigned i, count = 1;
4724 D3DCAPS9 caps;
4725 HRESULT hr;
4726
4727 static const enum wined3d_feature_level feature_levels[] =
4728 {
4736 };
4737
4738 output_idx = adapter;
4739 if (output_idx >= parent->wined3d_output_count)
4740 return D3DERR_INVALIDCALL;
4741
4742 if (mode)
4743 FIXME("Ignoring display mode.\n");
4744
4745 device->IDirect3DDevice9Ex_iface.lpVtbl = &d3d9_device_vtbl;
4746 device->IDirect3DDevice9On12_iface.lpVtbl = &d3d9on12_vtbl;
4747 device->device_parent.ops = &d3d9_wined3d_device_parent_ops;
4748 device->adapter_ordinal = adapter;
4749 device->refcount = 1;
4750
4752
4754 wined3d_adapter = wined3d_output_get_adapter(parent->wined3d_outputs[output_idx]);
4756 focus_window, flags, 4, feature_levels, ARRAY_SIZE(feature_levels),
4757 &device->device_parent, &device->wined3d_device)))
4758 {
4759 WARN("Failed to create wined3d device, hr %#lx.\n", hr);
4761 return hr;
4762 }
4763
4764 device->immediate_context = wined3d_device_get_immediate_context(device->wined3d_device);
4767 device->max_user_clip_planes = caps.MaxUserClipPlanes;
4768 device->vs_uniform_count = caps.MaxVertexShaderConst;
4771
4772 if (FAILED(hr = wined3d_stateblock_create(device->wined3d_device, NULL, WINED3D_SBT_PRIMARY, &device->state)))
4773 {
4774 ERR("Failed to create the primary stateblock, hr %#lx.\n", hr);
4775 wined3d_device_decref(device->wined3d_device);
4777 return hr;
4778 }
4779 device->stateblock_state = wined3d_stateblock_get_state(device->state);
4780 device->update_state = device->state;
4781
4784
4787
4788 if (!parameters->Windowed)
4789 {
4790 if (!focus_window)
4791 focus_window = parameters->hDeviceWindow;
4792 if (FAILED(hr = wined3d_device_acquire_focus_window(device->wined3d_device, focus_window)))
4793 {
4794 ERR("Failed to acquire focus window, hr %#lx.\n", hr);
4795 wined3d_device_decref(device->wined3d_device);
4797 return hr;
4798 }
4799 }
4800
4801 if (!(swapchain_desc = malloc(sizeof(*swapchain_desc) * count)))
4802 {
4803 ERR("Failed to allocate wined3d parameters.\n");
4805 wined3d_device_decref(device->wined3d_device);
4807 return E_OUTOFMEMORY;
4808 }
4809
4810 for (i = 0; i < count; ++i)
4811 {
4812 if (!wined3d_swapchain_desc_from_d3d9(&swapchain_desc[i],
4813 parent->wined3d_outputs[output_idx + i], &parameters[i], parent->extended))
4814 {
4816 wined3d_device_decref(device->wined3d_device);
4817 free(swapchain_desc);
4819 return D3DERR_INVALIDCALL;
4820 }
4821 swapchain_desc[i].flags |= WINED3D_SWAPCHAIN_IMPLICIT;
4823 swapchain_desc[i].flags |= WINED3D_SWAPCHAIN_NO_WINDOW_CHANGES;
4824 }
4825
4826 if (FAILED(hr = d3d9_swapchain_create(device, swapchain_desc,
4827 wined3dswapinterval_from_d3d(parameters->PresentationInterval), &d3d_swapchain)))
4828 {
4829 WARN("Failed to create swapchain, hr %#lx.\n", hr);
4831 free(swapchain_desc);
4832 wined3d_device_decref(device->wined3d_device);
4834 return hr;
4835 }
4836
4839
4841 !!swapchain_desc->enable_auto_depth_stencil);
4843
4845 {
4848 wined3d_device_decref(device->wined3d_device);
4849 free(swapchain_desc);
4851 return E_OUTOFMEMORY;
4852 }
4853
4854 for (i = 0; i < count; ++i)
4855 {
4857 &swapchain_desc[i], parameters[i].PresentationInterval);
4858 }
4859
4861
4862 free(swapchain_desc);
4863
4864 /* We could also simply ignore the initial rendertarget since it's known
4865 * not to be a texture (we currently use these only for automatic mipmap
4866 * generation). */
4871
4872 IDirect3D9Ex_AddRef(&parent->IDirect3D9Ex_iface);
4873 device->d3d_parent = parent;
4874
4875 return D3D_OK;
4876}
#define ARRAY_SIZE(A)
Definition: main.h:20
static enum wined3d_device_type wined3d_device_type_from_d3d(D3DDEVTYPE type)
Definition: d3d8_private.h:392
#define D3DCREATE_NOWINDOWCHANGES
Definition: d3d9.h:47
#define D3DCREATE_ADAPTERGROUP_DEVICE
Definition: d3d9.h:45
#define IDirect3D9Ex_AddRef(p)
Definition: d3d9.h:1633
#define malloc
Definition: debug_ros.c:4
device_type
static enum wined3d_swap_interval wined3dswapinterval_from_d3d(DWORD interval)
Definition: device.c:239
static void device_reset_viewport_state(struct d3d8_device *device)
Definition: device.c:559
static void setup_fpu(void)
Definition: device.c:3650
static void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *present_parameters, const struct wined3d_swapchain_desc *swapchain_desc, DWORD presentation_interval)
Definition: device.c:202
static BOOL wined3d_swapchain_desc_from_d3d9(struct wined3d_swapchain_desc *swapchain_desc, struct wined3d_output *output, const D3DPRESENT_PARAMETERS *present_parameters, BOOL extended)
Definition: device.c:303
static const struct IDirect3DDevice9ExVtbl d3d9_device_vtbl
Definition: device.c:4488
void d3d9_caps_from_wined3dcaps(const struct d3d9 *d3d9, unsigned int adapter_ordinal, D3DCAPS9 *caps, const struct wined3d_caps *wined3d_caps)
Definition: device.c:369
static const struct wined3d_device_parent_ops d3d9_wined3d_device_parent_ops
Definition: device.c:4689
static const struct IDirect3DDevice9On12Vtbl d3d9on12_vtbl
Definition: device.c:642
static HRESULT d3d9_device_get_swapchains(struct d3d9_device *device)
Definition: device.c:1103
HRESULT CDECL wined3d_device_acquire_focus_window(struct wined3d_device *device, HWND window)
Definition: device.c:1133
ULONG CDECL wined3d_device_decref(struct wined3d_device *device)
Definition: device.c:251
struct wined3d_rendertarget_view *CDECL wined3d_device_context_get_rendertarget_view(const struct wined3d_device_context *context, unsigned int view_idx)
Definition: device.c:4659
void CDECL wined3d_device_set_multithreaded(struct wined3d_device *device)
Definition: device.c:1746
struct wined3d_device_context *CDECL wined3d_device_get_immediate_context(struct wined3d_device *device)
Definition: device.c:1969
void CDECL wined3d_device_release_focus_window(struct wined3d_device *device)
Definition: device.c:1154
void *CDECL wined3d_rendertarget_view_get_sub_resource_parent(const struct wined3d_rendertarget_view *view)
Definition: view.c:407
r parent
Definition: btrfs.c:3010
return adapter
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLenum mode
Definition: glext.h:6217
static D3D_DRIVER_TYPE HMODULE UINT const D3D_FEATURE_LEVEL * feature_levels
Definition: hlsl_d3d11.c:28
static BYTE parameters[]
Definition: asn.c:558
#define D3DCREATE_MULTITHREADED
Definition: d3d8.h:38
#define D3DCREATE_FPU_PRESERVE
Definition: d3d8.h:37
IDirect3DSwapChain9Ex IDirect3DSwapChain9Ex_iface
Definition: d3d9_private.h:157
struct wined3d_swapchain * wined3d_swapchain
Definition: d3d9_private.h:159
BOOL enable_auto_depth_stencil
Definition: wined3d.h:1782
HRESULT d3d9_swapchain_create(struct d3d9_device *device, struct wined3d_swapchain_desc *desc, unsigned int swap_interval, struct d3d9_swapchain **swapchain)
Definition: swapchain.c:399
HRESULT CDECL wined3d_get_device_caps(const struct wined3d_adapter *adapter, enum wined3d_device_type device_type, struct wined3d_caps *caps)
Definition: directx.c:2366
HRESULT CDECL wined3d_device_create(struct wined3d *wined3d, struct wined3d_adapter *adapter, enum wined3d_device_type device_type, HWND focus_window, uint32_t flags, BYTE surface_alignment, const enum wined3d_feature_level *feature_levels, unsigned int feature_level_count, struct wined3d_device_parent *device_parent, struct wined3d_device **device)
Definition: directx.c:2777
HRESULT CDECL wined3d_stateblock_create(struct wined3d_device *device, const struct wined3d_stateblock *device_state, enum wined3d_stateblock_type type, struct wined3d_stateblock **stateblock)
Definition: stateblock.c:2508
const struct wined3d_stateblock_state *CDECL wined3d_stateblock_get_state(const struct wined3d_stateblock *stateblock)
Definition: stateblock.c:2064
void CDECL wined3d_stateblock_set_render_state(struct wined3d_stateblock *stateblock, enum wined3d_render_state state, unsigned int value)
Definition: stateblock.c:1623
ULONG CDECL wined3d_swapchain_decref(struct wined3d_swapchain *swapchain)
Definition: swapchain.c:144
ULONG CDECL wined3d_swapchain_incref(struct wined3d_swapchain *swapchain)
Definition: swapchain.c:135
@ WINED3D_SBT_PRIMARY
Definition: wined3d.h:791
@ WINED3D_RS_ZENABLE
Definition: wined3d.h:293
#define WINED3D_BIND_VERTEX_BUFFER
Definition: wined3d.h:909
static void wined3d_streaming_buffer_init(struct wined3d_streaming_buffer *buffer, unsigned int bind_flags)
Definition: wined3d.h:2937
wined3d_feature_level
Definition: wined3d.h:98
@ WINED3D_FEATURE_LEVEL_8
Definition: wined3d.h:103
@ WINED3D_FEATURE_LEVEL_7
Definition: wined3d.h:102
@ WINED3D_FEATURE_LEVEL_6
Definition: wined3d.h:101
@ WINED3D_FEATURE_LEVEL_9_3
Definition: wined3d.h:106
@ WINED3D_FEATURE_LEVEL_5
Definition: wined3d.h:100
@ WINED3D_FEATURE_LEVEL_9_1
Definition: wined3d.h:104
@ WINED3D_FEATURE_LEVEL_9_2
Definition: wined3d.h:105
#define WINED3D_BIND_INDEX_BUFFER
Definition: wined3d.h:910
#define WINED3D_SWAPCHAIN_NO_WINDOW_CHANGES
Definition: wined3d.h:903

◆ impl_from_IDirect3DDevice9Ex()

static struct d3d9_device * impl_from_IDirect3DDevice9Ex ( IDirect3DDevice9Ex *  iface)
inlinestatic

Definition at line 310 of file d3d9_private.h.

311{
312 return CONTAINING_RECORD(iface, struct d3d9_device, IDirect3DDevice9Ex_iface);
313}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by d3d9_device_AddRef(), d3d9_device_BeginScene(), d3d9_device_BeginStateBlock(), d3d9_device_CheckDeviceState(), d3d9_device_Clear(), d3d9_device_ColorFill(), d3d9_device_CreateAdditionalSwapChain(), d3d9_device_CreateCubeTexture(), d3d9_device_CreateDepthStencilSurface(), d3d9_device_CreateDepthStencilSurfaceEx(), d3d9_device_CreateIndexBuffer(), d3d9_device_CreateOffscreenPlainSurface(), d3d9_device_CreatePixelShader(), d3d9_device_CreateQuery(), d3d9_device_CreateRenderTarget(), d3d9_device_CreateRenderTargetEx(), d3d9_device_CreateStateBlock(), d3d9_device_CreateTexture(), d3d9_device_CreateVertexBuffer(), d3d9_device_CreateVertexDeclaration(), d3d9_device_CreateVertexShader(), d3d9_device_CreateVolumeTexture(), d3d9_device_DrawIndexedPrimitive(), d3d9_device_DrawIndexedPrimitiveUP(), d3d9_device_DrawPrimitive(), d3d9_device_DrawPrimitiveUP(), d3d9_device_EndScene(), d3d9_device_EndStateBlock(), d3d9_device_EvictManagedResources(), d3d9_device_GetAvailableTextureMem(), d3d9_device_GetBackBuffer(), d3d9_device_GetClipPlane(), d3d9_device_GetClipStatus(), d3d9_device_GetCreationParameters(), d3d9_device_GetDepthStencilSurface(), d3d9_device_GetDeviceCaps(), d3d9_device_GetDirect3D(), d3d9_device_GetDisplayMode(), d3d9_device_GetDisplayModeEx(), d3d9_device_GetFrontBufferData(), d3d9_device_GetFVF(), d3d9_device_GetGammaRamp(), d3d9_device_GetIndices(), d3d9_device_GetLight(), d3d9_device_GetLightEnable(), d3d9_device_GetMaterial(), d3d9_device_GetMaximumFrameLatency(), d3d9_device_GetNPatchMode(), d3d9_device_GetNumberOfSwapChains(), d3d9_device_GetPixelShader(), d3d9_device_GetPixelShaderConstantB(), d3d9_device_GetPixelShaderConstantF(), d3d9_device_GetPixelShaderConstantI(), d3d9_device_GetRasterStatus(), d3d9_device_GetRenderState(), d3d9_device_GetRenderTarget(), d3d9_device_GetRenderTargetData(), d3d9_device_GetSamplerState(), d3d9_device_GetScissorRect(), d3d9_device_GetSoftwareVertexProcessing(), d3d9_device_GetStreamSource(), d3d9_device_GetStreamSourceFreq(), d3d9_device_GetSwapChain(), d3d9_device_GetTexture(), d3d9_device_GetTextureStageState(), d3d9_device_GetTransform(), d3d9_device_GetVertexDeclaration(), d3d9_device_GetVertexShader(), d3d9_device_GetVertexShaderConstantB(), d3d9_device_GetVertexShaderConstantF(), d3d9_device_GetVertexShaderConstantI(), d3d9_device_GetViewport(), d3d9_device_LightEnable(), d3d9_device_MultiplyTransform(), d3d9_device_Present(), d3d9_device_PresentEx(), d3d9_device_ProcessVertices(), d3d9_device_QueryInterface(), d3d9_device_Release(), d3d9_device_Reset(), d3d9_device_ResetEx(), d3d9_device_SetClipPlane(), d3d9_device_SetClipStatus(), d3d9_device_SetCursorPosition(), d3d9_device_SetCursorProperties(), d3d9_device_SetDepthStencilSurface(), d3d9_device_SetDialogBoxMode(), d3d9_device_SetFVF(), d3d9_device_SetGammaRamp(), d3d9_device_SetIndices(), d3d9_device_SetLight(), d3d9_device_SetMaterial(), d3d9_device_SetMaximumFrameLatency(), d3d9_device_SetNPatchMode(), d3d9_device_SetPixelShader(), d3d9_device_SetPixelShaderConstantB(), d3d9_device_SetPixelShaderConstantF(), d3d9_device_SetPixelShaderConstantI(), d3d9_device_SetRenderState(), d3d9_device_SetRenderTarget(), d3d9_device_SetSamplerState(), d3d9_device_SetScissorRect(), d3d9_device_SetSoftwareVertexProcessing(), d3d9_device_SetStreamSource(), d3d9_device_SetStreamSourceFreq(), d3d9_device_SetTexture(), d3d9_device_SetTextureStageState(), d3d9_device_SetTransform(), d3d9_device_SetVertexDeclaration(), d3d9_device_SetVertexShader(), d3d9_device_SetVertexShaderConstantB(), d3d9_device_SetVertexShaderConstantF(), d3d9_device_SetVertexShaderConstantI(), d3d9_device_SetViewport(), d3d9_device_ShowCursor(), d3d9_device_StretchRect(), d3d9_device_TestCooperativeLevel(), d3d9_device_UpdateSurface(), d3d9_device_UpdateTexture(), d3d9_device_ValidateDevice(), d3d9_stateblock_Apply(), d3d9_stateblock_Capture(), d3d9_surface_get_device(), d3d9_swapchain_Present(), and d3d9_swapchain_QueryInterface().

◆ indexbuffer_init()

HRESULT indexbuffer_init ( struct d3d9_indexbuffer *  buffer,
struct d3d9_device *  device,
UINT  size,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool 
)

Definition at line 597 of file buffer.c.

599{
601 HRESULT hr;
602
603 if (pool == D3DPOOL_SCRATCH)
604 return D3DERR_INVALIDCALL;
605
606 if (pool == D3DPOOL_MANAGED && device->d3d_parent->extended)
607 {
608 WARN("Managed resources are not supported by d3d9ex devices.\n");
609 return D3DERR_INVALIDCALL;
610 }
611
612 /* In d3d9, buffers can't be used as rendertarget or depth/stencil buffer. */
614 return D3DERR_INVALIDCALL;
615
616 desc.byte_width = size;
618 desc.bind_flags = 0;
620 /* Buffers are always readable. */
621 if (pool != D3DPOOL_DEFAULT)
623 desc.misc_flags = 0;
624 desc.structure_byte_stride = 0;
625
626 if (!device->d3d_parent->extended)
628
630 desc.bind_flags = WINED3D_BIND_INDEX_BUFFER;
631
632 buffer->IDirect3DIndexBuffer9_iface.lpVtbl = &d3d9_indexbuffer_vtbl;
634 buffer->usage = usage;
635 buffer->sysmem = !(desc.access & WINED3D_RESOURCE_ACCESS_GPU);
636 d3d9_resource_init(&buffer->resource);
637
639 hr = wined3d_buffer_create(device->wined3d_device, &desc, NULL, buffer,
642 if (FAILED(hr))
643 {
644 WARN("Failed to create wined3d buffer, hr %#lx.\n", hr);
645 return hr;
646 }
647
648 buffer->parent_device = &device->IDirect3DDevice9Ex_iface;
649 IDirect3DDevice9Ex_AddRef(buffer->parent_device);
650
651 return D3D_OK;
652}
static unsigned int map_access_from_usage(unsigned int usage)
Definition: d3d8_private.h:334
#define IDirect3DDevice9Ex_AddRef(p)
Definition: d3d9.h:1929
static const struct wined3d_parent_ops d3d9_indexbuffer_wined3d_parent_ops
Definition: buffer.c:592
static const IDirect3DIndexBuffer9Vtbl d3d9_indexbuffer_vtbl
Definition: buffer.c:563
HRESULT CDECL wined3d_buffer_create(struct wined3d_device *device, const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_buffer **buffer)
Definition: buffer.c:1329
GLuint buffer
Definition: glext.h:5915
#define WINED3D_RESOURCE_ACCESS_MAP_R
Definition: wined3d.h:53
#define WINED3DUSAGE_STATICDECL
Definition: wined3d.h:936
#define WINED3D_RESOURCE_ACCESS_MAP_W
Definition: wined3d.h:54

◆ is_gdi_compat_wined3dformat()

BOOL is_gdi_compat_wined3dformat ( enum wined3d_format_id  format)

Definition at line 1770 of file device.c.

1771{
1772 switch (format)
1773 {
1780 return TRUE;
1781 default:
1782 return FALSE;
1783 }
1784}

Referenced by d3d9_device_create_surface(), d3d9_texture_init(), and wined3d_swapchain_desc_from_d3d9().

◆ map_access_from_usage()

static unsigned int map_access_from_usage ( unsigned int  usage)
inlinestatic

Definition at line 354 of file d3d9_private.h.

Referenced by wined3daccess_from_d3dpool().

◆ pixelshader_init()

HRESULT pixelshader_init ( struct d3d9_pixelshader *  shader,
struct d3d9_device *  device,
const DWORD *  byte_code 
)

Definition at line 273 of file shader.c.

274{
276 HRESULT hr;
277
278 shader->refcount = 1;
279 shader->IDirect3DPixelShader9_iface.lpVtbl = &d3d9_pixelshader_vtbl;
280
281 desc.byte_code = byte_code;
282 desc.byte_code_size = ~(size_t)0;
283
285 hr = wined3d_shader_create_ps(device->wined3d_device, &desc, shader,
288 if (FAILED(hr))
289 {
290 WARN("Failed to created wined3d pixel shader, hr %#lx.\n", hr);
291 return hr;
292 }
293
294 shader->parent_device = &device->IDirect3DDevice9Ex_iface;
295 IDirect3DDevice9Ex_AddRef(shader->parent_device);
296
297 return D3D_OK;
298}
static const IDirect3DPixelShader9Vtbl d3d9_pixelshader_vtbl
Definition: shader.c:252
static const struct wined3d_parent_ops d3d9_pixelshader_wined3d_parent_ops
Definition: shader.c:268
HRESULT CDECL wined3d_shader_create_ps(struct wined3d_device *device, const struct wined3d_shader_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader **shader)
Definition: shader.c:3291
unsigned int size_t
Definition: corecrt.h:203
GLuint shader
Definition: glext.h:6030
const DWORD * byte_code
Definition: wined3d.h:2105

Referenced by d3d9_device_CreatePixelShader().

◆ present_parameters_from_wined3d_swapchain_desc()

void present_parameters_from_wined3d_swapchain_desc ( D3DPRESENT_PARAMETERS *  present_parameters,
const struct wined3d_swapchain_desc *  swapchain_desc,
DWORD  presentation_interval 
)

Definition at line 242 of file device.c.

244{
245 present_parameters->BackBufferWidth = swapchain_desc->backbuffer_width;
246 present_parameters->BackBufferHeight = swapchain_desc->backbuffer_height;
247 present_parameters->BackBufferFormat = d3dformat_from_wined3dformat(swapchain_desc->backbuffer_format);
248 present_parameters->BackBufferCount = swapchain_desc->backbuffer_count;
249 present_parameters->MultiSampleType = d3dmultisample_type_from_wined3d(swapchain_desc->multisample_type);
250 present_parameters->MultiSampleQuality = swapchain_desc->multisample_quality;
251 present_parameters->SwapEffect = d3dswapeffect_from_wined3dswapeffect(swapchain_desc->swap_effect);
252 present_parameters->hDeviceWindow = swapchain_desc->device_window;
253 present_parameters->Windowed = swapchain_desc->windowed;
254 present_parameters->EnableAutoDepthStencil = swapchain_desc->enable_auto_depth_stencil;
255 present_parameters->AutoDepthStencilFormat
257 present_parameters->Flags = swapchain_desc->flags & D3DPRESENTFLAGS_MASK;
258 present_parameters->FullScreen_RefreshRateInHz = swapchain_desc->refresh_rate;
259 present_parameters->PresentationInterval = presentation_interval;
260}
static D3DMULTISAMPLE_TYPE d3dmultisample_type_from_wined3d(enum wined3d_multisample_type type)
Definition: d3d8_private.h:387
#define D3DPRESENTFLAGS_MASK
Definition: d3d8_private.h:37
static D3DSWAPEFFECT d3dswapeffect_from_wined3dswapeffect(enum wined3d_swap_effect effect)
Definition: device.c:222
D3DFORMAT d3dformat_from_wined3dformat(enum wined3d_format_id format)
Definition: device.c:42
D3DSWAPEFFECT SwapEffect
Definition: d3d8types.h:1128
D3DMULTISAMPLE_TYPE MultiSampleType
Definition: d3d8types.h:1126
D3DFORMAT BackBufferFormat
Definition: d3d8types.h:1123
D3DFORMAT AutoDepthStencilFormat
Definition: d3d8types.h:1132
unsigned int multisample_quality
Definition: wined3d.h:1778
unsigned int backbuffer_height
Definition: wined3d.h:1773
enum wined3d_multisample_type multisample_type
Definition: wined3d.h:1777
enum wined3d_format_id auto_depth_stencil_format
Definition: wined3d.h:1783
unsigned int backbuffer_width
Definition: wined3d.h:1772
unsigned int backbuffer_count
Definition: wined3d.h:1775
enum wined3d_format_id backbuffer_format
Definition: wined3d.h:1774
enum wined3d_swap_effect swap_effect
Definition: wined3d.h:1779
unsigned int refresh_rate
Definition: wined3d.h:1785

◆ query_init()

HRESULT query_init ( struct d3d9_query *  query,
struct d3d9_device *  device,
D3DQUERYTYPE  type 
)

Definition at line 182 of file query.c.

183{
184 HRESULT hr;
185
187 {
188 if (type == 0x16)
189 FIXME("Undocumented query %#x created.\n", type);
190 else
191 WARN("Invalid query type %#x.\n", type);
192
193 return D3DERR_NOTAVAILABLE;
194 }
195
196 query->IDirect3DQuery9_iface.lpVtbl = &d3d9_query_vtbl;
197 query->refcount = 1;
198
201 query, &d3d9_null_wined3d_parent_ops, &query->wined3d_query)))
202 {
204 WARN("Failed to create wined3d query, hr %#lx.\n", hr);
205 return hr;
206 }
207
209 query->data_size = sizeof(DWORD);
211 query->data_size = sizeof(BOOL);
212 else
213 query->data_size = wined3d_query_get_data_size(query->wined3d_query);
215
216 query->parent_device = &device->IDirect3DDevice9Ex_iface;
217 IDirect3DDevice9Ex_AddRef(query->parent_device);
218
219 return D3D_OK;
220}
@ D3DQUERYTYPE_OCCLUSION
Definition: d3d9types.h:309
@ D3DQUERYTYPE_TIMESTAMPDISJOINT
Definition: d3d9types.h:311
@ D3DQUERYTYPE_MEMORYPRESSURE
Definition: d3d9types.h:320
static enum wined3d_query_type wined3d_query_type_from_d3d(D3DQUERYTYPE type)
Definition: query.c:32
static const struct IDirect3DQuery9Vtbl d3d9_query_vtbl
Definition: query.c:170
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
#define BOOL
Definition: nt_native.h:43
#define DWORD
Definition: nt_native.h:44
#define D3DERR_NOTAVAILABLE
Definition: d3d8.h:80
const struct wined3d_parent_ops d3d9_null_wined3d_parent_ops
Definition: device.c:29

Referenced by d3d9_device_CreateQuery().

◆ stateblock_init()

HRESULT stateblock_init ( struct d3d9_stateblock *  stateblock,
struct d3d9_device *  device,
D3DSTATEBLOCKTYPE  type,
struct wined3d_stateblock *  wined3d_stateblock 
)

Definition at line 175 of file stateblock.c.

177{
178 HRESULT hr;
179
181 stateblock->refcount = 1;
182
184 {
186 }
187 else
188 {
190 hr = wined3d_stateblock_create(device->wined3d_device, device->state,
193 if (FAILED(hr))
194 {
195 WARN("Failed to create wined3d stateblock, hr %#lx.\n", hr);
196 return hr;
197 }
198 }
199
200 stateblock->parent_device = &device->IDirect3DDevice9Ex_iface;
202
203 return D3D_OK;
204}
static const struct IDirect3DStateBlock9Vtbl d3d9_stateblock_vtbl
Definition: stateblock.c:163
struct wined3d_stateblock * wined3d_stateblock
Definition: d3d9_private.h:251
IDirect3DDevice9Ex * parent_device
Definition: d3d9_private.h:252
IDirect3DStateBlock9 IDirect3DStateBlock9_iface
Definition: d3d9_private.h:249
wined3d_stateblock_type
Definition: wined3d.h:786

Referenced by d3d9_device_CreateStateBlock(), d3d9_device_EndStateBlock(), and wined3d_stateblock_create().

◆ unsafe_impl_from_IDirect3DBaseTexture9()

struct d3d9_texture * unsafe_impl_from_IDirect3DBaseTexture9 ( IDirect3DBaseTexture9 *  iface)

Definition at line 1204 of file texture.c.

1205{
1206 if (!iface)
1207 return NULL;
1208
1209 if (iface->lpVtbl != (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_2d_vtbl
1210 && iface->lpVtbl != (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_cube_vtbl
1211 && iface->lpVtbl != (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_3d_vtbl)
1212 {
1213 WARN("%p is not a valid IDirect3DBaseTexture9 interface.\n", iface);
1214 return NULL;
1215 }
1216
1217 return CONTAINING_RECORD(iface, struct d3d9_texture, IDirect3DBaseTexture9_iface);
1218}

Referenced by d3d9_device_SetTexture(), d3d9_device_UpdateTexture(), and d3d9_surface_create().

◆ unsafe_impl_from_IDirect3DIndexBuffer9()

struct d3d9_indexbuffer * unsafe_impl_from_IDirect3DIndexBuffer9 ( IDirect3DIndexBuffer9 *  iface)

Definition at line 654 of file buffer.c.

655{
656 if (!iface)
657 return NULL;
658 assert(iface->lpVtbl == &d3d9_indexbuffer_vtbl);
659
661}
static struct d3d9_indexbuffer * impl_from_IDirect3DIndexBuffer9(IDirect3DIndexBuffer9 *iface)
Definition: buffer.c:356
#define assert(_expr)
Definition: assert.h:32

Referenced by d3d9_device_SetIndices().

◆ unsafe_impl_from_IDirect3DPixelShader9()

struct d3d9_pixelshader * unsafe_impl_from_IDirect3DPixelShader9 ( IDirect3DPixelShader9 *  iface)

Definition at line 300 of file shader.c.

301{
302 if (!iface)
303 return NULL;
304 if (iface->lpVtbl != &d3d9_pixelshader_vtbl)
305 WARN("Pixel shader %p with the wrong vtbl %p\n", iface, iface->lpVtbl);
306
308}
static struct d3d9_pixelshader * impl_from_IDirect3DPixelShader9(IDirect3DPixelShader9 *iface)
Definition: shader.c:167

Referenced by d3d9_device_SetPixelShader().

◆ unsafe_impl_from_IDirect3DSurface9()

struct d3d9_surface * unsafe_impl_from_IDirect3DSurface9 ( IDirect3DSurface9 *  iface)

◆ unsafe_impl_from_IDirect3DVertexBuffer9()

struct d3d9_vertexbuffer * unsafe_impl_from_IDirect3DVertexBuffer9 ( IDirect3DVertexBuffer9 *  iface)

Definition at line 347 of file buffer.c.

348{
349 if (!iface)
350 return NULL;
351 assert(iface->lpVtbl == &d3d9_vertexbuffer_vtbl);
352
354}
static struct d3d9_vertexbuffer * impl_from_IDirect3DVertexBuffer9(IDirect3DVertexBuffer9 *iface)
Definition: buffer.c:25
static const IDirect3DVertexBuffer9Vtbl d3d9_vertexbuffer_vtbl
Definition: buffer.c:241

Referenced by d3d9_device_ProcessVertices(), and d3d9_device_SetStreamSource().

◆ unsafe_impl_from_IDirect3DVertexDeclaration9()

struct d3d9_vertex_declaration * unsafe_impl_from_IDirect3DVertexDeclaration9 ( IDirect3DVertexDeclaration9 *  iface)

Definition at line 297 of file vertexdeclaration.c.

298{
299 if (!iface)
300 return NULL;
301 assert(iface->lpVtbl == &d3d9_vertex_declaration_vtbl);
302 return CONTAINING_RECORD(iface, struct d3d9_vertex_declaration, IDirect3DVertexDeclaration9_iface);
303}
static const struct IDirect3DVertexDeclaration9Vtbl d3d9_vertex_declaration_vtbl

Referenced by d3d9_device_ProcessVertices(), and d3d9_device_SetVertexDeclaration().

◆ unsafe_impl_from_IDirect3DVertexShader9()

struct d3d9_vertexshader * unsafe_impl_from_IDirect3DVertexShader9 ( IDirect3DVertexShader9 *  iface)

Definition at line 157 of file shader.c.

158{
159 if (!iface)
160 return NULL;
161 if (iface->lpVtbl != &d3d9_vertexshader_vtbl)
162 WARN("Vertex shader %p with the wrong vtbl %p\n", iface, iface->lpVtbl);
163
165}
static const IDirect3DVertexShader9Vtbl d3d9_vertexshader_vtbl
Definition: shader.c:109
static struct d3d9_vertexshader * impl_from_IDirect3DVertexShader9(IDirect3DVertexShader9 *iface)
Definition: shader.c:24

Referenced by d3d9_device_SetVertexShader().

◆ vdecl_convert_fvf()

HRESULT vdecl_convert_fvf ( DWORD  FVF,
D3DVERTEXELEMENT9 **  ppVertexElements 
)

Definition at line 58 of file vertexdeclaration.c.

60 {
61
62 unsigned int idx, idx2;
63 unsigned int offset;
64 BOOL has_pos = (fvf & D3DFVF_POSITION_MASK) != 0;
65 BOOL has_blend = (fvf & D3DFVF_XYZB5) > D3DFVF_XYZRHW;
66 BOOL has_blend_idx = has_blend &&
67 (((fvf & D3DFVF_XYZB5) == D3DFVF_XYZB5) ||
70 BOOL has_normal = (fvf & D3DFVF_NORMAL) != 0;
71 BOOL has_psize = (fvf & D3DFVF_PSIZE) != 0;
72
73 BOOL has_diffuse = (fvf & D3DFVF_DIFFUSE) != 0;
74 BOOL has_specular = (fvf & D3DFVF_SPECULAR) !=0;
75
76 DWORD num_textures = (fvf & D3DFVF_TEXCOUNT_MASK) >> D3DFVF_TEXCOUNT_SHIFT;
77 DWORD texcoords = (fvf & 0xFFFF0000) >> 16;
78
79 D3DVERTEXELEMENT9 end_element = D3DDECL_END();
80 D3DVERTEXELEMENT9 *elements = NULL;
81
82 unsigned int size;
83 DWORD num_blends = 1 + (((fvf & D3DFVF_XYZB5) - D3DFVF_XYZB1) >> 1);
84 if (has_blend_idx) num_blends--;
85
86 /* Compute declaration size */
87 size = has_pos + (has_blend && num_blends > 0) + has_blend_idx + has_normal +
88 has_psize + has_diffuse + has_specular + num_textures + 1;
89
90 /* convert the declaration */
91 if (!(elements = malloc(size * sizeof(*elements))))
93
94 elements[size-1] = end_element;
95 idx = 0;
96 if (has_pos) {
97 if (!has_blend && (fvf & D3DFVF_XYZRHW)) {
98 elements[idx].Type = D3DDECLTYPE_FLOAT4;
100 }
101 else if (!has_blend && (fvf & D3DFVF_XYZW) == D3DFVF_XYZW) {
102 elements[idx].Type = D3DDECLTYPE_FLOAT4;
103 elements[idx].Usage = D3DDECLUSAGE_POSITION;
104 }
105 else {
106 elements[idx].Type = D3DDECLTYPE_FLOAT3;
107 elements[idx].Usage = D3DDECLUSAGE_POSITION;
108 }
109 elements[idx].UsageIndex = 0;
110 idx++;
111 }
112 if (has_blend && (num_blends > 0)) {
113 if (((fvf & D3DFVF_XYZB5) == D3DFVF_XYZB2) && (fvf & D3DFVF_LASTBETA_D3DCOLOR))
114 elements[idx].Type = D3DDECLTYPE_D3DCOLOR;
115 else {
116 switch(num_blends) {
117 case 1: elements[idx].Type = D3DDECLTYPE_FLOAT1; break;
118 case 2: elements[idx].Type = D3DDECLTYPE_FLOAT2; break;
119 case 3: elements[idx].Type = D3DDECLTYPE_FLOAT3; break;
120 case 4: elements[idx].Type = D3DDECLTYPE_FLOAT4; break;
121 default:
122 ERR("Unexpected amount of blend values: %lu\n", num_blends);
123 }
124 }
126 elements[idx].UsageIndex = 0;
127 idx++;
128 }
129 if (has_blend_idx) {
130 if (fvf & D3DFVF_LASTBETA_UBYTE4 ||
131 (((fvf & D3DFVF_XYZB5) == D3DFVF_XYZB2) && (fvf & D3DFVF_LASTBETA_D3DCOLOR)))
132 elements[idx].Type = D3DDECLTYPE_UBYTE4;
133 else if (fvf & D3DFVF_LASTBETA_D3DCOLOR)
134 elements[idx].Type = D3DDECLTYPE_D3DCOLOR;
135 else
136 elements[idx].Type = D3DDECLTYPE_FLOAT1;
138 elements[idx].UsageIndex = 0;
139 idx++;
140 }
141 if (has_normal) {
142 elements[idx].Type = D3DDECLTYPE_FLOAT3;
143 elements[idx].Usage = D3DDECLUSAGE_NORMAL;
144 elements[idx].UsageIndex = 0;
145 idx++;
146 }
147 if (has_psize) {
148 elements[idx].Type = D3DDECLTYPE_FLOAT1;
149 elements[idx].Usage = D3DDECLUSAGE_PSIZE;
150 elements[idx].UsageIndex = 0;
151 idx++;
152 }
153 if (has_diffuse) {
154 elements[idx].Type = D3DDECLTYPE_D3DCOLOR;
155 elements[idx].Usage = D3DDECLUSAGE_COLOR;
156 elements[idx].UsageIndex = 0;
157 idx++;
158 }
159 if (has_specular) {
160 elements[idx].Type = D3DDECLTYPE_D3DCOLOR;
161 elements[idx].Usage = D3DDECLUSAGE_COLOR;
162 elements[idx].UsageIndex = 1;
163 idx++;
164 }
165 for (idx2 = 0; idx2 < num_textures; idx2++) {
166 unsigned int numcoords = (texcoords >> (idx2*2)) & 0x03;
167 switch (numcoords) {
169 elements[idx].Type = D3DDECLTYPE_FLOAT1;
170 break;
172 elements[idx].Type = D3DDECLTYPE_FLOAT2;
173 break;
175 elements[idx].Type = D3DDECLTYPE_FLOAT3;
176 break;
178 elements[idx].Type = D3DDECLTYPE_FLOAT4;
179 break;
180 }
181 elements[idx].Usage = D3DDECLUSAGE_TEXCOORD;
182 elements[idx].UsageIndex = idx2;
183 idx++;
184 }
185
186 /* Now compute offsets, and initialize the rest of the fields */
187 for (idx = 0, offset = 0; idx < size-1; idx++) {
188 elements[idx].Stream = 0;
189 elements[idx].Method = D3DDECLMETHOD_DEFAULT;
190 elements[idx].Offset = offset;
191 offset += d3d_dtype_lookup[elements[idx].Type].component_count
192 * d3d_dtype_lookup[elements[idx].Type].component_size;
193 }
194
195 *ppVertexElements = elements;
196 return D3D_OK;
197}
Type
Definition: Type.h:7
#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 const struct @268 d3d_dtype_lookup[]
@ D3DDECLUSAGE_BLENDWEIGHT
Definition: d3d9types.h:237
@ D3DDECLUSAGE_BLENDINDICES
Definition: d3d9types.h:238
@ D3DDECLUSAGE_POSITIONT
Definition: d3d9types.h:245
@ D3DDECLUSAGE_NORMAL
Definition: d3d9types.h:239
@ D3DDECLUSAGE_TEXCOORD
Definition: d3d9types.h:241
@ D3DDECLUSAGE_POSITION
Definition: d3d9types.h:236
@ D3DDECLUSAGE_PSIZE
Definition: d3d9types.h:240
@ D3DDECLUSAGE_COLOR
Definition: d3d9types.h:246
#define D3DFVF_LASTBETA_D3DCOLOR
Definition: d3d9types.h:169
@ D3DDECLTYPE_UBYTE4
Definition: d3d9types.h:276
@ D3DDECLTYPE_FLOAT3
Definition: d3d9types.h:273
@ D3DDECLTYPE_FLOAT1
Definition: d3d9types.h:271
@ D3DDECLTYPE_D3DCOLOR
Definition: d3d9types.h:275
@ D3DDECLTYPE_FLOAT2
Definition: d3d9types.h:272
@ D3DDECLTYPE_FLOAT4
Definition: d3d9types.h:274
#define D3DDECL_END()
Definition: d3d9types.h:329
#define D3DFVF_XYZW
Definition: d3d9types.h:152
@ D3DDECLMETHOD_DEFAULT
Definition: d3d9types.h:258
unsigned int idx
Definition: utils.c:40
unsigned int BOOL
Definition: ntddk_ex.h:94
GLintptr offset
Definition: glext.h:5920
#define D3DERR_OUTOFVIDEOMEMORY
Definition: d3d8.h:81

Referenced by device_get_fvf_declaration().

◆ vertexbuffer_init()

HRESULT vertexbuffer_init ( struct d3d9_vertexbuffer *  buffer,
struct d3d9_device *  device,
UINT  size,
UINT  usage,
DWORD  fvf,
D3DPOOL  pool 
)

Definition at line 277 of file buffer.c.

279{
280 const struct wined3d_parent_ops *parent_ops = &d3d9_null_wined3d_parent_ops;
282 HRESULT hr;
283
284 if (pool == D3DPOOL_SCRATCH)
285 {
286 WARN("Vertex buffer with D3DPOOL_SCRATCH requested.\n");
287 return D3DERR_INVALIDCALL;
288 }
289
290 if (pool == D3DPOOL_MANAGED && device->d3d_parent->extended)
291 {
292 WARN("Managed resources are not supported by d3d9ex devices.\n");
293 return D3DERR_INVALIDCALL;
294 }
295
296 /* In d3d9, buffers can't be used as rendertarget or depth/stencil buffer. */
298 return D3DERR_INVALIDCALL;
299
300 buffer->IDirect3DVertexBuffer9_iface.lpVtbl = &d3d9_vertexbuffer_vtbl;
301 buffer->fvf = fvf;
302 buffer->usage = usage;
303 d3d9_resource_init(&buffer->resource);
304
305 desc.byte_width = size;
307 desc.bind_flags = 0;
309 /* Buffers are always readable. */
310 if (pool != D3DPOOL_DEFAULT)
312 desc.misc_flags = 0;
313 desc.structure_byte_stride = 0;
314
315 if (!device->d3d_parent->extended)
317
319 {
320 desc.bind_flags = WINED3D_BIND_VERTEX_BUFFER;
322 }
323
325 hr = wined3d_buffer_create(device->wined3d_device, &desc, NULL, buffer, parent_ops, &buffer->wined3d_buffer);
326 if (SUCCEEDED(hr) && !(desc.access & WINED3D_RESOURCE_ACCESS_GPU))
327 {
328 desc.bind_flags = WINED3D_BIND_VERTEX_BUFFER;
330 if (FAILED(hr = wined3d_buffer_create(device->wined3d_device, &desc, NULL, buffer,
332 wined3d_buffer_decref(buffer->wined3d_buffer);
333 }
335 if (FAILED(hr))
336 {
337 WARN("Failed to create wined3d buffer, hr %#lx.\n", hr);
338 return hr;
339 }
340
341 buffer->parent_device = &device->IDirect3DDevice9Ex_iface;
342 IDirect3DDevice9Ex_AddRef(buffer->parent_device);
343
344 return D3D_OK;
345}
static const struct wined3d_parent_ops d3d9_vertexbuffer_wined3d_parent_ops
Definition: buffer.c:272
ULONG CDECL wined3d_buffer_decref(struct wined3d_buffer *buffer)
Definition: buffer.c:459

◆ vertexshader_init()

HRESULT vertexshader_init ( struct d3d9_vertexshader *  shader,
struct d3d9_device *  device,
const DWORD *  byte_code 
)

Definition at line 130 of file shader.c.

131{
133 HRESULT hr;
134
135 shader->refcount = 1;
136 shader->IDirect3DVertexShader9_iface.lpVtbl = &d3d9_vertexshader_vtbl;
137
138 desc.byte_code = byte_code;
139 desc.byte_code_size = ~(size_t)0;
140
142 hr = wined3d_shader_create_vs(device->wined3d_device, &desc, shader,
145 if (FAILED(hr))
146 {
147 WARN("Failed to create wined3d vertex shader, hr %#lx.\n", hr);
148 return hr;
149 }
150
151 shader->parent_device = &device->IDirect3DDevice9Ex_iface;
152 IDirect3DDevice9Ex_AddRef(shader->parent_device);
153
154 return D3D_OK;
155}
static const struct wined3d_parent_ops d3d9_vertexshader_wined3d_parent_ops
Definition: shader.c:125
HRESULT CDECL wined3d_shader_create_vs(struct wined3d_device *device, const struct wined3d_shader_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader **shader)
Definition: shader.c:3318

Referenced by d3d9_device_CreateVertexShader().

◆ volume_init()

void volume_init ( struct d3d9_volume *  volume,
struct wined3d_texture *  wined3d_texture,
unsigned int  sub_resource_idx,
const struct wined3d_parent_ops **  parent_ops 
)

Definition at line 204 of file volume.c.

206{
207 volume->IDirect3DVolume9_iface.lpVtbl = &d3d9_volume_vtbl;
208 d3d9_resource_init(&volume->resource);
209 volume->resource.refcount = 0;
211 volume->wined3d_texture = wined3d_texture;
212 volume->sub_resource_idx = sub_resource_idx;
213
214 *parent_ops = &d3d9_volume_wined3d_parent_ops;
215}
static const struct IDirect3DVolume9Vtbl d3d9_volume_vtbl
Definition: volume.c:175
static const struct wined3d_parent_ops d3d9_volume_wined3d_parent_ops
Definition: volume.c:199
void *CDECL wined3d_texture_get_parent(const struct wined3d_texture *texture)
Definition: texture.c:1690

◆ wined3d_bind_flags_from_d3d9_usage()

static unsigned int wined3d_bind_flags_from_d3d9_usage ( DWORD  usage)
inlinestatic

Definition at line 395 of file d3d9_private.h.

396{
397 unsigned int bind_flags = 0;
398
400 bind_flags |= WINED3D_BIND_RENDER_TARGET;
402 bind_flags |= WINED3D_BIND_DEPTH_STENCIL;
403
404 return bind_flags;
405}

Referenced by d3d9_CheckDeviceFormat(), d3d9_texture_2d_init(), d3d9_texture_3d_init(), and d3d9_texture_cube_init().

◆ wined3d_device_type_from_d3d()

static enum wined3d_device_type wined3d_device_type_from_d3d ( D3DDEVTYPE  type)
inlinestatic

Definition at line 412 of file d3d9_private.h.

413{
414 return (enum wined3d_device_type)type;
415}
wined3d_device_type
Definition: wined3d.h:90

◆ wined3d_multisample_type_from_d3d()

static enum wined3d_multisample_type wined3d_multisample_type_from_d3d ( D3DMULTISAMPLE_TYPE  type)
inlinestatic

Definition at line 407 of file d3d9_private.h.

408{
409 return (enum wined3d_multisample_type)type;
410}
wined3d_multisample_type
Definition: wined3d.h:572

◆ wined3d_scanline_ordering_from_d3d()

static enum wined3d_scanline_ordering wined3d_scanline_ordering_from_d3d ( D3DSCANLINEORDERING  ordering)
inlinestatic

Definition at line 417 of file d3d9_private.h.

418{
420}
wined3d_scanline_ordering
Definition: wined3d.h:824

Referenced by d3d9_device_reset(), d3d9_EnumAdapterModesEx(), and d3d9_GetAdapterModeCountEx().

◆ wined3d_usage_from_d3d()

static unsigned int wined3d_usage_from_d3d ( D3DPOOL  pool,
DWORD  usage 
)
inlinestatic

Definition at line 385 of file d3d9_private.h.

386{
388 if (pool == D3DPOOL_SCRATCH)
390 else if (pool == D3DPOOL_MANAGED)
392 return usage;
393}

◆ wined3daccess_from_d3dpool()

static unsigned int wined3daccess_from_d3dpool ( D3DPOOL  pool,
unsigned int  usage 
)
inlinestatic

Definition at line 361 of file d3d9_private.h.

362{
363 unsigned int access;
364
365 switch (pool)
366 {
367 case D3DPOOL_DEFAULT:
369 break;
370 case D3DPOOL_MANAGED:
372 break;
374 case D3DPOOL_SCRATCH:
376 break;
377 default:
378 access = 0;
379 }
382 return access;
383}
#define D3DUSAGE_DYNAMIC
Definition: d3d8types.h:99
static unsigned int map_access_from_usage(unsigned int usage)
Definition: d3d9_private.h:354

◆ wined3dformat_from_d3dformat()

enum wined3d_format_id wined3dformat_from_d3dformat ( D3DFORMAT  format)

Definition at line 84 of file device.c.

85{
86 BYTE *c = (BYTE *)&format;
87
88 /* Don't translate FOURCC formats */
89 if (isprint(c[0]) && isprint(c[1]) && isprint(c[2]) && isprint(c[3]))
90 return (enum wined3d_format_id)format;
91
92 switch(format)
93 {
103 case D3DFMT_A8: return WINED3DFMT_A8_UNORM;
109 case D3DFMT_P8: return WINED3DFMT_P8_UINT;
110 case D3DFMT_L8: return WINED3DFMT_L8_UNORM;
121 case D3DFMT_D32: return WINED3DFMT_D32_UNORM;
126 case D3DFMT_D16: return WINED3DFMT_D16_UNORM;
129 default:
130 FIXME("Unhandled D3DFORMAT %#x.\n", format);
131 return WINED3DFMT_UNKNOWN;
132 }
133}
wined3d_format_id
Definition: wined3d.h:126

Referenced by d3d8_device_CreateDepthStencilSurface(), d3d8_device_CreateImageSurface(), d3d8_device_CreateRenderTarget(), d3d8_device_DrawIndexedPrimitiveUP(), d3d9_device_CreateDepthStencilSurface(), d3d9_device_CreateDepthStencilSurfaceEx(), d3d9_device_CreateOffscreenPlainSurface(), d3d9_device_CreateRenderTarget(), d3d9_device_CreateRenderTargetEx(), d3d9_device_DrawIndexedPrimitiveUP(), d3d9_device_reset(), wined3d_swapchain_desc_from_d3d8(), and wined3d_swapchain_desc_from_d3d9().

◆ wined3dmapflags_from_d3dmapflags()

unsigned int wined3dmapflags_from_d3dmapflags ( unsigned int  flags,
unsigned int  usage 
)

Definition at line 135 of file device.c.

136{
137 static const unsigned int handled = D3DLOCK_NOSYSLOCK
141 unsigned int wined3d_flags;
142
143 wined3d_flags = flags & handled;
145 wined3d_flags |= WINED3D_MAP_READ;
146 if (!(flags & D3DLOCK_READONLY))
147 wined3d_flags |= WINED3D_MAP_WRITE;
148 if (!(wined3d_flags & (WINED3D_MAP_READ | WINED3D_MAP_WRITE)))
149 wined3d_flags |= WINED3D_MAP_WRITE;
150 flags &= ~(handled | D3DLOCK_READONLY);
151
152 if (flags)
153 FIXME("Unhandled flags %#x.\n", flags);
154
155 return wined3d_flags;
156}
#define D3DLOCK_DISCARD
Definition: d3d8types.h:72
#define D3DLOCK_NO_DIRTY_UPDATE
Definition: d3d8types.h:73
#define D3DLOCK_NOOVERWRITE
Definition: d3d8types.h:71
#define D3DLOCK_NOSYSLOCK
Definition: d3d8types.h:70
#define D3DLOCK_READONLY
Definition: d3d8types.h:69
#define WINED3D_MAP_READ
Definition: wined3d.h:957
#define WINED3D_MAP_WRITE
Definition: wined3d.h:956

Variable Documentation

◆ d3d9_null_wined3d_parent_ops

const struct wined3d_parent_ops d3d9_null_wined3d_parent_ops
extern