mirror of
https://github.com/libretro/ppsspp.git
synced 2025-02-01 06:12:43 +00:00
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:
commit
c71ae64454
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user