Skip to content

Commit

Permalink
Add MipMap support to Blt()
Browse files Browse the repository at this point in the history
  • Loading branch information
elishacloud committed Sep 6, 2024
1 parent 5ae5765 commit 75700a9
Show file tree
Hide file tree
Showing 8 changed files with 130 additions and 73 deletions.
2 changes: 1 addition & 1 deletion Dllmain/BuildNo.rc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#define BUILD_NUMBER 7118
#define BUILD_NUMBER 7119
182 changes: 119 additions & 63 deletions ddraw/IDirectDrawSurfaceX.cpp

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions ddraw/IDirectDrawSurfaceX.h
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,8 @@ class m_IDirectDrawSurfaceX : public IUnknown, public AddressLookupTableDdrawObj

// Direct3D9 interface functions
LPDIRECT3DSURFACE9 Get3DSurface();
LPDIRECT3DSURFACE9 Get3DMipMapSurface(DWORD MipMapLevel);
void Release3DMipMapSurface(LPDIRECT3DSURFACE9 pSurfaceD9, DWORD MipMapLevel);
LPDIRECT3DTEXTURE9 Get3DTexture();
void CheckMipMapLevelGen();
HRESULT CheckInterface(char* FunctionName, bool CheckD3DDevice, bool CheckD3DSurface, bool CheckLostSurface);
Expand Down Expand Up @@ -278,7 +280,6 @@ class m_IDirectDrawSurfaceX : public IUnknown, public AddressLookupTableDdrawObj
inline DWORD GetD3d9MipMapLevel(DWORD MipMapLevel) { return min(MipMapLevel, MaxMipMapLevel); }
inline DWORD GetWidth() { return surfaceDesc2.dwWidth; }
inline DWORD GetHeight() { return surfaceDesc2.dwHeight; }
inline RECT GetSurfaceRect() { return { 0, 0, (LONG)surfaceDesc2.dwWidth, (LONG)surfaceDesc2.dwHeight }; }
inline bool CanSurfaceBeDeleted() { return (ComplexRoot || (surfaceDesc2.ddsCaps.dwCaps & DDSCAPS_COMPLEX) == 0); }
inline DDSCAPS2 GetSurfaceCaps() { return surfaceDesc2.ddsCaps; }
inline D3DFORMAT GetSurfaceFormat() { return surface.Format; }
Expand All @@ -302,7 +303,7 @@ class m_IDirectDrawSurfaceX : public IUnknown, public AddressLookupTableDdrawObj
// Copying surface textures
HRESULT SaveDXTDataToDDS(const void* data, size_t dataSize, const char* filename, int dxtVersion) const;
HRESULT SaveSurfaceToFile(const char* filename, D3DXIMAGE_FILEFORMAT format);
HRESULT CopySurface(m_IDirectDrawSurfaceX* pSourceSurface, RECT* pSourceRect, RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter, D3DCOLOR ColorKey, DWORD dwFlags);
HRESULT CopySurface(m_IDirectDrawSurfaceX* pSourceSurface, RECT* pSourceRect, RECT* pDestRect, D3DTEXTUREFILTERTYPE Filter, D3DCOLOR ColorKey, DWORD dwFlags, DWORD SrcMipMapLevel, DWORD MipMapLevel);
HRESULT CopyToDrawTexture(LPRECT lpDestRect);
HRESULT CopyFromEmulatedSurface(LPRECT lpDestRect);
HRESULT CopyToEmulatedSurface(LPRECT lpDestRect);
Expand Down Expand Up @@ -373,7 +374,7 @@ class m_IDirectDrawSurfaceX : public IUnknown, public AddressLookupTableDdrawObj
HRESULT GetCaps2(LPDDSCAPS2);
STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*);
STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY);
STDMETHOD(GetDC)(THIS_ HDC FAR *);
STDMETHOD(GetDC)(THIS_ HDC FAR *, DWORD MipMapLevel);
STDMETHOD(GetFlipStatus)(THIS_ DWORD);
STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG);
STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*);
Expand Down Expand Up @@ -504,7 +505,7 @@ class m_IDirectDrawSurfaceX : public IUnknown, public AddressLookupTableDdrawObj
}

// Draw 2D DirectDraw surface
HRESULT ColorFill(RECT* pRect, D3DCOLOR dwFillColor);
HRESULT ColorFill(RECT* pRect, D3DCOLOR dwFillColor, DWORD MipMapLevel);

// Attached surfaces
void RemoveAttachedSurfaceFromMap(m_IDirectDrawSurfaceX* lpSurfaceX);
Expand Down
2 changes: 1 addition & 1 deletion ddraw/Versions/IDirectDrawSurface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ HRESULT m_IDirectDrawSurface::GetDC(HDC FAR * a)
}
return DDERR_INVALIDOBJECT;
}
return ProxyInterface->GetDC(a);
return ProxyInterface->GetDC(a, MipMapLevel);
}

HRESULT m_IDirectDrawSurface::GetFlipStatus(DWORD a)
Expand Down
2 changes: 1 addition & 1 deletion ddraw/Versions/IDirectDrawSurface2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ HRESULT m_IDirectDrawSurface2::GetColorKey(DWORD a, LPDDCOLORKEY b)

HRESULT m_IDirectDrawSurface2::GetDC(HDC FAR * a)
{
return ProxyInterface->GetDC(a);
return ProxyInterface->GetDC(a, MipMapLevel);
}

HRESULT m_IDirectDrawSurface2::GetFlipStatus(DWORD a)
Expand Down
2 changes: 1 addition & 1 deletion ddraw/Versions/IDirectDrawSurface3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ HRESULT m_IDirectDrawSurface3::GetColorKey(DWORD a, LPDDCOLORKEY b)

HRESULT m_IDirectDrawSurface3::GetDC(HDC FAR * a)
{
return ProxyInterface->GetDC(a);
return ProxyInterface->GetDC(a, MipMapLevel);
}

HRESULT m_IDirectDrawSurface3::GetFlipStatus(DWORD a)
Expand Down
2 changes: 1 addition & 1 deletion ddraw/Versions/IDirectDrawSurface4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ HRESULT m_IDirectDrawSurface4::GetColorKey(DWORD a, LPDDCOLORKEY b)

HRESULT m_IDirectDrawSurface4::GetDC(HDC FAR * a)
{
return ProxyInterface->GetDC(a);
return ProxyInterface->GetDC(a, MipMapLevel);
}

HRESULT m_IDirectDrawSurface4::GetFlipStatus(DWORD a)
Expand Down
2 changes: 1 addition & 1 deletion ddraw/Versions/IDirectDrawSurface7.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ HRESULT m_IDirectDrawSurface7::GetColorKey(DWORD a, LPDDCOLORKEY b)

HRESULT m_IDirectDrawSurface7::GetDC(HDC FAR * a)
{
return ProxyInterface->GetDC(a);
return ProxyInterface->GetDC(a, MipMapLevel);
}

HRESULT m_IDirectDrawSurface7::GetFlipStatus(DWORD a)
Expand Down

0 comments on commit 75700a9

Please sign in to comment.