mirror of https://github.com/PCSX2/pcsx2.git
gsdx-ogl-wnd:
* detect Advanced Micro Devices for newer AMD Card... * Mess with coordinate for StretchRect. Upscaling seem to work now. Surely the biggest diff between ogl and dx... git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5655 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
58699923e0
commit
041bf4cee6
|
@ -110,11 +110,12 @@ namespace GLLoader {
|
||||||
|
|
||||||
const GLubyte* s = glGetString(GL_VERSION);
|
const GLubyte* s = glGetString(GL_VERSION);
|
||||||
if (s == NULL) return false;
|
if (s == NULL) return false;
|
||||||
fprintf(stderr, "Supported Opengl version: %s on GPU: %s. Vendor: %s\n", s, glGetString(GL_RENDERER), glGetString(GL_VENDOR));
|
|
||||||
|
|
||||||
// Could be useful to detect the GPU vendor:
|
const char* vendor = (const char*)glGetString(GL_VENDOR);
|
||||||
//if (strcmp((const char*)glGetString(GL_VENDOR), "ATI Technologies Inc.") == 0)
|
fprintf(stderr, "Supported Opengl version: %s on GPU: %s. Vendor: %s\n", s, glGetString(GL_RENDERER), vendor);
|
||||||
if (strstr((const char*)glGetString(GL_VENDOR), "ATI"))
|
|
||||||
|
// Name change but driver is still bad!
|
||||||
|
if (strstr(vendor, "ATI") || strstr(vendor, "Advanced Micro Devices"))
|
||||||
fglrx_buggy_driver = true;
|
fglrx_buggy_driver = true;
|
||||||
|
|
||||||
GLuint dot = 0;
|
GLuint dot = 0;
|
||||||
|
|
|
@ -816,10 +816,18 @@ void GSDeviceOGL::StretchRect(GSTexture* st, const GSVector4& sr, GSTexture* dt,
|
||||||
// ************************************
|
// ************************************
|
||||||
|
|
||||||
|
|
||||||
|
// Original code from DX
|
||||||
float left = dr.x * 2 / ds.x - 1.0f;
|
float left = dr.x * 2 / ds.x - 1.0f;
|
||||||
float top = 1.0f - dr.y * 2 / ds.y;
|
|
||||||
float right = dr.z * 2 / ds.x - 1.0f;
|
float right = dr.z * 2 / ds.x - 1.0f;
|
||||||
|
#if 0
|
||||||
|
float top = 1.0f - dr.y * 2 / ds.y;
|
||||||
float bottom = 1.0f - dr.w * 2 / ds.y;
|
float bottom = 1.0f - dr.w * 2 / ds.y;
|
||||||
|
#else
|
||||||
|
// Opengl get some issues with the coordinate
|
||||||
|
// I flip top/bottom to fix scaling of the internal resolution
|
||||||
|
float top = -1.0f + dr.y * 2 / ds.y;
|
||||||
|
float bottom = -1.0f + dr.w * 2 / ds.y;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Flip y axis only when we render in the backbuffer
|
// Flip y axis only when we render in the backbuffer
|
||||||
// By default everything is render in the wrong order (ie dx).
|
// By default everything is render in the wrong order (ie dx).
|
||||||
|
@ -828,16 +836,16 @@ void GSDeviceOGL::StretchRect(GSTexture* st, const GSVector4& sr, GSTexture* dt,
|
||||||
// Only flipping the backbuffer is transparent (I hope)...
|
// Only flipping the backbuffer is transparent (I hope)...
|
||||||
GSVector4 flip_sr = sr;
|
GSVector4 flip_sr = sr;
|
||||||
if (static_cast<GSTextureOGL*>(dt)->IsBackbuffer()) {
|
if (static_cast<GSTextureOGL*>(dt)->IsBackbuffer()) {
|
||||||
flip_sr.y = 1.0f - sr.y;
|
flip_sr.y = sr.w;
|
||||||
flip_sr.w = 1.0f - sr.w;
|
flip_sr.w = sr.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
GSVertexPT1 vertices[] =
|
GSVertexPT1 vertices[] =
|
||||||
{
|
{
|
||||||
{GSVector4(left, bottom, 0.5f, 1.0f), GSVector2(flip_sr.x, flip_sr.y)},
|
{GSVector4(left, top, 0.5f, 1.0f), GSVector2(flip_sr.x, flip_sr.y)},
|
||||||
{GSVector4(right, bottom, 0.5f, 1.0f), GSVector2(flip_sr.z, flip_sr.y)},
|
{GSVector4(right, top, 0.5f, 1.0f), GSVector2(flip_sr.z, flip_sr.y)},
|
||||||
{GSVector4(left, top, 0.5f, 1.0f), GSVector2(flip_sr.x, flip_sr.w)},
|
{GSVector4(left, bottom, 0.5f, 1.0f), GSVector2(flip_sr.x, flip_sr.w)},
|
||||||
{GSVector4(right, top, 0.5f, 1.0f), GSVector2(flip_sr.z, flip_sr.w)},
|
{GSVector4(right, bottom, 0.5f, 1.0f), GSVector2(flip_sr.z, flip_sr.w)},
|
||||||
};
|
};
|
||||||
//fprintf(stderr, "A:%fx%f B:%fx%f\n", left, top, bottom, right);
|
//fprintf(stderr, "A:%fx%f B:%fx%f\n", left, top, bottom, right);
|
||||||
//fprintf(stderr, "SR: %f %f %f %f\n", sr.x, sr.y, sr.z, sr.w);
|
//fprintf(stderr, "SR: %f %f %f %f\n", sr.x, sr.y, sr.z, sr.w);
|
||||||
|
|
Loading…
Reference in New Issue