Merge pull request #2648 from raven02/patch-4

Fall back to use region instead of viewport to estimate drawing size
This commit is contained in:
Henrik Rydgård 2013-07-06 13:13:33 -07:00
commit c71ae64454
3 changed files with 11 additions and 6 deletions

View File

@ -430,16 +430,21 @@ void FramebufferManager::SetRenderFrameBuffer() {
int z_stride = gstate.zbwidth & 0x3C0;
// Yeah this is not completely right. but it'll do for now.
//int drawing_width = ((gstate.region2) & 0x3FF) + 1;
//int drawing_height = ((gstate.region2 >> 10) & 0x3FF) + 1;
int drawing_width = ((gstate.region2) & 0x3FF) + 1;
int drawing_height = ((gstate.region2 >> 10) & 0x3FF) + 1;
if (drawing_width > gstate.getScissorX2() + 1)
drawing_width = gstate.getScissorX2() + 1;
if (drawing_height > gstate.getScissorY2() + 1)
drawing_height = gstate.getScissorY2() + 1;
// As there are no clear "framebuffer width" and "framebuffer height" registers,
// we need to infer the size of the current framebuffer somehow. Let's try the viewport.
int fmt = gstate.framebufpixformat & 3;
int drawing_width, drawing_height;
GuessDrawingSize(drawing_width, drawing_height);
//int drawing_width, drawing_height;
//GuessDrawingSize(drawing_width, drawing_height);
int buffer_width = drawing_width;
int buffer_height = drawing_height;

View File

@ -717,7 +717,7 @@ void TransformDrawEngine::SoftwareTransformAndDraw(
memcpy(&transformed[index].u, uv, 3 * sizeof(float));
if (gstate_c.flipTexture)
transformed[index].v = 1.0f - transformed[index].v;
transformed[index].v = 1.0f - transformed[index].v * 2.0f;
for (int i = 0; i < 4; i++) {
transformed[index].color0[i] = c0[i] * 255.0f;

View File

@ -553,7 +553,7 @@ void GenerateVertexShader(int prim, char *buffer, bool useHWTransform) {
}
if (flipV)
WRITE(p, " v_texcoord.y = 1.0 - v_texcoord.y;\n");
WRITE(p, " v_texcoord.y = 1.0 - v_texcoord.y * 2.0;\n");
}
// Compute fogdepth