softgpu: Don't multithread small triangles.
It ends up being slower with all the overhead, of course.
This commit is contained in:
parent
b33d0c4046
commit
c3530a6674
1 changed files with 11 additions and 4 deletions
|
@ -1202,10 +1202,17 @@ void DrawTriangle(const VertexData& v0, const VertexData& v1, const VertexData&
|
|||
maxY = std::min(maxY, (int)TransformUnit::DrawingToScreen(scissorBR).y);
|
||||
|
||||
int range = (maxY - minY) / 16 + 1;
|
||||
if (gstate.isModeClear())
|
||||
GlobalThreadPool::Loop(std::bind(&DrawTriangleSlice<true>, v0, v1, v2, minX, minY, maxX, maxY, placeholder::_1, placeholder::_2), 0, range);
|
||||
else
|
||||
GlobalThreadPool::Loop(std::bind(&DrawTriangleSlice<false>, v0, v1, v2, minX, minY, maxX, maxY, placeholder::_1, placeholder::_2), 0, range);
|
||||
if (gstate.isModeClear()) {
|
||||
if (range >= 24)
|
||||
GlobalThreadPool::Loop(std::bind(&DrawTriangleSlice<true>, v0, v1, v2, minX, minY, maxX, maxY, placeholder::_1, placeholder::_2), 0, range);
|
||||
else
|
||||
DrawTriangleSlice<true>(v0, v1, v2, minX, minY, maxX, maxY, 0, range);
|
||||
} else {
|
||||
if (range >= 24)
|
||||
GlobalThreadPool::Loop(std::bind(&DrawTriangleSlice<false>, v0, v1, v2, minX, minY, maxX, maxY, placeholder::_1, placeholder::_2), 0, range);
|
||||
else
|
||||
DrawTriangleSlice<false>(v0, v1, v2, minX, minY, maxX, maxY, 0, range);
|
||||
}
|
||||
}
|
||||
|
||||
void DrawPoint(const VertexData &v0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue