[GPU] Fix quads>triangles cvar, primitive type test cases

This commit is contained in:
Triang3l 2021-12-12 18:28:02 +03:00
parent 0846cc026d
commit e25167d2bc
2 changed files with 11 additions and 1 deletions

View File

@ -331,7 +331,7 @@ bool PrimitiveProcessor::Process(ProcessingResult& result_out) {
break;
case xenos::PrimitiveType::kQuadList:
if (convert_quad_lists_to_triangle_lists_) {
host_primitive_type = xenos::PrimitiveType::kQuadList;
host_primitive_type = xenos::PrimitiveType::kTriangleList;
}
break;
default:

View File

@ -509,6 +509,14 @@ class PrimitiveProcessor {
}
};
// Triangle fan test cases:
// - 4D5307E6 - main menu - game logo, developer logo, backgrounds of the menu
// item list (the whole menu and individual items) - no index buffer.
// - 4E4D87E6 - terrain - with an index buffer and primitive reset (note that
// there, vfetch indices are computed in the vertex shader, involving
// floating-point reciprocal, so this case is very sensitive to rounding,
// and incorrect geometry may occur not because of vertex grouping issues,
// but also due to the behavior of the vertex shader).
// Triangle fans as triangle lists.
// Ordered as (v1, v2, v0), (v2, v3, v0) in Direct3D.
// https://docs.microsoft.com/en-us/windows/desktop/direct3d9/triangle-fans
@ -565,6 +573,8 @@ class PrimitiveProcessor {
uint32_t source_index_count,
const PassthroughIndexTransform& index_transform);
// Quad list test cases:
// - 4D5307E6 - main menu - flying dust on the road - no index buffer.
static constexpr uint32_t GetQuadListTriangleListIndexCount(
uint32_t quad_list_index_count) {
return (quad_list_index_count / 4) * 6;