mirror of
https://github.com/libretro/ppsspp.git
synced 2025-02-24 19:00:54 +00:00
DX9 cleanup: Remove more stuff from global.cpp
This commit is contained in:
parent
a8f69e7d64
commit
5b49c2f840
@ -74,6 +74,12 @@ static const char * pscode =
|
||||
" return c;\n"
|
||||
"}\n";
|
||||
|
||||
static const D3DVERTEXELEMENT9 g_FramebufferVertexElements[] = {
|
||||
{ 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
|
||||
{ 0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
|
||||
D3DDECL_END()
|
||||
};
|
||||
|
||||
static void DXSetViewport(float x, float y, float w, float h, float minZ, float maxZ) {
|
||||
D3DVIEWPORT9 vp;
|
||||
vp.X = (DWORD)x;
|
||||
@ -138,6 +144,8 @@ static void DXSetViewport(float x, float y, float w, float h, float minZ, float
|
||||
pFramebufferVertexShader->Release();
|
||||
}
|
||||
}
|
||||
|
||||
pD3Ddevice->CreateVertexDeclaration(g_FramebufferVertexElements, &pFramebufferVertexDecl);
|
||||
}
|
||||
|
||||
FramebufferManagerDX9::~FramebufferManagerDX9() {
|
||||
@ -149,6 +157,7 @@ static void DXSetViewport(float x, float y, float w, float h, float minZ, float
|
||||
pFramebufferPixelShader->Release();
|
||||
pFramebufferPixelShader = nullptr;
|
||||
}
|
||||
pFramebufferVertexDecl->Release();
|
||||
if (drawPixelsTex_) {
|
||||
drawPixelsTex_->Release();
|
||||
}
|
||||
|
@ -126,6 +126,7 @@ private:
|
||||
|
||||
LPDIRECT3DVERTEXSHADER9 pFramebufferVertexShader;
|
||||
LPDIRECT3DPIXELSHADER9 pFramebufferPixelShader;
|
||||
LPDIRECT3DVERTEXDECLARATION9 pFramebufferVertexDecl;
|
||||
|
||||
u8 *convBuf;
|
||||
|
||||
|
@ -62,6 +62,12 @@ namespace DX9 {
|
||||
#define TEXCACHE_MIN_PRESSURE 16 * 1024 * 1024 // Total in VRAM
|
||||
#define TEXCACHE_SECOND_MIN_PRESSURE 4 * 1024 * 1024
|
||||
|
||||
static const D3DVERTEXELEMENT9 g_FramebufferVertexElements[] = {
|
||||
{ 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
|
||||
{ 0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
|
||||
D3DDECL_END()
|
||||
};
|
||||
|
||||
TextureCacheDX9::TextureCacheDX9(Draw::DrawContext *draw)
|
||||
: TextureCacheCommon(draw),
|
||||
secondCacheSizeEstimate_(0),
|
||||
@ -89,9 +95,11 @@ TextureCacheDX9::TextureCacheDX9(Draw::DrawContext *draw)
|
||||
SetupTextureDecoder();
|
||||
|
||||
nextTexture_ = nullptr;
|
||||
pD3Ddevice->CreateVertexDeclaration(g_FramebufferVertexElements, &pFramebufferVertexDecl);
|
||||
}
|
||||
|
||||
TextureCacheDX9::~TextureCacheDX9() {
|
||||
pFramebufferVertexDecl->Release();
|
||||
Clear(true);
|
||||
}
|
||||
|
||||
@ -667,8 +675,8 @@ public:
|
||||
UV uv;
|
||||
};
|
||||
|
||||
TextureShaderApplierDX9(LPDIRECT3DPIXELSHADER9 pshader, float bufferW, float bufferH, int renderW, int renderH, float xoff, float yoff)
|
||||
: pshader_(pshader), bufferW_(bufferW), bufferH_(bufferH), renderW_(renderW), renderH_(renderH) {
|
||||
TextureShaderApplierDX9(LPDIRECT3DPIXELSHADER9 pshader, LPDIRECT3DVERTEXDECLARATION9 decl, float bufferW, float bufferH, int renderW, int renderH, float xoff, float yoff)
|
||||
: pshader_(pshader), decl_(decl), bufferW_(bufferW), bufferH_(bufferH), renderW_(renderW), renderH_(renderH) {
|
||||
static const Pos pos[4] = {
|
||||
{-1, 1, 0},
|
||||
{ 1, 1, 0},
|
||||
@ -729,7 +737,7 @@ public:
|
||||
void Use(LPDIRECT3DVERTEXSHADER9 vshader) {
|
||||
pD3Ddevice->SetPixelShader(pshader_);
|
||||
pD3Ddevice->SetVertexShader(vshader);
|
||||
pD3Ddevice->SetVertexDeclaration(pFramebufferVertexDecl);
|
||||
pD3Ddevice->SetVertexDeclaration(decl_);
|
||||
}
|
||||
|
||||
void Shade() {
|
||||
@ -753,6 +761,7 @@ public:
|
||||
|
||||
protected:
|
||||
LPDIRECT3DPIXELSHADER9 pshader_;
|
||||
LPDIRECT3DVERTEXDECLARATION9 decl_;
|
||||
PosUV verts_[4];
|
||||
float bufferW_;
|
||||
float bufferH_;
|
||||
@ -777,7 +786,7 @@ void TextureCacheDX9::ApplyTextureFramebuffer(TexCacheEntry *entry, VirtualFrame
|
||||
float xoff = -0.5f / framebuffer->renderWidth;
|
||||
float yoff = 0.5f / framebuffer->renderHeight;
|
||||
|
||||
TextureShaderApplierDX9 shaderApply(pshader, framebuffer->bufferWidth, framebuffer->bufferHeight, framebuffer->renderWidth, framebuffer->renderHeight, xoff, yoff);
|
||||
TextureShaderApplierDX9 shaderApply(pshader, pFramebufferVertexDecl, framebuffer->bufferWidth, framebuffer->bufferHeight, framebuffer->renderWidth, framebuffer->renderHeight, xoff, yoff);
|
||||
shaderApply.ApplyBounds(gstate_c.vertBounds, gstate_c.curTextureXOffset, gstate_c.curTextureYOffset, xoff, yoff);
|
||||
shaderApply.Use(depalShaderCache_->GetDepalettizeVertexShader());
|
||||
|
||||
|
@ -112,6 +112,8 @@ private:
|
||||
|
||||
u32 clutHash_;
|
||||
|
||||
LPDIRECT3DVERTEXDECLARATION9 pFramebufferVertexDecl;
|
||||
|
||||
LPDIRECT3DTEXTURE9 lastBoundTexture;
|
||||
float maxAnisotropyLevel;
|
||||
|
||||
|
@ -1,7 +1,4 @@
|
||||
|
||||
|
||||
#include "GPU/Directx9/helper/global.h"
|
||||
#include "GPU/Directx9/helper/dx_fbo.h"
|
||||
#include "thin3d/d3dx9_loader.h"
|
||||
#include "Common/CommonFuncs.h"
|
||||
|
||||
@ -10,14 +7,6 @@ namespace DX9 {
|
||||
LPDIRECT3DDEVICE9 pD3Ddevice = nullptr;
|
||||
LPDIRECT3DDEVICE9EX pD3DdeviceEx = nullptr;
|
||||
|
||||
IDirect3DVertexDeclaration9* pFramebufferVertexDecl = nullptr;
|
||||
|
||||
static const D3DVERTEXELEMENT9 VertexElements[] = {
|
||||
{ 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
|
||||
{ 0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
|
||||
D3DDECL_END()
|
||||
};
|
||||
|
||||
bool CompilePixelShader(const char *code, LPDIRECT3DPIXELSHADER9 *pShader, LPD3DXCONSTANTTABLE *pShaderTable, std::string &errorMessage) {
|
||||
ID3DXBuffer *pShaderCode = nullptr;
|
||||
ID3DXBuffer *pErrorMsg = nullptr;
|
||||
@ -98,17 +87,4 @@ bool CompileVertexShader(const char *code, LPDIRECT3DVERTEXSHADER9 *pShader, LPD
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CompileShaders(std::string &errorMsg) {
|
||||
pD3Ddevice->CreateVertexDeclaration(VertexElements, &pFramebufferVertexDecl);
|
||||
pD3Ddevice->SetVertexDeclaration(pFramebufferVertexDecl);
|
||||
return true;
|
||||
}
|
||||
|
||||
void DestroyShaders() {
|
||||
if (pFramebufferVertexDecl) {
|
||||
pFramebufferVertexDecl->Release();
|
||||
pFramebufferVertexDecl = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
} // namespace
|
||||
|
@ -12,11 +12,7 @@ namespace DX9 {
|
||||
extern LPDIRECT3DDEVICE9 pD3Ddevice;
|
||||
extern LPDIRECT3DDEVICE9EX pD3DdeviceEx;
|
||||
|
||||
extern IDirect3DVertexDeclaration9* pFramebufferVertexDecl;
|
||||
|
||||
bool CompileShaders(std::string &errorMessage);
|
||||
bool CompilePixelShader(const char *code, LPDIRECT3DPIXELSHADER9 *pShader, ID3DXConstantTable **pShaderTable, std::string &errorMessage);
|
||||
bool CompileVertexShader(const char *code, LPDIRECT3DVERTEXSHADER9 *pShader, ID3DXConstantTable **pShaderTable, std::string &errorMessage);
|
||||
void DestroyShaders();
|
||||
|
||||
} // namespace
|
||||
|
@ -165,18 +165,6 @@ bool D3D9Context::Init(HINSTANCE hInst, HWND wnd, std::string *error_message) {
|
||||
DX9::pD3Ddevice = device;
|
||||
DX9::pD3DdeviceEx = deviceEx;
|
||||
|
||||
if (!DX9::CompileShaders(*error_message)) {
|
||||
*error_message = "Unable to compile shaders: " + *error_message;
|
||||
device->EndScene();
|
||||
device->Release();
|
||||
d3d->Release();
|
||||
DX9::pD3Ddevice = nullptr;
|
||||
DX9::pD3DdeviceEx = nullptr;
|
||||
device = nullptr;
|
||||
UnloadD3DXDynamic();
|
||||
return false;
|
||||
}
|
||||
|
||||
DX9::fbo_init(d3d);
|
||||
|
||||
if (deviceEx && IsWin7OrLater()) {
|
||||
@ -211,7 +199,6 @@ void D3D9Context::Resize() {
|
||||
}
|
||||
|
||||
void D3D9Context::Shutdown() {
|
||||
DX9::DestroyShaders();
|
||||
DX9::fbo_shutdown();
|
||||
device->EndScene();
|
||||
device->Release();
|
||||
|
Loading…
x
Reference in New Issue
Block a user