summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-09-29 20:45:12 -0300
committerGravatar ReinUsesLisp2019-10-05 04:07:47 +0000
commitfe7f20e6590399523b8d40d644b5a44ed68a65cf (patch)
tree10a5d8a6d2f5298d19c0f307479c87a2922f80f1
parentMerge pull request #2923 from yuzu-emu/revert-2574-dynarmic-jit-nullptr (diff)
downloadyuzu-fe7f20e6590399523b8d40d644b5a44ed68a65cf.tar.gz
yuzu-fe7f20e6590399523b8d40d644b5a44ed68a65cf.tar.xz
yuzu-fe7f20e6590399523b8d40d644b5a44ed68a65cf.zip
maxwell_3d: Add dirty flags for depth bounds values
This is useful in Vulkan where we want to update depth bounds without caring if it's enabled or disabled through vkCmdSetDepthBounds.
Diffstat (limited to '')
-rw-r--r--src/video_core/engines/maxwell_3d.cpp5
-rw-r--r--src/video_core/engines/maxwell_3d.h6
2 files changed, 10 insertions, 1 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index b318aedb8..7802fd808 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -249,6 +249,11 @@ void Maxwell3D::InitDirtySettings() {
249 dirty_pointers[MAXWELL3D_REG_INDEX(polygon_offset_units)] = polygon_offset_dirty_reg; 249 dirty_pointers[MAXWELL3D_REG_INDEX(polygon_offset_units)] = polygon_offset_dirty_reg;
250 dirty_pointers[MAXWELL3D_REG_INDEX(polygon_offset_factor)] = polygon_offset_dirty_reg; 250 dirty_pointers[MAXWELL3D_REG_INDEX(polygon_offset_factor)] = polygon_offset_dirty_reg;
251 dirty_pointers[MAXWELL3D_REG_INDEX(polygon_offset_clamp)] = polygon_offset_dirty_reg; 251 dirty_pointers[MAXWELL3D_REG_INDEX(polygon_offset_clamp)] = polygon_offset_dirty_reg;
252
253 // Depth bounds
254 constexpr u32 depth_bounds_values_dirty_reg = DIRTY_REGS_POS(depth_bounds_values);
255 dirty_pointers[MAXWELL3D_REG_INDEX(depth_bounds[0])] = depth_bounds_values_dirty_reg;
256 dirty_pointers[MAXWELL3D_REG_INDEX(depth_bounds[1])] = depth_bounds_values_dirty_reg;
252} 257}
253 258
254void Maxwell3D::CallMacroMethod(u32 method, std::size_t num_parameters, const u32* parameters) { 259void Maxwell3D::CallMacroMethod(u32 method, std::size_t num_parameters, const u32* parameters) {
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index 4c97759ed..e3f1047d5 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -687,7 +687,9 @@ public:
687 687
688 u32 rt_separate_frag_data; 688 u32 rt_separate_frag_data;
689 689
690 INSERT_PADDING_WORDS(0xC); 690 f32 depth_bounds[2];
691
692 INSERT_PADDING_WORDS(0xA);
691 693
692 struct { 694 struct {
693 u32 address_high; 695 u32 address_high;
@@ -1201,6 +1203,7 @@ public:
1201 bool transform_feedback; 1203 bool transform_feedback;
1202 bool color_mask; 1204 bool color_mask;
1203 bool polygon_offset; 1205 bool polygon_offset;
1206 bool depth_bounds_values;
1204 1207
1205 // Complementary 1208 // Complementary
1206 bool viewport_transform; 1209 bool viewport_transform;
@@ -1400,6 +1403,7 @@ ASSERT_REG_POSITION(stencil_back_mask, 0x3D6);
1400ASSERT_REG_POSITION(stencil_back_func_mask, 0x3D7); 1403ASSERT_REG_POSITION(stencil_back_func_mask, 0x3D7);
1401ASSERT_REG_POSITION(color_mask_common, 0x3E4); 1404ASSERT_REG_POSITION(color_mask_common, 0x3E4);
1402ASSERT_REG_POSITION(rt_separate_frag_data, 0x3EB); 1405ASSERT_REG_POSITION(rt_separate_frag_data, 0x3EB);
1406ASSERT_REG_POSITION(depth_bounds, 0x3EC);
1403ASSERT_REG_POSITION(zeta, 0x3F8); 1407ASSERT_REG_POSITION(zeta, 0x3F8);
1404ASSERT_REG_POSITION(clear_flags, 0x43E); 1408ASSERT_REG_POSITION(clear_flags, 0x43E);
1405ASSERT_REG_POSITION(vertex_attrib_format, 0x458); 1409ASSERT_REG_POSITION(vertex_attrib_format, 0x458);