mirror of https://github.com/PCSX2/pcsx2.git
gsdx-ogl: add a virtual GetID method for texture
Much more readable
This commit is contained in:
parent
e0012811ae
commit
2e34d48e97
|
@ -433,7 +433,7 @@ void GSDeviceOGL::DrawIndexedPrimitive(int offset, int count)
|
||||||
|
|
||||||
void GSDeviceOGL::ClearRenderTarget(GSTexture* t, const GSVector4& c)
|
void GSDeviceOGL::ClearRenderTarget(GSTexture* t, const GSVector4& c)
|
||||||
{
|
{
|
||||||
GL_PUSH(format("Clear RT %d", static_cast<GSTextureOGL*>(t)->GetID()).c_str());
|
GL_PUSH(format("Clear RT %d", t->GetID()).c_str());
|
||||||
|
|
||||||
// TODO: check size of scissor before toggling it
|
// TODO: check size of scissor before toggling it
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
|
@ -445,7 +445,7 @@ void GSDeviceOGL::ClearRenderTarget(GSTexture* t, const GSVector4& c)
|
||||||
gl_ClearBufferfv(GL_COLOR, 0, c.v);
|
gl_ClearBufferfv(GL_COLOR, 0, c.v);
|
||||||
} else {
|
} else {
|
||||||
OMSetFBO(m_fbo);
|
OMSetFBO(m_fbo);
|
||||||
OMAttachRt(static_cast<GSTextureOGL*>(t)->GetID());
|
OMAttachRt(t->GetID());
|
||||||
|
|
||||||
gl_ClearBufferfv(GL_COLOR, 0, c.v);
|
gl_ClearBufferfv(GL_COLOR, 0, c.v);
|
||||||
}
|
}
|
||||||
|
@ -462,14 +462,14 @@ void GSDeviceOGL::ClearRenderTarget(GSTexture* t, uint32 c)
|
||||||
|
|
||||||
void GSDeviceOGL::ClearRenderTarget_i(GSTexture* t, int32 c)
|
void GSDeviceOGL::ClearRenderTarget_i(GSTexture* t, int32 c)
|
||||||
{
|
{
|
||||||
GL_PUSH(format("Clear RTi %d", static_cast<GSTextureOGL*>(t)->GetID()).c_str());
|
GL_PUSH(format("Clear RTi %d", t->GetID()).c_str());
|
||||||
|
|
||||||
// Keep SCISSOR_TEST enabled on purpose to reduce the size
|
// Keep SCISSOR_TEST enabled on purpose to reduce the size
|
||||||
// of clean in DATE (impact big upscaling)
|
// of clean in DATE (impact big upscaling)
|
||||||
int32 col[4] = {c, c, c, c};
|
int32 col[4] = {c, c, c, c};
|
||||||
|
|
||||||
OMSetFBO(m_fbo);
|
OMSetFBO(m_fbo);
|
||||||
OMAttachRt(static_cast<GSTextureOGL*>(t)->GetID());
|
OMAttachRt(t->GetID());
|
||||||
|
|
||||||
gl_ClearBufferiv(GL_COLOR, 0, col);
|
gl_ClearBufferiv(GL_COLOR, 0, col);
|
||||||
|
|
||||||
|
@ -478,10 +478,10 @@ void GSDeviceOGL::ClearRenderTarget_i(GSTexture* t, int32 c)
|
||||||
|
|
||||||
void GSDeviceOGL::ClearDepth(GSTexture* t, float c)
|
void GSDeviceOGL::ClearDepth(GSTexture* t, float c)
|
||||||
{
|
{
|
||||||
GL_PUSH(format("Clear Depth %d", static_cast<GSTextureOGL*>(t)->GetID()).c_str());
|
GL_PUSH(format("Clear Depth %d", t->GetID()).c_str());
|
||||||
|
|
||||||
OMSetFBO(m_fbo);
|
OMSetFBO(m_fbo);
|
||||||
OMAttachDs(static_cast<GSTextureOGL*>(t)->GetID());
|
OMAttachDs(t->GetID());
|
||||||
|
|
||||||
// TODO: check size of scissor before toggling it
|
// TODO: check size of scissor before toggling it
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
|
@ -499,12 +499,12 @@ void GSDeviceOGL::ClearDepth(GSTexture* t, float c)
|
||||||
|
|
||||||
void GSDeviceOGL::ClearStencil(GSTexture* t, uint8 c)
|
void GSDeviceOGL::ClearStencil(GSTexture* t, uint8 c)
|
||||||
{
|
{
|
||||||
GL_PUSH(format("Clear Stencil %d", static_cast<GSTextureOGL*>(t)->GetID()).c_str());
|
GL_PUSH(format("Clear Stencil %d", t->GetID()).c_str());
|
||||||
|
|
||||||
// Keep SCISSOR_TEST enabled on purpose to reduce the size
|
// Keep SCISSOR_TEST enabled on purpose to reduce the size
|
||||||
// of clean in DATE (impact big upscaling)
|
// of clean in DATE (impact big upscaling)
|
||||||
OMSetFBO(m_fbo);
|
OMSetFBO(m_fbo);
|
||||||
OMAttachDs(static_cast<GSTextureOGL*>(t)->GetID());
|
OMAttachDs(t->GetID());
|
||||||
GLint color = c;
|
GLint color = c;
|
||||||
|
|
||||||
gl_ClearBufferiv(GL_STENCIL, 0, &color);
|
gl_ClearBufferiv(GL_STENCIL, 0, &color);
|
||||||
|
@ -566,7 +566,7 @@ void GSDeviceOGL::InitPrimDateTexture(GSTexture* rt)
|
||||||
// Clean with the max signed value
|
// Clean with the max signed value
|
||||||
ClearRenderTarget_i(m_date.t, 0x7FFFFFFF);
|
ClearRenderTarget_i(m_date.t, 0x7FFFFFFF);
|
||||||
|
|
||||||
gl_BindImageTexture(2, static_cast<GSTextureOGL*>(m_date.t)->GetID(), 0, false, 0, GL_READ_WRITE, GL_R32I);
|
gl_BindImageTexture(2, m_date.t->GetID(), 0, false, 0, GL_READ_WRITE, GL_R32I);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSDeviceOGL::RecycleDateTexture()
|
void GSDeviceOGL::RecycleDateTexture()
|
||||||
|
@ -673,8 +673,8 @@ void GSDeviceOGL::CopyRect(GSTexture* st, GSTexture* dt, const GSVector4i& r)
|
||||||
{
|
{
|
||||||
ASSERT(st && dt);
|
ASSERT(st && dt);
|
||||||
|
|
||||||
const GLuint& sid = static_cast<GSTextureOGL*>(st)->GetID();
|
const GLuint& sid = st->GetID();
|
||||||
const GLuint& did = static_cast<GSTextureOGL*>(dt)->GetID();
|
const GLuint& did = dt->GetID();
|
||||||
|
|
||||||
#ifdef ENABLE_OGL_DEBUG
|
#ifdef ENABLE_OGL_DEBUG
|
||||||
GL_PUSH(format("CopyRect from %d to %d", sid, did).c_str());
|
GL_PUSH(format("CopyRect from %d to %d", sid, did).c_str());
|
||||||
|
@ -718,9 +718,7 @@ void GSDeviceOGL::StretchRect(GSTexture* st, const GSVector4& sr, GSTexture* dt,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GL_PUSH(format("StretchRect from %d to %d",
|
GL_PUSH(format("StretchRect from %d to %d", st->GetID(), dt->GetID()).c_str());
|
||||||
static_cast<GSTextureOGL*>(st)->GetID(),
|
|
||||||
static_cast<GSTextureOGL*>(dt)->GetID()).c_str());
|
|
||||||
|
|
||||||
// ************************************
|
// ************************************
|
||||||
// Init
|
// Init
|
||||||
|
@ -1019,7 +1017,7 @@ void GSDeviceOGL::IASetPrimitiveTopology(GLenum topology)
|
||||||
|
|
||||||
void GSDeviceOGL::PSSetShaderResource(int i, GSTexture* sr)
|
void GSDeviceOGL::PSSetShaderResource(int i, GSTexture* sr)
|
||||||
{
|
{
|
||||||
GLuint id = static_cast<GSTextureOGL*>(sr)->GetID();
|
GLuint id = sr->GetID();
|
||||||
if (GLState::tex_unit[i] != id) {
|
if (GLState::tex_unit[i] != id) {
|
||||||
GLState::tex_unit[i] = id;
|
GLState::tex_unit[i] = id;
|
||||||
gl_BindTextureUnit(i, id);
|
gl_BindTextureUnit(i, id);
|
||||||
|
@ -1107,7 +1105,7 @@ void GSDeviceOGL::OMSetRenderTargets(GSTexture* rt, GSTexture* ds, const GSVecto
|
||||||
if (rt == NULL || !static_cast<GSTextureOGL*>(rt)->IsBackbuffer()) {
|
if (rt == NULL || !static_cast<GSTextureOGL*>(rt)->IsBackbuffer()) {
|
||||||
OMSetFBO(m_fbo);
|
OMSetFBO(m_fbo);
|
||||||
if (rt) {
|
if (rt) {
|
||||||
OMAttachRt(static_cast<GSTextureOGL*>(rt)->GetID());
|
OMAttachRt(rt->GetID());
|
||||||
} else {
|
} else {
|
||||||
// Note: NULL rt is only used in DATE so far.
|
// Note: NULL rt is only used in DATE so far.
|
||||||
OMAttachRt(0);
|
OMAttachRt(0);
|
||||||
|
@ -1115,7 +1113,7 @@ void GSDeviceOGL::OMSetRenderTargets(GSTexture* rt, GSTexture* ds, const GSVecto
|
||||||
|
|
||||||
// Note: it must be done after OMSetFBO
|
// Note: it must be done after OMSetFBO
|
||||||
if (ds)
|
if (ds)
|
||||||
OMAttachDs(static_cast<GSTextureOGL*>(ds)->GetID());
|
OMAttachDs(ds->GetID());
|
||||||
else
|
else
|
||||||
OMAttachDs(0);
|
OMAttachDs(0);
|
||||||
|
|
||||||
|
|
|
@ -212,9 +212,9 @@ void GSRendererOGL::SendDraw(bool require_barrier)
|
||||||
void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* tex)
|
void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* tex)
|
||||||
{
|
{
|
||||||
GL_PUSH(format("GL Draw from %d in %d (Depth %d)",
|
GL_PUSH(format("GL Draw from %d in %d (Depth %d)",
|
||||||
tex && tex->m_texture ? static_cast<GSTextureOGL*>(tex->m_texture)->GetID() : 0,
|
tex && tex->m_texture ? tex->m_texture->GetID() : 0,
|
||||||
static_cast<GSTextureOGL*>(rt)->GetID(),
|
rt->GetID(),
|
||||||
static_cast<GSTextureOGL*>(ds)->GetID()).c_str());
|
ds->GetID()).c_str());
|
||||||
|
|
||||||
GSDrawingEnvironment& env = m_env;
|
GSDrawingEnvironment& env = m_env;
|
||||||
GSDrawingContext* context = m_context;
|
GSDrawingContext* context = m_context;
|
||||||
|
|
|
@ -47,7 +47,8 @@ public:
|
||||||
virtual bool Map(GSMap& m, const GSVector4i* r = NULL) = 0;
|
virtual bool Map(GSMap& m, const GSVector4i* r = NULL) = 0;
|
||||||
virtual void Unmap() = 0;
|
virtual void Unmap() = 0;
|
||||||
virtual bool Save(const string& fn, bool dds = false) = 0;
|
virtual bool Save(const string& fn, bool dds = false) = 0;
|
||||||
virtual void Invalidate() {};
|
virtual void Invalidate() {}
|
||||||
|
virtual uint32 GetID() { return 0; }
|
||||||
|
|
||||||
GSVector2 GetScale() const {return m_scale;}
|
GSVector2 GetScale() const {return m_scale;}
|
||||||
void SetScale(const GSVector2& scale) {m_scale = scale;}
|
void SetScale(const GSVector2& scale) {m_scale = scale;}
|
||||||
|
|
|
@ -76,6 +76,6 @@ class GSTextureOGL : public GSTexture
|
||||||
bool IsBackbuffer() { return (m_type == GSTexture::Backbuffer); }
|
bool IsBackbuffer() { return (m_type == GSTexture::Backbuffer); }
|
||||||
bool IsDss() { return (m_type == GSTexture::DepthStencil); }
|
bool IsDss() { return (m_type == GSTexture::DepthStencil); }
|
||||||
|
|
||||||
GLuint GetID() { return m_texture_id; }
|
uint32 GetID() { return m_texture_id; }
|
||||||
GLuint64 GetHandle(GLuint sampler_id);
|
GLuint64 GetHandle(GLuint sampler_id);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue