1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-23 19:54:16 +01:00

[d3d9] Set priority only for D3DPOOL_MANAGED/DEFAULT resources

This commit is contained in:
WinterSnowfall 2025-02-14 01:44:53 +02:00 committed by Philip Rebohle
parent 84b2ac3f97
commit 274c590ad6
14 changed files with 86 additions and 42 deletions

View File

@ -8,8 +8,9 @@ namespace dxvk {
D3D9VertexBuffer::D3D9VertexBuffer( D3D9VertexBuffer::D3D9VertexBuffer(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_BUFFER_DESC* pDesc) const D3D9_BUFFER_DESC* pDesc,
: D3D9VertexBufferBase(pDevice, pDesc) { const bool Extended)
: D3D9VertexBufferBase(pDevice, pDesc, Extended) {
} }
@ -68,8 +69,9 @@ namespace dxvk {
D3D9IndexBuffer::D3D9IndexBuffer( D3D9IndexBuffer::D3D9IndexBuffer(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_BUFFER_DESC* pDesc) const D3D9_BUFFER_DESC* pDesc,
: D3D9IndexBufferBase(pDevice, pDesc) { const bool Extended)
: D3D9IndexBufferBase(pDevice, pDesc, Extended) {
} }

View File

@ -13,8 +13,9 @@ namespace dxvk {
D3D9Buffer( D3D9Buffer(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_BUFFER_DESC* pDesc) const D3D9_BUFFER_DESC* pDesc,
: D3D9Resource<Type...> (pDevice), const bool Extended)
: D3D9Resource<Type...> (pDevice, pDesc->Pool, Extended ),
m_buffer (pDevice, pDesc) { m_buffer (pDevice, pDesc) {
} }
@ -57,7 +58,8 @@ namespace dxvk {
D3D9VertexBuffer( D3D9VertexBuffer(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_BUFFER_DESC* pDesc); const D3D9_BUFFER_DESC* pDesc,
const bool Extended);
HRESULT STDMETHODCALLTYPE QueryInterface( HRESULT STDMETHODCALLTYPE QueryInterface(
REFIID riid, REFIID riid,
@ -76,7 +78,8 @@ namespace dxvk {
D3D9IndexBuffer( D3D9IndexBuffer(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_BUFFER_DESC* pDesc); const D3D9_BUFFER_DESC* pDesc,
const bool Extended);
HRESULT STDMETHODCALLTYPE QueryInterface( HRESULT STDMETHODCALLTYPE QueryInterface(
REFIID riid, REFIID riid,

View File

@ -325,6 +325,8 @@ namespace dxvk {
uint32_t GetPlaneCount() const; uint32_t GetPlaneCount() const;
D3DPOOL GetPool() const { return m_desc.Pool; }
const D3D9_VK_FORMAT_MAPPING& GetMapping() { return m_mapping; } const D3D9_VK_FORMAT_MAPPING& GetMapping() { return m_mapping; }
void SetLocked(UINT Subresource, bool value) { m_locked.set(Subresource, value); } void SetLocked(UINT Subresource, bool value) { m_locked.set(Subresource, value); }

View File

@ -657,7 +657,7 @@ namespace dxvk {
if (pSharedHandle != nullptr && Pool != D3DPOOL_DEFAULT) if (pSharedHandle != nullptr && Pool != D3DPOOL_DEFAULT)
return D3DERR_INVALIDCALL; return D3DERR_INVALIDCALL;
const Com<D3D9Texture2D> texture = new D3D9Texture2D(this, &desc, pSharedHandle); const Com<D3D9Texture2D> texture = new D3D9Texture2D(this, &desc, IsExtended(), pSharedHandle);
m_initializer->InitTexture(texture->GetCommonTexture(), initialData); m_initializer->InitTexture(texture->GetCommonTexture(), initialData);
*ppTexture = texture.ref(); *ppTexture = texture.ref();
@ -717,7 +717,7 @@ namespace dxvk {
return D3DERR_INVALIDCALL; return D3DERR_INVALIDCALL;
try { try {
const Com<D3D9Texture3D> texture = new D3D9Texture3D(this, &desc); const Com<D3D9Texture3D> texture = new D3D9Texture3D(this, &desc, IsExtended());
m_initializer->InitTexture(texture->GetCommonTexture()); m_initializer->InitTexture(texture->GetCommonTexture());
*ppVolumeTexture = texture.ref(); *ppVolumeTexture = texture.ref();
@ -775,7 +775,7 @@ namespace dxvk {
return D3DERR_INVALIDCALL; return D3DERR_INVALIDCALL;
try { try {
const Com<D3D9TextureCube> texture = new D3D9TextureCube(this, &desc); const Com<D3D9TextureCube> texture = new D3D9TextureCube(this, &desc, IsExtended());
m_initializer->InitTexture(texture->GetCommonTexture()); m_initializer->InitTexture(texture->GetCommonTexture());
*ppCubeTexture = texture.ref(); *ppCubeTexture = texture.ref();
@ -819,7 +819,7 @@ namespace dxvk {
return D3DERR_INVALIDCALL; return D3DERR_INVALIDCALL;
try { try {
const Com<D3D9VertexBuffer> buffer = new D3D9VertexBuffer(this, &desc); const Com<D3D9VertexBuffer> buffer = new D3D9VertexBuffer(this, &desc, IsExtended());
m_initializer->InitBuffer(buffer->GetCommonBuffer()); m_initializer->InitBuffer(buffer->GetCommonBuffer());
*ppVertexBuffer = buffer.ref(); *ppVertexBuffer = buffer.ref();
@ -862,7 +862,7 @@ namespace dxvk {
return D3DERR_INVALIDCALL; return D3DERR_INVALIDCALL;
try { try {
const Com<D3D9IndexBuffer> buffer = new D3D9IndexBuffer(this, &desc); const Com<D3D9IndexBuffer> buffer = new D3D9IndexBuffer(this, &desc, IsExtended());
m_initializer->InitBuffer(buffer->GetCommonBuffer()); m_initializer->InitBuffer(buffer->GetCommonBuffer());
*ppIndexBuffer = buffer.ref(); *ppIndexBuffer = buffer.ref();
@ -4126,7 +4126,7 @@ namespace dxvk {
return D3DERR_INVALIDCALL; return D3DERR_INVALIDCALL;
try { try {
const Com<D3D9Surface> surface = new D3D9Surface(this, &desc, nullptr, pSharedHandle); const Com<D3D9Surface> surface = new D3D9Surface(this, &desc, IsExtended(), nullptr, pSharedHandle);
m_initializer->InitTexture(surface->GetCommonTexture()); m_initializer->InitTexture(surface->GetCommonTexture());
*ppSurface = surface.ref(); *ppSurface = surface.ref();
m_losableResourceCounter++; m_losableResourceCounter++;
@ -4177,7 +4177,7 @@ namespace dxvk {
return D3DERR_INVALIDCALL; return D3DERR_INVALIDCALL;
try { try {
const Com<D3D9Surface> surface = new D3D9Surface(this, &desc, nullptr, pSharedHandle); const Com<D3D9Surface> surface = new D3D9Surface(this, &desc, IsExtended(), nullptr, pSharedHandle);
m_initializer->InitTexture(surface->GetCommonTexture()); m_initializer->InitTexture(surface->GetCommonTexture());
*ppSurface = surface.ref(); *ppSurface = surface.ref();
@ -4228,7 +4228,7 @@ namespace dxvk {
return D3DERR_INVALIDCALL; return D3DERR_INVALIDCALL;
try { try {
const Com<D3D9Surface> surface = new D3D9Surface(this, &desc, nullptr, pSharedHandle); const Com<D3D9Surface> surface = new D3D9Surface(this, &desc, IsExtended(), nullptr, pSharedHandle);
m_initializer->InitTexture(surface->GetCommonTexture()); m_initializer->InitTexture(surface->GetCommonTexture());
*ppSurface = surface.ref(); *ppSurface = surface.ref();
m_losableResourceCounter++; m_losableResourceCounter++;
@ -8510,7 +8510,7 @@ namespace dxvk {
if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, D3DRTYPE_SURFACE, &desc))) if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, D3DRTYPE_SURFACE, &desc)))
return D3DERR_NOTAVAILABLE; return D3DERR_NOTAVAILABLE;
m_autoDepthStencil = new D3D9Surface(this, &desc, nullptr, nullptr); m_autoDepthStencil = new D3D9Surface(this, &desc, IsExtended(), nullptr, nullptr);
m_initializer->InitTexture(m_autoDepthStencil->GetCommonTexture()); m_initializer->InitTexture(m_autoDepthStencil->GetCommonTexture());
SetDepthStencilSurface(m_autoDepthStencil.ptr()); SetDepthStencilSurface(m_autoDepthStencil.ptr());
m_losableResourceCounter++; m_losableResourceCounter++;

View File

@ -349,7 +349,7 @@ namespace dxvk {
const D3D9_COMMON_TEXTURE_DESC& desc, const D3D9_COMMON_TEXTURE_DESC& desc,
IDirect3DResource9** ppResult) { IDirect3DResource9** ppResult) {
try { try {
const Com<ResourceType> texture = new ResourceType(m_device, &desc); const Com<ResourceType> texture = new ResourceType(m_device, &desc, m_device->IsExtended());
m_device->m_initializer->InitTexture(texture->GetCommonTexture()); m_device->m_initializer->InitTexture(texture->GetCommonTexture());
*ppResult = texture.ref(); *ppResult = texture.ref();

View File

@ -11,9 +11,11 @@ namespace dxvk {
public: public:
D3D9Resource(D3D9DeviceEx* pDevice) D3D9Resource(D3D9DeviceEx* pDevice, D3DPOOL Pool, bool Extended)
: D3D9DeviceChild<Type...>(pDevice) : D3D9DeviceChild<Type...>(pDevice)
, m_priority ( 0 ) { } , m_pool ( Pool )
, m_priority ( 0 )
, m_isExtended ( Extended ) { }
HRESULT STDMETHODCALLTYPE SetPrivateData( HRESULT STDMETHODCALLTYPE SetPrivateData(
REFGUID refguid, REFGUID refguid,
@ -72,11 +74,18 @@ namespace dxvk {
} }
DWORD STDMETHODCALLTYPE SetPriority(DWORD PriorityNew) { DWORD STDMETHODCALLTYPE SetPriority(DWORD PriorityNew) {
// Priority can only be set for D3DPOOL_MANAGED resources on
// D3D9 interfaces, and for D3DPOOL_DEFAULT on D3D9Ex interfaces
if (likely((m_pool == D3DPOOL_MANAGED && !m_isExtended)
|| (m_pool == D3DPOOL_DEFAULT && m_isExtended))) {
DWORD oldPriority = m_priority; DWORD oldPriority = m_priority;
m_priority = PriorityNew; m_priority = PriorityNew;
return oldPriority; return oldPriority;
} }
return m_priority;
}
DWORD STDMETHODCALLTYPE GetPriority() { DWORD STDMETHODCALLTYPE GetPriority() {
return m_priority; return m_priority;
} }
@ -84,10 +93,12 @@ namespace dxvk {
protected: protected:
const D3DPOOL m_pool;
DWORD m_priority; DWORD m_priority;
private: private:
const bool m_isExtended;
ComPrivateData m_privateData; ComPrivateData m_privateData;
}; };

View File

@ -12,12 +12,13 @@ namespace dxvk {
D3D9Subresource( D3D9Subresource(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const bool Extended,
D3D9CommonTexture* pTexture, D3D9CommonTexture* pTexture,
UINT Face, UINT Face,
UINT MipLevel, UINT MipLevel,
IDirect3DBaseTexture9* pBaseTexture, IDirect3DBaseTexture9* pBaseTexture,
IUnknown* pContainer) IUnknown* pContainer)
: D3D9Resource<Type...>(pDevice), : D3D9Resource<Type...>(pDevice, pTexture->GetPool(), Extended),
m_container (pContainer), m_container (pContainer),
m_baseTexture (pBaseTexture), m_baseTexture (pBaseTexture),
m_texture (pTexture), m_texture (pTexture),

View File

@ -11,10 +11,12 @@ namespace dxvk {
D3D9Surface::D3D9Surface( D3D9Surface::D3D9Surface(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc, const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended,
IUnknown* pContainer, IUnknown* pContainer,
HANDLE* pSharedHandle) HANDLE* pSharedHandle)
: D3D9SurfaceBase( : D3D9SurfaceBase(
pDevice, pDevice,
Extended,
new D3D9CommonTexture( pDevice, this, pDesc, D3DRTYPE_SURFACE, pSharedHandle), new D3D9CommonTexture( pDevice, this, pDesc, D3DRTYPE_SURFACE, pSharedHandle),
0, 0, 0, 0,
nullptr, nullptr,
@ -22,21 +24,25 @@ namespace dxvk {
D3D9Surface::D3D9Surface( D3D9Surface::D3D9Surface(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc) const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended)
: D3D9Surface( : D3D9Surface(
pDevice, pDevice,
pDesc, pDesc,
Extended,
nullptr, nullptr,
nullptr) { } nullptr) { }
D3D9Surface::D3D9Surface( D3D9Surface::D3D9Surface(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const bool Extended,
D3D9CommonTexture* pTexture, D3D9CommonTexture* pTexture,
UINT Face, UINT Face,
UINT MipLevel, UINT MipLevel,
IDirect3DBaseTexture9* pBaseTexture) IDirect3DBaseTexture9* pBaseTexture)
: D3D9SurfaceBase( : D3D9SurfaceBase(
pDevice, pDevice,
Extended,
pTexture, pTexture,
Face, MipLevel, Face, MipLevel,
pBaseTexture, pBaseTexture,

View File

@ -20,15 +20,18 @@ namespace dxvk {
D3D9Surface( D3D9Surface(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc, const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended,
IUnknown* pContainer, IUnknown* pContainer,
HANDLE* pSharedHandle); HANDLE* pSharedHandle);
D3D9Surface( D3D9Surface(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc); const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended);
D3D9Surface( D3D9Surface(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const bool Extended,
D3D9CommonTexture* pTexture, D3D9CommonTexture* pTexture,
UINT Face, UINT Face,
UINT MipLevel, UINT MipLevel,

View File

@ -1022,7 +1022,7 @@ namespace dxvk {
for (uint32_t i = 0; i < NumBuffers; i++) { for (uint32_t i = 0; i < NumBuffers; i++) {
D3D9Surface* surface; D3D9Surface* surface;
try { try {
surface = new D3D9Surface(m_parent, &desc, this, nullptr); surface = new D3D9Surface(m_parent, &desc, m_parent->IsExtended(), this, nullptr);
m_parent->IncrementLosableCounter(); m_parent->IncrementLosableCounter();
} catch (const DxvkError& e) { } catch (const DxvkError& e) {
DestroyBackBuffers(); DestroyBackBuffers();

View File

@ -9,13 +9,15 @@ namespace dxvk {
D3D9Texture2D::D3D9Texture2D( D3D9Texture2D::D3D9Texture2D(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc, const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended,
HANDLE* pSharedHandle) HANDLE* pSharedHandle)
: D3D9Texture2DBase( pDevice, pDesc, D3DRTYPE_TEXTURE, pSharedHandle ) { } : D3D9Texture2DBase( pDevice, pDesc, Extended, D3DRTYPE_TEXTURE, pSharedHandle ) { }
D3D9Texture2D::D3D9Texture2D( D3D9Texture2D::D3D9Texture2D(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc) const D3D9_COMMON_TEXTURE_DESC* pDesc,
: D3D9Texture2D( pDevice, pDesc, nullptr ) { } const bool Extended)
: D3D9Texture2D( pDevice, pDesc, Extended, nullptr ) { }
HRESULT STDMETHODCALLTYPE D3D9Texture2D::QueryInterface(REFIID riid, void** ppvObject) { HRESULT STDMETHODCALLTYPE D3D9Texture2D::QueryInterface(REFIID riid, void** ppvObject) {
if (ppvObject == nullptr) if (ppvObject == nullptr)
@ -112,8 +114,9 @@ namespace dxvk {
D3D9Texture3D::D3D9Texture3D( D3D9Texture3D::D3D9Texture3D(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc) const D3D9_COMMON_TEXTURE_DESC* pDesc,
: D3D9Texture3DBase( pDevice, pDesc, D3DRTYPE_VOLUMETEXTURE, nullptr ) { } const bool Extended)
: D3D9Texture3DBase( pDevice, pDesc, Extended, D3DRTYPE_VOLUMETEXTURE, nullptr ) { }
HRESULT STDMETHODCALLTYPE D3D9Texture3D::QueryInterface(REFIID riid, void** ppvObject) { HRESULT STDMETHODCALLTYPE D3D9Texture3D::QueryInterface(REFIID riid, void** ppvObject) {
@ -205,8 +208,9 @@ namespace dxvk {
D3D9TextureCube::D3D9TextureCube( D3D9TextureCube::D3D9TextureCube(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc) const D3D9_COMMON_TEXTURE_DESC* pDesc,
: D3D9TextureCubeBase( pDevice, pDesc, D3DRTYPE_CUBETEXTURE, nullptr ) { } const bool Extended)
: D3D9TextureCubeBase( pDevice, pDesc, Extended, D3DRTYPE_CUBETEXTURE, nullptr ) { }
HRESULT STDMETHODCALLTYPE D3D9TextureCube::QueryInterface(REFIID riid, void** ppvObject) { HRESULT STDMETHODCALLTYPE D3D9TextureCube::QueryInterface(REFIID riid, void** ppvObject) {

View File

@ -23,9 +23,10 @@ namespace dxvk {
D3D9BaseTexture( D3D9BaseTexture(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc, const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended,
D3DRESOURCETYPE ResourceType, D3DRESOURCETYPE ResourceType,
HANDLE* pSharedHandle) HANDLE* pSharedHandle)
: D3D9Resource<Base...> ( pDevice ) : D3D9Resource<Base...> ( pDevice, pDesc->Pool, Extended )
, m_texture ( pDevice, this, pDesc, ResourceType, pSharedHandle ) , m_texture ( pDevice, this, pDesc, ResourceType, pSharedHandle )
, m_lod ( 0 ) { , m_lod ( 0 ) {
const uint32_t arraySlices = m_texture.Desc()->ArraySize; const uint32_t arraySlices = m_texture.Desc()->ArraySize;
@ -41,6 +42,7 @@ namespace dxvk {
new (subObj) SubresourceType( new (subObj) SubresourceType(
pDevice, pDevice,
Extended,
&m_texture, &m_texture,
i, j, i, j,
this); this);
@ -132,11 +134,13 @@ namespace dxvk {
D3D9Texture2D( D3D9Texture2D(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc, const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended,
HANDLE* pSharedHandle); HANDLE* pSharedHandle);
D3D9Texture2D( D3D9Texture2D(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc); const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended);
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
@ -162,7 +166,8 @@ namespace dxvk {
D3D9Texture3D( D3D9Texture3D(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc); const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended);
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
@ -187,7 +192,8 @@ namespace dxvk {
D3D9TextureCube( D3D9TextureCube(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc); const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended);
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);

View File

@ -7,9 +7,11 @@ namespace dxvk {
D3D9Volume::D3D9Volume( D3D9Volume::D3D9Volume(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc) const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended)
: D3D9VolumeBase( : D3D9VolumeBase(
pDevice, pDevice,
Extended,
new D3D9CommonTexture( pDevice, this, pDesc, D3DRTYPE_VOLUMETEXTURE, nullptr ), new D3D9CommonTexture( pDevice, this, pDesc, D3DRTYPE_VOLUMETEXTURE, nullptr ),
0, 0, 0, 0,
nullptr, nullptr,
@ -18,12 +20,14 @@ namespace dxvk {
D3D9Volume::D3D9Volume( D3D9Volume::D3D9Volume(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const bool Extended,
D3D9CommonTexture* pTexture, D3D9CommonTexture* pTexture,
UINT Face, UINT Face,
UINT MipLevel, UINT MipLevel,
IDirect3DBaseTexture9* pContainer) IDirect3DBaseTexture9* pContainer)
: D3D9VolumeBase( : D3D9VolumeBase(
pDevice, pDevice,
Extended,
pTexture, pTexture,
Face, MipLevel, Face, MipLevel,
pContainer, pContainer,

View File

@ -13,10 +13,12 @@ namespace dxvk {
D3D9Volume( D3D9Volume(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const D3D9_COMMON_TEXTURE_DESC* pDesc); const D3D9_COMMON_TEXTURE_DESC* pDesc,
const bool Extended);
D3D9Volume( D3D9Volume(
D3D9DeviceEx* pDevice, D3D9DeviceEx* pDevice,
const bool Extended,
D3D9CommonTexture* pTexture, D3D9CommonTexture* pTexture,
UINT Face, UINT Face,
UINT MipLevel, UINT MipLevel,