rsx: Fix draw count append when draw ranges are out of order

- It is common for draw counts to truncate at 256 even when it makes no sense to do so.
- e.g 256 is not a multiple of 3 so triangles will glitch out
This commit is contained in:
kd-11 2020-07-14 00:25:55 +03:00 committed by kd-11
parent 58e2465369
commit 182b20c33d

View File

@ -88,6 +88,7 @@ namespace rsx
// Add a new draw command
void append_draw_command(const draw_range_t& range)
{
current_range_index = draw_command_ranges.size();
draw_command_ranges.push_back(range);
}
@ -97,6 +98,7 @@ namespace rsx
auto range_It = draw_command_ranges.begin();
std::advance(range_It, index);
current_range_index = index;
draw_command_ranges.insert(range_It, range);
// Update all barrier draw ids after this one
@ -168,6 +170,9 @@ namespace rsx
*/
void compile()
{
// End draw call append mode
current_range_index = ~0u;
// TODO
}
@ -182,7 +187,7 @@ namespace rsx
if (!draw_command_ranges.empty())
{
auto& last = draw_command_ranges.back();
auto& last = draw_command_ranges[current_range_index];
if (last.count == 0)
{