mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
softgpu: Avoid unnecessary flushing for curves.
We don't need to flush all drawing between curves in softgpu, let them queue up.
This commit is contained in:
parent
337518415e
commit
fc39f042ae
4 changed files with 9 additions and 3 deletions
|
@ -147,6 +147,8 @@ protected:
|
|||
|
||||
bool useHWTransform_ = false;
|
||||
bool useHWTessellation_ = false;
|
||||
// Used to prevent unnecessary flushing in softgpu.
|
||||
bool flushOnParams_ = true;
|
||||
|
||||
// Vertex collector buffers
|
||||
u8 *decoded = nullptr;
|
||||
|
|
|
@ -577,7 +577,8 @@ void DrawEngineCommon::SubmitCurve(const void *control_points, const void *indic
|
|||
if (output.count)
|
||||
DispatchSubmitPrim(output.vertices, output.indices, PatchPrimToPrim(surface.primType), output.count, vertTypeID, gstate.getCullMode(), &generatedBytesRead);
|
||||
|
||||
DispatchFlush();
|
||||
if (flushOnParams_)
|
||||
DispatchFlush();
|
||||
|
||||
if (origVertType & GE_VTYPE_TC_MASK) {
|
||||
gstate_c.uv = prevUVScale;
|
||||
|
|
|
@ -1942,7 +1942,8 @@ void GPUCommon::Execute_Bezier(u32 op, u32 diff) {
|
|||
}
|
||||
|
||||
// Can't flush after setting gstate_c.submitType below since it'll be a mess - it must be done already.
|
||||
drawEngineCommon_->DispatchFlush();
|
||||
if (flushOnParams_)
|
||||
drawEngineCommon_->DispatchFlush();
|
||||
|
||||
Spline::BezierSurface surface;
|
||||
surface.tess_u = gstate.getPatchDivisionU();
|
||||
|
@ -2014,7 +2015,8 @@ void GPUCommon::Execute_Spline(u32 op, u32 diff) {
|
|||
}
|
||||
|
||||
// Can't flush after setting gstate_c.submitType below since it'll be a mess - it must be done already.
|
||||
drawEngineCommon_->DispatchFlush();
|
||||
if (flushOnParams_)
|
||||
drawEngineCommon_->DispatchFlush();
|
||||
|
||||
Spline::SplineSurface surface;
|
||||
surface.tess_u = gstate.getPatchDivisionU();
|
||||
|
|
|
@ -54,6 +54,7 @@ SoftwareDrawEngine::SoftwareDrawEngine() {
|
|||
// All this is a LOT of memory, need to see if we can cut down somehow. Used for splines.
|
||||
decoded = (u8 *)AllocateMemoryPages(DECODED_VERTEX_BUFFER_SIZE, MEM_PROT_READ | MEM_PROT_WRITE);
|
||||
decIndex = (u16 *)AllocateMemoryPages(DECODED_INDEX_BUFFER_SIZE, MEM_PROT_READ | MEM_PROT_WRITE);
|
||||
flushOnParams_ = false;
|
||||
}
|
||||
|
||||
SoftwareDrawEngine::~SoftwareDrawEngine() {
|
||||
|
|
Loading…
Add table
Reference in a new issue