mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-02-17 04:39:34 +00:00
GPU: Update viewport params before sw transform.
This commit is contained in:
parent
3730460bc5
commit
f35c7d04bd
@ -588,6 +588,15 @@ rotateVBO:
|
||||
params.provokeFlatFirst = true;
|
||||
params.flippedY = false;
|
||||
|
||||
// We need correct viewport values in gstate_c already.
|
||||
if (gstate_c.IsDirty(DIRTY_VIEWPORTSCISSOR_STATE)) {
|
||||
ViewportAndScissor vpAndScissor;
|
||||
ConvertViewportAndScissor(framebufferManager_->UseBufferedRendering(),
|
||||
framebufferManager_->GetRenderWidth(), framebufferManager_->GetRenderHeight(),
|
||||
framebufferManager_->GetTargetBufferWidth(), framebufferManager_->GetTargetBufferHeight(),
|
||||
vpAndScissor);
|
||||
}
|
||||
|
||||
int maxIndex = indexGen.MaxIndex();
|
||||
SoftwareTransform swTransform(params);
|
||||
swTransform.Decode(prim, dec_->VertexType(), dec_->GetDecVtxFmt(), maxIndex, &result);
|
||||
|
@ -557,6 +557,15 @@ rotateVBO:
|
||||
params.provokeFlatFirst = true;
|
||||
params.flippedY = false;
|
||||
|
||||
// We need correct viewport values in gstate_c already.
|
||||
if (gstate_c.IsDirty(DIRTY_VIEWPORTSCISSOR_STATE)) {
|
||||
ViewportAndScissor vpAndScissor;
|
||||
ConvertViewportAndScissor(framebufferManager_->UseBufferedRendering(),
|
||||
framebufferManager_->GetRenderWidth(), framebufferManager_->GetRenderHeight(),
|
||||
framebufferManager_->GetTargetBufferWidth(), framebufferManager_->GetTargetBufferHeight(),
|
||||
vpAndScissor);
|
||||
}
|
||||
|
||||
int maxIndex = indexGen.MaxIndex();
|
||||
SoftwareTransform swTransform(params);
|
||||
swTransform.Decode(prim, dec_->VertexType(), dec_->GetDecVtxFmt(), maxIndex, &result);
|
||||
|
@ -565,6 +565,14 @@ void DrawEngineGLES::DoFlush() {
|
||||
params.provokeFlatFirst = false;
|
||||
params.flippedY = !framebufferManager_->UseBufferedRendering();
|
||||
|
||||
// We need correct viewport values in gstate_c already.
|
||||
if (gstate_c.IsDirty(DIRTY_VIEWPORTSCISSOR_STATE)) {
|
||||
ConvertViewportAndScissor(framebufferManager_->UseBufferedRendering(),
|
||||
framebufferManager_->GetRenderWidth(), framebufferManager_->GetRenderHeight(),
|
||||
framebufferManager_->GetTargetBufferWidth(), framebufferManager_->GetTargetBufferHeight(),
|
||||
vpAndScissor);
|
||||
}
|
||||
|
||||
int maxIndex = indexGen.MaxIndex();
|
||||
int vertexCount = indexGen.VertexCount();
|
||||
|
||||
|
@ -915,8 +915,11 @@ void DrawEngineVulkan::DoFlush() {
|
||||
// We don't have a "DrawStateEarly" in vulkan, so...
|
||||
// TODO: Probably should eventually refactor this and feed the vp size into SoftwareTransform directly (Unknown's idea).
|
||||
if (gstate_c.IsDirty(DIRTY_VIEWPORTSCISSOR_STATE)) {
|
||||
gstate_c.vpWidth = gstate.getViewportXScale() * 2.0f;
|
||||
gstate_c.vpHeight = gstate.getViewportYScale() * 2.0f;
|
||||
ViewportAndScissor vpAndScissor;
|
||||
ConvertViewportAndScissor(framebufferManager_->UseBufferedRendering(),
|
||||
framebufferManager_->GetRenderWidth(), framebufferManager_->GetRenderHeight(),
|
||||
framebufferManager_->GetTargetBufferWidth(), framebufferManager_->GetTargetBufferHeight(),
|
||||
vpAndScissor);
|
||||
}
|
||||
|
||||
int maxIndex = indexGen.MaxIndex();
|
||||
|
Loading…
x
Reference in New Issue
Block a user