[GPU] Use polygon mode only for DualMode, not non-Disabled
This commit is contained in:
parent
3f156f26c4
commit
22ee200f3e
|
@ -1444,7 +1444,7 @@ bool PipelineCache::GetCurrentStateDescription(
|
||||||
poly_offset_scale = regs[XE_GPU_REG_PA_SU_POLY_OFFSET_BACK_SCALE].f32;
|
poly_offset_scale = regs[XE_GPU_REG_PA_SU_POLY_OFFSET_BACK_SCALE].f32;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pa_su_sc_mode_cntl.poly_mode == xenos::PolygonModeEnable::kDisabled) {
|
if (pa_su_sc_mode_cntl.poly_mode != xenos::PolygonModeEnable::kDualMode) {
|
||||||
description_out.fill_mode_wireframe = 0;
|
description_out.fill_mode_wireframe = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -334,7 +334,11 @@ union alignas(uint32_t) PA_SU_SC_MODE_CNTL {
|
||||||
uint32_t cull_front : 1; // +0
|
uint32_t cull_front : 1; // +0
|
||||||
uint32_t cull_back : 1; // +1
|
uint32_t cull_back : 1; // +1
|
||||||
// 0 - front is CCW, 1 - front is CW.
|
// 0 - front is CCW, 1 - front is CW.
|
||||||
uint32_t face : 1; // +2
|
uint32_t face : 1; // +2
|
||||||
|
// The game Fuse uses poly_mode 2 for triangles, which is "reserved" on R6xx
|
||||||
|
// and not defined on Adreno 2xx, but polymode_front/back_ptype are 0
|
||||||
|
// (points) in this case in Fuse, which should not be respected for
|
||||||
|
// non-kDualMode as the game wants to draw filled triangles.
|
||||||
xenos::PolygonModeEnable poly_mode : 2; // +3
|
xenos::PolygonModeEnable poly_mode : 2; // +3
|
||||||
xenos::PolygonType polymode_front_ptype : 3; // +5
|
xenos::PolygonType polymode_front_ptype : 3; // +5
|
||||||
xenos::PolygonType polymode_back_ptype : 3; // +8
|
xenos::PolygonType polymode_back_ptype : 3; // +8
|
||||||
|
|
|
@ -753,6 +753,10 @@ enum class TessellationMode : uint32_t {
|
||||||
enum class PolygonModeEnable : uint32_t {
|
enum class PolygonModeEnable : uint32_t {
|
||||||
kDisabled = 0, // Render triangles.
|
kDisabled = 0, // Render triangles.
|
||||||
kDualMode = 1, // Send 2 sets of 3 polygons with the specified polygon type.
|
kDualMode = 1, // Send 2 sets of 3 polygons with the specified polygon type.
|
||||||
|
// The game Fuse uses 2 for triangles, which is "reserved" on R6xx and not
|
||||||
|
// defined on Adreno 2xx, but polymode_front/back_ptype are 0 (points) in this
|
||||||
|
// case in Fuse, which should not be respected for non-kDualMode as the game
|
||||||
|
// wants to draw filled triangles.
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class PolygonType : uint32_t {
|
enum class PolygonType : uint32_t {
|
||||||
|
|
Loading…
Reference in New Issue