diff options
| author | 2019-09-29 20:45:12 -0300 | |
|---|---|---|
| committer | 2019-10-05 04:07:47 +0000 | |
| commit | fe7f20e6590399523b8d40d644b5a44ed68a65cf (patch) | |
| tree | 10a5d8a6d2f5298d19c0f307479c87a2922f80f1 | |
| parent | Merge pull request #2923 from yuzu-emu/revert-2574-dynarmic-jit-nullptr (diff) | |
| download | yuzu-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.
| -rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 5 | ||||
| -rw-r--r-- | src/video_core/engines/maxwell_3d.h | 6 |
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 | ||
| 254 | void Maxwell3D::CallMacroMethod(u32 method, std::size_t num_parameters, const u32* parameters) { | 259 | void 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); | |||
| 1400 | ASSERT_REG_POSITION(stencil_back_func_mask, 0x3D7); | 1403 | ASSERT_REG_POSITION(stencil_back_func_mask, 0x3D7); |
| 1401 | ASSERT_REG_POSITION(color_mask_common, 0x3E4); | 1404 | ASSERT_REG_POSITION(color_mask_common, 0x3E4); |
| 1402 | ASSERT_REG_POSITION(rt_separate_frag_data, 0x3EB); | 1405 | ASSERT_REG_POSITION(rt_separate_frag_data, 0x3EB); |
| 1406 | ASSERT_REG_POSITION(depth_bounds, 0x3EC); | ||
| 1403 | ASSERT_REG_POSITION(zeta, 0x3F8); | 1407 | ASSERT_REG_POSITION(zeta, 0x3F8); |
| 1404 | ASSERT_REG_POSITION(clear_flags, 0x43E); | 1408 | ASSERT_REG_POSITION(clear_flags, 0x43E); |
| 1405 | ASSERT_REG_POSITION(vertex_attrib_format, 0x458); | 1409 | ASSERT_REG_POSITION(vertex_attrib_format, 0x458); |