mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-12-14 18:23:52 +01:00
905d69e77b
Instead, infer it from the format. This is basically being done already, however the mapping we pass in is not correct if the image format is Unknown.
63 lines
1.5 KiB
C++
63 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "d3d9_subresource.h"
|
|
|
|
#include "d3d9_common_texture.h"
|
|
|
|
#include "../util/util_gdi.h"
|
|
|
|
#include <algorithm>
|
|
|
|
namespace dxvk {
|
|
|
|
using D3D9GDIDesc = D3DKMT_DESTROYDCFROMMEMORY;
|
|
|
|
using D3D9SurfaceBase = D3D9Subresource<IDirect3DSurface9>;
|
|
class D3D9Surface final : public D3D9SurfaceBase {
|
|
|
|
public:
|
|
|
|
D3D9Surface(
|
|
D3D9DeviceEx* pDevice,
|
|
const D3D9_COMMON_TEXTURE_DESC* pDesc);
|
|
|
|
D3D9Surface(
|
|
D3D9DeviceEx* pDevice,
|
|
D3D9CommonTexture* pTexture,
|
|
UINT Face,
|
|
UINT MipLevel,
|
|
IDirect3DBaseTexture9* pContainer);
|
|
|
|
void AddRefPrivate();
|
|
|
|
void ReleasePrivate();
|
|
|
|
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
|
|
|
|
D3DRESOURCETYPE STDMETHODCALLTYPE GetType() final;
|
|
|
|
HRESULT STDMETHODCALLTYPE GetDesc(D3DSURFACE_DESC *pDesc) final;
|
|
|
|
HRESULT STDMETHODCALLTYPE LockRect(D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect, DWORD Flags) final;
|
|
|
|
HRESULT STDMETHODCALLTYPE UnlockRect() final;
|
|
|
|
HRESULT STDMETHODCALLTYPE GetDC(HDC *phDC) final;
|
|
|
|
HRESULT STDMETHODCALLTYPE ReleaseDC(HDC hDC) final;
|
|
|
|
inline VkExtent2D GetSurfaceExtent() const {
|
|
const auto* desc = m_texture->Desc();
|
|
|
|
return VkExtent2D {
|
|
std::max(1u, desc->Width >> GetMipLevel()),
|
|
std::max(1u, desc->Height >> GetMipLevel())
|
|
};
|
|
}
|
|
|
|
private:
|
|
|
|
D3D9GDIDesc m_dcDesc;
|
|
|
|
};
|
|
} |