mirror of https://github.com/PCSX2/pcsx2.git
gsdx hw: use non virtual Create Texture function.
Just do the format check in FetchSurface. It removes a level of virtual function and avoid useless code duplication.
This commit is contained in:
parent
f25fe48c9b
commit
dbffad2aef
|
@ -175,10 +175,10 @@ public:
|
|||
virtual void ClearDepth(GSTexture* t) {}
|
||||
virtual void ClearStencil(GSTexture* t, uint8 c) {}
|
||||
|
||||
virtual GSTexture* CreateRenderTarget(int w, int h, int format = 0);
|
||||
virtual GSTexture* CreateDepthStencil(int w, int h, int format = 0);
|
||||
virtual GSTexture* CreateTexture(int w, int h, int format = 0);
|
||||
virtual GSTexture* CreateOffscreen(int w, int h, int format = 0);
|
||||
GSTexture* CreateRenderTarget(int w, int h, int format = 0);
|
||||
GSTexture* CreateDepthStencil(int w, int h, int format = 0);
|
||||
GSTexture* CreateTexture(int w, int h, int format = 0);
|
||||
GSTexture* CreateOffscreen(int w, int h, int format = 0);
|
||||
|
||||
virtual GSTexture* CopyOffscreen(GSTexture* src, const GSVector4& sRect, int w, int h, int format = 0, int ps_shader = 0) {return NULL;}
|
||||
|
||||
|
|
|
@ -712,29 +712,12 @@ GSTexture* GSDevice11::CreateSurface(int type, int w, int h, int format)
|
|||
|
||||
GSTexture* GSDevice11::FetchSurface(int type, int w, int h, int format)
|
||||
{
|
||||
if (format == 0)
|
||||
format = (type == GSTexture::DepthStencil) ? DXGI_FORMAT_R32G8X24_TYPELESS : DXGI_FORMAT_R8G8B8A8_UNORM;
|
||||
|
||||
return __super::FetchSurface(type, w, h, format);
|
||||
}
|
||||
|
||||
GSTexture* GSDevice11::CreateRenderTarget(int w, int h, int format)
|
||||
{
|
||||
return __super::CreateRenderTarget(w, h, format ? format : DXGI_FORMAT_R8G8B8A8_UNORM);
|
||||
}
|
||||
|
||||
GSTexture* GSDevice11::CreateDepthStencil(int w, int h, int format)
|
||||
{
|
||||
return __super::CreateDepthStencil(w, h, format ? format : DXGI_FORMAT_R32G8X24_TYPELESS);
|
||||
}
|
||||
|
||||
GSTexture* GSDevice11::CreateTexture(int w, int h, int format)
|
||||
{
|
||||
return __super::CreateTexture(w, h, format ? format : DXGI_FORMAT_R8G8B8A8_UNORM);
|
||||
}
|
||||
|
||||
GSTexture* GSDevice11::CreateOffscreen(int w, int h, int format)
|
||||
{
|
||||
return __super::CreateOffscreen(w, h, format ? format : DXGI_FORMAT_R8G8B8A8_UNORM);
|
||||
}
|
||||
|
||||
GSTexture* GSDevice11::CopyOffscreen(GSTexture* src, const GSVector4& sRect, int w, int h, int format, int ps_shader)
|
||||
{
|
||||
GSTexture* dst = NULL;
|
||||
|
|
|
@ -483,11 +483,6 @@ public:
|
|||
void ClearDepth(GSTexture* t) final;
|
||||
void ClearStencil(GSTexture* t, uint8 c) final;
|
||||
|
||||
GSTexture* CreateRenderTarget(int w, int h, int format = 0) final;
|
||||
GSTexture* CreateDepthStencil(int w, int h, int format = 0) final;
|
||||
GSTexture* CreateTexture(int w, int h, int format = 0) final;
|
||||
GSTexture* CreateOffscreen(int w, int h, int format = 0) final;
|
||||
|
||||
GSTexture* CopyOffscreen(GSTexture* src, const GSVector4& sRect, int w, int h, int format = 0, int ps_shader = 0) final;
|
||||
|
||||
void CloneTexture(GSTexture* src, GSTexture** dest);
|
||||
|
|
|
@ -260,6 +260,9 @@ GSTexture* GSDeviceOGL::CreateSurface(int type, int w, int h, int fmt)
|
|||
|
||||
GSTexture* GSDeviceOGL::FetchSurface(int type, int w, int h, int format)
|
||||
{
|
||||
if (format == 0)
|
||||
format = (type == GSTexture::DepthStencil) ? GL_DEPTH32F_STENCIL8 : GL_RGBA8;
|
||||
|
||||
GSTexture* t = GSDevice::FetchSurface(type, w, h, format);
|
||||
|
||||
|
||||
|
@ -1178,26 +1181,6 @@ void GSDeviceOGL::SelfShaderTest()
|
|||
SelfShaderTestPrint(test, nb_shader);
|
||||
}
|
||||
|
||||
GSTexture* GSDeviceOGL::CreateRenderTarget(int w, int h, int format)
|
||||
{
|
||||
return GSDevice::CreateRenderTarget(w, h, format ? format : GL_RGBA8);
|
||||
}
|
||||
|
||||
GSTexture* GSDeviceOGL::CreateDepthStencil(int w, int h, int format)
|
||||
{
|
||||
return GSDevice::CreateDepthStencil(w, h, format ? format : GL_DEPTH32F_STENCIL8);
|
||||
}
|
||||
|
||||
GSTexture* GSDeviceOGL::CreateTexture(int w, int h, int format)
|
||||
{
|
||||
return GSDevice::CreateTexture(w, h, format ? format : GL_RGBA8);
|
||||
}
|
||||
|
||||
GSTexture* GSDeviceOGL::CreateOffscreen(int w, int h, int format)
|
||||
{
|
||||
return GSDevice::CreateOffscreen(w, h, format ? format : GL_RGBA8);
|
||||
}
|
||||
|
||||
// blit a texture into an offscreen buffer
|
||||
GSTexture* GSDeviceOGL::CopyOffscreen(GSTexture* src, const GSVector4& sRect, int w, int h, int format, int ps_shader)
|
||||
{
|
||||
|
|
|
@ -534,10 +534,6 @@ public:
|
|||
void ClearDepth(GSTexture* t) final;
|
||||
void ClearStencil(GSTexture* t, uint8 c) final;
|
||||
|
||||
GSTexture* CreateRenderTarget(int w, int h, int format = 0) final;
|
||||
GSTexture* CreateDepthStencil(int w, int h, int format = 0) final;
|
||||
GSTexture* CreateTexture(int w, int h, int format = 0) final;
|
||||
GSTexture* CreateOffscreen(int w, int h, int format = 0) final;
|
||||
void InitPrimDateTexture(GSTexture* rt, const GSVector4i& area);
|
||||
void RecycleDateTexture();
|
||||
|
||||
|
|
Loading…
Reference in New Issue