mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	common/math_util: Move contents into the Common namespace
These types are within the common library, so they should be within the Common namespace.
This commit is contained in:
		
							parent
							
								
									643472e24a
								
							
						
					
					
						commit
						e1a4912ade
					
				
					 11 changed files with 85 additions and 83 deletions
				
			
		|  | @ -7,7 +7,7 @@ | ||||||
| #include <cstdlib> | #include <cstdlib> | ||||||
| #include <type_traits> | #include <type_traits> | ||||||
| 
 | 
 | ||||||
| namespace MathUtil { | namespace Common { | ||||||
| 
 | 
 | ||||||
| constexpr float PI = 3.14159265f; | constexpr float PI = 3.14159265f; | ||||||
| 
 | 
 | ||||||
|  | @ -41,4 +41,4 @@ struct Rectangle { | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } // namespace MathUtil
 | } // namespace Common
 | ||||||
|  |  | ||||||
|  | @ -22,11 +22,11 @@ u16 FramebufferLayout::GetScalingRatio() const { | ||||||
| 
 | 
 | ||||||
| // Finds the largest size subrectangle contained in window area that is confined to the aspect ratio
 | // Finds the largest size subrectangle contained in window area that is confined to the aspect ratio
 | ||||||
| template <class T> | template <class T> | ||||||
| static MathUtil::Rectangle<T> maxRectangle(MathUtil::Rectangle<T> window_area, | static Common::Rectangle<T> maxRectangle(Common::Rectangle<T> window_area, | ||||||
|                                          float screen_aspect_ratio) { |                                          float screen_aspect_ratio) { | ||||||
|     float scale = std::min(static_cast<float>(window_area.GetWidth()), |     float scale = std::min(static_cast<float>(window_area.GetWidth()), | ||||||
|                            window_area.GetHeight() / screen_aspect_ratio); |                            window_area.GetHeight() / screen_aspect_ratio); | ||||||
|     return MathUtil::Rectangle<T>{0, 0, static_cast<T>(std::round(scale)), |     return Common::Rectangle<T>{0, 0, static_cast<T>(std::round(scale)), | ||||||
|                                 static_cast<T>(std::round(scale * screen_aspect_ratio))}; |                                 static_cast<T>(std::round(scale * screen_aspect_ratio))}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -36,10 +36,10 @@ FramebufferLayout DefaultFrameLayout(unsigned width, unsigned height, bool swapp | ||||||
| 
 | 
 | ||||||
|     FramebufferLayout res{width, height, true, true, {}, {}}; |     FramebufferLayout res{width, height, true, true, {}, {}}; | ||||||
|     // Default layout gives equal screen sizes to the top and bottom screen
 |     // Default layout gives equal screen sizes to the top and bottom screen
 | ||||||
|     MathUtil::Rectangle<unsigned> screen_window_area{0, 0, width, height / 2}; |     Common::Rectangle<unsigned> screen_window_area{0, 0, width, height / 2}; | ||||||
|     MathUtil::Rectangle<unsigned> top_screen = |     Common::Rectangle<unsigned> top_screen = | ||||||
|         maxRectangle(screen_window_area, TOP_SCREEN_ASPECT_RATIO); |         maxRectangle(screen_window_area, TOP_SCREEN_ASPECT_RATIO); | ||||||
|     MathUtil::Rectangle<unsigned> bot_screen = |     Common::Rectangle<unsigned> bot_screen = | ||||||
|         maxRectangle(screen_window_area, BOT_SCREEN_ASPECT_RATIO); |         maxRectangle(screen_window_area, BOT_SCREEN_ASPECT_RATIO); | ||||||
| 
 | 
 | ||||||
|     float window_aspect_ratio = static_cast<float>(height) / width; |     float window_aspect_ratio = static_cast<float>(height) / width; | ||||||
|  | @ -77,10 +77,10 @@ FramebufferLayout SingleFrameLayout(unsigned width, unsigned height, bool swappe | ||||||
|     // so just calculate them both even if the other isn't showing.
 |     // so just calculate them both even if the other isn't showing.
 | ||||||
|     FramebufferLayout res{width, height, !swapped, swapped, {}, {}}; |     FramebufferLayout res{width, height, !swapped, swapped, {}, {}}; | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<unsigned> screen_window_area{0, 0, width, height}; |     Common::Rectangle<unsigned> screen_window_area{0, 0, width, height}; | ||||||
|     MathUtil::Rectangle<unsigned> top_screen = |     Common::Rectangle<unsigned> top_screen = | ||||||
|         maxRectangle(screen_window_area, TOP_SCREEN_ASPECT_RATIO); |         maxRectangle(screen_window_area, TOP_SCREEN_ASPECT_RATIO); | ||||||
|     MathUtil::Rectangle<unsigned> bot_screen = |     Common::Rectangle<unsigned> bot_screen = | ||||||
|         maxRectangle(screen_window_area, BOT_SCREEN_ASPECT_RATIO); |         maxRectangle(screen_window_area, BOT_SCREEN_ASPECT_RATIO); | ||||||
| 
 | 
 | ||||||
|     float window_aspect_ratio = static_cast<float>(height) / width; |     float window_aspect_ratio = static_cast<float>(height) / width; | ||||||
|  | @ -116,13 +116,12 @@ FramebufferLayout LargeFrameLayout(unsigned width, unsigned height, bool swapped | ||||||
|     float large_screen_aspect_ratio = swapped ? BOT_SCREEN_ASPECT_RATIO : TOP_SCREEN_ASPECT_RATIO; |     float large_screen_aspect_ratio = swapped ? BOT_SCREEN_ASPECT_RATIO : TOP_SCREEN_ASPECT_RATIO; | ||||||
|     float small_screen_aspect_ratio = swapped ? TOP_SCREEN_ASPECT_RATIO : BOT_SCREEN_ASPECT_RATIO; |     float small_screen_aspect_ratio = swapped ? TOP_SCREEN_ASPECT_RATIO : BOT_SCREEN_ASPECT_RATIO; | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<unsigned> screen_window_area{0, 0, width, height}; |     Common::Rectangle<unsigned> screen_window_area{0, 0, width, height}; | ||||||
|     MathUtil::Rectangle<unsigned> total_rect = |     Common::Rectangle<unsigned> total_rect = | ||||||
|         maxRectangle(screen_window_area, emulation_aspect_ratio); |         maxRectangle(screen_window_area, emulation_aspect_ratio); | ||||||
|     MathUtil::Rectangle<unsigned> large_screen = |     Common::Rectangle<unsigned> large_screen = maxRectangle(total_rect, large_screen_aspect_ratio); | ||||||
|         maxRectangle(total_rect, large_screen_aspect_ratio); |     Common::Rectangle<unsigned> fourth_size_rect = total_rect.Scale(.25f); | ||||||
|     MathUtil::Rectangle<unsigned> fourth_size_rect = total_rect.Scale(.25f); |     Common::Rectangle<unsigned> small_screen = | ||||||
|     MathUtil::Rectangle<unsigned> small_screen = |  | ||||||
|         maxRectangle(fourth_size_rect, small_screen_aspect_ratio); |         maxRectangle(fourth_size_rect, small_screen_aspect_ratio); | ||||||
| 
 | 
 | ||||||
|     if (window_aspect_ratio < emulation_aspect_ratio) { |     if (window_aspect_ratio < emulation_aspect_ratio) { | ||||||
|  | @ -149,13 +148,13 @@ FramebufferLayout SideFrameLayout(unsigned width, unsigned height, bool swapped) | ||||||
|     const float emulation_aspect_ratio = static_cast<float>(Core::kScreenTopHeight) / |     const float emulation_aspect_ratio = static_cast<float>(Core::kScreenTopHeight) / | ||||||
|                                          (Core::kScreenTopWidth + Core::kScreenBottomWidth); |                                          (Core::kScreenTopWidth + Core::kScreenBottomWidth); | ||||||
|     float window_aspect_ratio = static_cast<float>(height) / width; |     float window_aspect_ratio = static_cast<float>(height) / width; | ||||||
|     MathUtil::Rectangle<unsigned> screen_window_area{0, 0, width, height}; |     Common::Rectangle<unsigned> screen_window_area{0, 0, width, height}; | ||||||
|     // Find largest Rectangle that can fit in the window size with the given aspect ratio
 |     // Find largest Rectangle that can fit in the window size with the given aspect ratio
 | ||||||
|     MathUtil::Rectangle<unsigned> screen_rect = |     Common::Rectangle<unsigned> screen_rect = | ||||||
|         maxRectangle(screen_window_area, emulation_aspect_ratio); |         maxRectangle(screen_window_area, emulation_aspect_ratio); | ||||||
|     // Find sizes of top and bottom screen
 |     // Find sizes of top and bottom screen
 | ||||||
|     MathUtil::Rectangle<unsigned> top_screen = maxRectangle(screen_rect, TOP_SCREEN_ASPECT_RATIO); |     Common::Rectangle<unsigned> top_screen = maxRectangle(screen_rect, TOP_SCREEN_ASPECT_RATIO); | ||||||
|     MathUtil::Rectangle<unsigned> bot_screen = maxRectangle(screen_rect, BOT_SCREEN_ASPECT_RATIO); |     Common::Rectangle<unsigned> bot_screen = maxRectangle(screen_rect, BOT_SCREEN_ASPECT_RATIO); | ||||||
| 
 | 
 | ||||||
|     if (window_aspect_ratio < emulation_aspect_ratio) { |     if (window_aspect_ratio < emulation_aspect_ratio) { | ||||||
|         // Apply borders to the left and right sides of the window.
 |         // Apply borders to the left and right sides of the window.
 | ||||||
|  | @ -180,10 +179,10 @@ FramebufferLayout CustomFrameLayout(unsigned width, unsigned height) { | ||||||
| 
 | 
 | ||||||
|     FramebufferLayout res{width, height, true, true, {}, {}}; |     FramebufferLayout res{width, height, true, true, {}, {}}; | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<unsigned> top_screen{ |     Common::Rectangle<unsigned> top_screen{ | ||||||
|         Settings::values.custom_top_left, Settings::values.custom_top_top, |         Settings::values.custom_top_left, Settings::values.custom_top_top, | ||||||
|         Settings::values.custom_top_right, Settings::values.custom_top_bottom}; |         Settings::values.custom_top_right, Settings::values.custom_top_bottom}; | ||||||
|     MathUtil::Rectangle<unsigned> bot_screen{ |     Common::Rectangle<unsigned> bot_screen{ | ||||||
|         Settings::values.custom_bottom_left, Settings::values.custom_bottom_top, |         Settings::values.custom_bottom_left, Settings::values.custom_bottom_top, | ||||||
|         Settings::values.custom_bottom_right, Settings::values.custom_bottom_bottom}; |         Settings::values.custom_bottom_right, Settings::values.custom_bottom_bottom}; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -14,8 +14,8 @@ struct FramebufferLayout { | ||||||
|     unsigned height; |     unsigned height; | ||||||
|     bool top_screen_enabled; |     bool top_screen_enabled; | ||||||
|     bool bottom_screen_enabled; |     bool bottom_screen_enabled; | ||||||
|     MathUtil::Rectangle<unsigned> top_screen; |     Common::Rectangle<unsigned> top_screen; | ||||||
|     MathUtil::Rectangle<unsigned> bottom_screen; |     Common::Rectangle<unsigned> bottom_screen; | ||||||
| 
 | 
 | ||||||
|     /**
 |     /**
 | ||||||
|      * Returns the ration of pixel size of the top screen, compared to the native size of the 3DS |      * Returns the ration of pixel size of the top screen, compared to the native size of the 3DS | ||||||
|  |  | ||||||
|  | @ -46,7 +46,7 @@ public: | ||||||
|             } else { |             } else { | ||||||
|                 tilt_direction = mouse_move.Cast<float>(); |                 tilt_direction = mouse_move.Cast<float>(); | ||||||
|                 tilt_angle = std::clamp(tilt_direction.Normalize() * sensitivity, 0.0f, |                 tilt_angle = std::clamp(tilt_direction.Normalize() * sensitivity, 0.0f, | ||||||
|                                         MathUtil::PI * this->tilt_clamp / 180.0f); |                                         Common::PI * this->tilt_clamp / 180.0f); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | @ -109,7 +109,7 @@ private: | ||||||
| 
 | 
 | ||||||
|             // Find the angular rate vector in world space
 |             // Find the angular rate vector in world space
 | ||||||
|             auto angular_rate = ((q - old_q) * inv_q).xyz * 2; |             auto angular_rate = ((q - old_q) * inv_q).xyz * 2; | ||||||
|             angular_rate *= 1000 / update_millisecond / MathUtil::PI * 180; |             angular_rate *= 1000 / update_millisecond / Common::PI * 180; | ||||||
| 
 | 
 | ||||||
|             // Transform the two vectors from world space to 3DS space
 |             // Transform the two vectors from world space to 3DS space
 | ||||||
|             gravity = QuaternionRotate(inv_q, gravity); |             gravity = QuaternionRotate(inv_q, gravity); | ||||||
|  |  | ||||||
|  | @ -217,7 +217,8 @@ void TestCommunication(const std::string& host, u16 port, u8 pad_index, u32 clie | ||||||
|             success_callback(); |             success_callback(); | ||||||
|         else |         else | ||||||
|             failure_callback(); |             failure_callback(); | ||||||
|     }).detach(); |     }) | ||||||
|  |         .detach(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CalibrationConfigurationJob::CalibrationConfigurationJob( | CalibrationConfigurationJob::CalibrationConfigurationJob( | ||||||
|  | @ -268,7 +269,8 @@ CalibrationConfigurationJob::CalibrationConfigurationJob( | ||||||
|         complete_event.Wait(); |         complete_event.Wait(); | ||||||
|         socket.Stop(); |         socket.Stop(); | ||||||
|         worker_thread.join(); |         worker_thread.join(); | ||||||
|     }).detach(); |     }) | ||||||
|  |         .detach(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| CalibrationConfigurationJob::~CalibrationConfigurationJob() { | CalibrationConfigurationJob::~CalibrationConfigurationJob() { | ||||||
|  |  | ||||||
|  | @ -522,7 +522,7 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) { | ||||||
|         (write_depth_fb || regs.framebuffer.output_merger.depth_test_enable != 0 || |         (write_depth_fb || regs.framebuffer.output_merger.depth_test_enable != 0 || | ||||||
|          (has_stencil && state.stencil.test_enabled)); |          (has_stencil && state.stencil.test_enabled)); | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<s32> viewport_rect_unscaled{ |     Common::Rectangle<s32> viewport_rect_unscaled{ | ||||||
|         // These registers hold half-width and half-height, so must be multiplied by 2
 |         // These registers hold half-width and half-height, so must be multiplied by 2
 | ||||||
|         regs.rasterizer.viewport_corner.x,  // left
 |         regs.rasterizer.viewport_corner.x,  // left
 | ||||||
|         regs.rasterizer.viewport_corner.y + // top
 |         regs.rasterizer.viewport_corner.y + // top
 | ||||||
|  | @ -536,7 +536,7 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) { | ||||||
| 
 | 
 | ||||||
|     Surface color_surface; |     Surface color_surface; | ||||||
|     Surface depth_surface; |     Surface depth_surface; | ||||||
|     MathUtil::Rectangle<u32> surfaces_rect; |     Common::Rectangle<u32> surfaces_rect; | ||||||
|     std::tie(color_surface, depth_surface, surfaces_rect) = |     std::tie(color_surface, depth_surface, surfaces_rect) = | ||||||
|         res_cache.GetFramebufferSurfaces(using_color_fb, using_depth_fb, viewport_rect_unscaled); |         res_cache.GetFramebufferSurfaces(using_color_fb, using_depth_fb, viewport_rect_unscaled); | ||||||
| 
 | 
 | ||||||
|  | @ -544,7 +544,7 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) { | ||||||
|                               ? color_surface->res_scale |                               ? color_surface->res_scale | ||||||
|                               : (depth_surface == nullptr ? 1u : depth_surface->res_scale); |                               : (depth_surface == nullptr ? 1u : depth_surface->res_scale); | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> draw_rect{ |     Common::Rectangle<u32> draw_rect{ | ||||||
|         static_cast<u32>(std::clamp<s32>(static_cast<s32>(surfaces_rect.left) + |         static_cast<u32>(std::clamp<s32>(static_cast<s32>(surfaces_rect.left) + | ||||||
|                                              viewport_rect_unscaled.left * res_scale, |                                              viewport_rect_unscaled.left * res_scale, | ||||||
|                                          surfaces_rect.left, surfaces_rect.right)), // Left
 |                                          surfaces_rect.left, surfaces_rect.right)), // Left
 | ||||||
|  | @ -841,8 +841,8 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Mark framebuffer surfaces as dirty
 |     // Mark framebuffer surfaces as dirty
 | ||||||
|     MathUtil::Rectangle<u32> draw_rect_unscaled{ |     Common::Rectangle<u32> draw_rect_unscaled{draw_rect.left / res_scale, draw_rect.top / res_scale, | ||||||
|         draw_rect.left / res_scale, draw_rect.top / res_scale, draw_rect.right / res_scale, |                                               draw_rect.right / res_scale, | ||||||
|                                               draw_rect.bottom / res_scale}; |                                               draw_rect.bottom / res_scale}; | ||||||
| 
 | 
 | ||||||
|     if (color_surface != nullptr && write_color_fb) { |     if (color_surface != nullptr && write_color_fb) { | ||||||
|  | @ -1392,7 +1392,7 @@ bool RasterizerOpenGL::AccelerateDisplayTransfer(const GPU::Regs::DisplayTransfe | ||||||
|     dst_params.pixel_format = SurfaceParams::PixelFormatFromGPUPixelFormat(config.output_format); |     dst_params.pixel_format = SurfaceParams::PixelFormatFromGPUPixelFormat(config.output_format); | ||||||
|     dst_params.UpdateParams(); |     dst_params.UpdateParams(); | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> src_rect; |     Common::Rectangle<u32> src_rect; | ||||||
|     Surface src_surface; |     Surface src_surface; | ||||||
|     std::tie(src_surface, src_rect) = |     std::tie(src_surface, src_rect) = | ||||||
|         res_cache.GetSurfaceSubRect(src_params, ScaleMatch::Ignore, true); |         res_cache.GetSurfaceSubRect(src_params, ScaleMatch::Ignore, true); | ||||||
|  | @ -1401,7 +1401,7 @@ bool RasterizerOpenGL::AccelerateDisplayTransfer(const GPU::Regs::DisplayTransfe | ||||||
| 
 | 
 | ||||||
|     dst_params.res_scale = src_surface->res_scale; |     dst_params.res_scale = src_surface->res_scale; | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> dst_rect; |     Common::Rectangle<u32> dst_rect; | ||||||
|     Surface dst_surface; |     Surface dst_surface; | ||||||
|     std::tie(dst_surface, dst_rect) = |     std::tie(dst_surface, dst_rect) = | ||||||
|         res_cache.GetSurfaceSubRect(dst_params, ScaleMatch::Upscale, false); |         res_cache.GetSurfaceSubRect(dst_params, ScaleMatch::Upscale, false); | ||||||
|  | @ -1461,7 +1461,7 @@ bool RasterizerOpenGL::AccelerateTextureCopy(const GPU::Regs::DisplayTransferCon | ||||||
|     src_params.size = ((src_params.height - 1) * src_params.stride) + src_params.width; |     src_params.size = ((src_params.height - 1) * src_params.stride) + src_params.width; | ||||||
|     src_params.end = src_params.addr + src_params.size; |     src_params.end = src_params.addr + src_params.size; | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> src_rect; |     Common::Rectangle<u32> src_rect; | ||||||
|     Surface src_surface; |     Surface src_surface; | ||||||
|     std::tie(src_surface, src_rect) = res_cache.GetTexCopySurface(src_params); |     std::tie(src_surface, src_rect) = res_cache.GetTexCopySurface(src_params); | ||||||
|     if (src_surface == nullptr) { |     if (src_surface == nullptr) { | ||||||
|  | @ -1486,7 +1486,7 @@ bool RasterizerOpenGL::AccelerateTextureCopy(const GPU::Regs::DisplayTransferCon | ||||||
| 
 | 
 | ||||||
|     // Since we are going to invalidate the gap if there is one, we will have to load it first
 |     // Since we are going to invalidate the gap if there is one, we will have to load it first
 | ||||||
|     const bool load_gap = output_gap != 0; |     const bool load_gap = output_gap != 0; | ||||||
|     MathUtil::Rectangle<u32> dst_rect; |     Common::Rectangle<u32> dst_rect; | ||||||
|     Surface dst_surface; |     Surface dst_surface; | ||||||
|     std::tie(dst_surface, dst_rect) = |     std::tie(dst_surface, dst_rect) = | ||||||
|         res_cache.GetSurfaceSubRect(dst_params, ScaleMatch::Upscale, load_gap); |         res_cache.GetSurfaceSubRect(dst_params, ScaleMatch::Upscale, load_gap); | ||||||
|  | @ -1532,7 +1532,7 @@ bool RasterizerOpenGL::AccelerateDisplay(const GPU::Regs::FramebufferConfig& con | ||||||
|     src_params.pixel_format = SurfaceParams::PixelFormatFromGPUPixelFormat(config.color_format); |     src_params.pixel_format = SurfaceParams::PixelFormatFromGPUPixelFormat(config.color_format); | ||||||
|     src_params.UpdateParams(); |     src_params.UpdateParams(); | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> src_rect; |     Common::Rectangle<u32> src_rect; | ||||||
|     Surface src_surface; |     Surface src_surface; | ||||||
|     std::tie(src_surface, src_rect) = |     std::tie(src_surface, src_rect) = | ||||||
|         res_cache.GetSurfaceSubRect(src_params, ScaleMatch::Ignore, true); |         res_cache.GetSurfaceSubRect(src_params, ScaleMatch::Ignore, true); | ||||||
|  | @ -1544,7 +1544,7 @@ bool RasterizerOpenGL::AccelerateDisplay(const GPU::Regs::FramebufferConfig& con | ||||||
|     u32 scaled_width = src_surface->GetScaledWidth(); |     u32 scaled_width = src_surface->GetScaledWidth(); | ||||||
|     u32 scaled_height = src_surface->GetScaledHeight(); |     u32 scaled_height = src_surface->GetScaledHeight(); | ||||||
| 
 | 
 | ||||||
|     screen_info.display_texcoords = MathUtil::Rectangle<float>( |     screen_info.display_texcoords = Common::Rectangle<float>( | ||||||
|         (float)src_rect.bottom / (float)scaled_height, (float)src_rect.left / (float)scaled_width, |         (float)src_rect.bottom / (float)scaled_height, (float)src_rect.left / (float)scaled_width, | ||||||
|         (float)src_rect.top / (float)scaled_height, (float)src_rect.right / (float)scaled_width); |         (float)src_rect.top / (float)scaled_height, (float)src_rect.right / (float)scaled_width); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -347,8 +347,8 @@ static void AllocateTextureCube(GLuint texture, const FormatTuple& format_tuple, | ||||||
|     cur_state.Apply(); |     cur_state.Apply(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static bool BlitTextures(GLuint src_tex, const MathUtil::Rectangle<u32>& src_rect, GLuint dst_tex, | static bool BlitTextures(GLuint src_tex, const Common::Rectangle<u32>& src_rect, GLuint dst_tex, | ||||||
|                          const MathUtil::Rectangle<u32>& dst_rect, SurfaceType type, |                          const Common::Rectangle<u32>& dst_rect, SurfaceType type, | ||||||
|                          GLuint read_fb_handle, GLuint draw_fb_handle) { |                          GLuint read_fb_handle, GLuint draw_fb_handle) { | ||||||
|     OpenGLState prev_state = OpenGLState::GetCurState(); |     OpenGLState prev_state = OpenGLState::GetCurState(); | ||||||
|     SCOPE_EXIT({ prev_state.Apply(); }); |     SCOPE_EXIT({ prev_state.Apply(); }); | ||||||
|  | @ -407,7 +407,7 @@ static bool BlitTextures(GLuint src_tex, const MathUtil::Rectangle<u32>& src_rec | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static bool FillSurface(const Surface& surface, const u8* fill_data, | static bool FillSurface(const Surface& surface, const u8* fill_data, | ||||||
|                         const MathUtil::Rectangle<u32>& fill_rect, GLuint draw_fb_handle) { |                         const Common::Rectangle<u32>& fill_rect, GLuint draw_fb_handle) { | ||||||
|     OpenGLState prev_state = OpenGLState::GetCurState(); |     OpenGLState prev_state = OpenGLState::GetCurState(); | ||||||
|     SCOPE_EXIT({ prev_state.Apply(); }); |     SCOPE_EXIT({ prev_state.Apply(); }); | ||||||
| 
 | 
 | ||||||
|  | @ -511,7 +511,7 @@ SurfaceParams SurfaceParams::FromInterval(SurfaceInterval interval) const { | ||||||
|     return params; |     return params; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| SurfaceInterval SurfaceParams::GetSubRectInterval(MathUtil::Rectangle<u32> unscaled_rect) const { | SurfaceInterval SurfaceParams::GetSubRectInterval(Common::Rectangle<u32> unscaled_rect) const { | ||||||
|     if (unscaled_rect.GetHeight() == 0 || unscaled_rect.GetWidth() == 0) { |     if (unscaled_rect.GetHeight() == 0 || unscaled_rect.GetWidth() == 0) { | ||||||
|         return {}; |         return {}; | ||||||
|     } |     } | ||||||
|  | @ -534,24 +534,24 @@ SurfaceInterval SurfaceParams::GetSubRectInterval(MathUtil::Rectangle<u32> unsca | ||||||
|     return {addr + BytesInPixels(pixel_offset), addr + BytesInPixels(pixel_offset + pixels)}; |     return {addr + BytesInPixels(pixel_offset), addr + BytesInPixels(pixel_offset + pixels)}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| MathUtil::Rectangle<u32> SurfaceParams::GetSubRect(const SurfaceParams& sub_surface) const { | Common::Rectangle<u32> SurfaceParams::GetSubRect(const SurfaceParams& sub_surface) const { | ||||||
|     const u32 begin_pixel_index = PixelsInBytes(sub_surface.addr - addr); |     const u32 begin_pixel_index = PixelsInBytes(sub_surface.addr - addr); | ||||||
| 
 | 
 | ||||||
|     if (is_tiled) { |     if (is_tiled) { | ||||||
|         const int x0 = (begin_pixel_index % (stride * 8)) / 8; |         const int x0 = (begin_pixel_index % (stride * 8)) / 8; | ||||||
|         const int y0 = (begin_pixel_index / (stride * 8)) * 8; |         const int y0 = (begin_pixel_index / (stride * 8)) * 8; | ||||||
|         // Top to bottom
 |         // Top to bottom
 | ||||||
|         return MathUtil::Rectangle<u32>(x0, height - y0, x0 + sub_surface.width, |         return Common::Rectangle<u32>(x0, height - y0, x0 + sub_surface.width, | ||||||
|                                       height - (y0 + sub_surface.height)); |                                       height - (y0 + sub_surface.height)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const int x0 = begin_pixel_index % stride; |     const int x0 = begin_pixel_index % stride; | ||||||
|     const int y0 = begin_pixel_index / stride; |     const int y0 = begin_pixel_index / stride; | ||||||
|     // Bottom to top
 |     // Bottom to top
 | ||||||
|     return MathUtil::Rectangle<u32>(x0, y0 + sub_surface.height, x0 + sub_surface.width, y0); |     return Common::Rectangle<u32>(x0, y0 + sub_surface.height, x0 + sub_surface.width, y0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| MathUtil::Rectangle<u32> SurfaceParams::GetScaledSubRect(const SurfaceParams& sub_surface) const { | Common::Rectangle<u32> SurfaceParams::GetScaledSubRect(const SurfaceParams& sub_surface) const { | ||||||
|     auto rect = GetSubRect(sub_surface); |     auto rect = GetSubRect(sub_surface); | ||||||
|     rect.left = rect.left * res_scale; |     rect.left = rect.left * res_scale; | ||||||
|     rect.right = rect.right * res_scale; |     rect.right = rect.right * res_scale; | ||||||
|  | @ -819,7 +819,7 @@ void CachedSurface::FlushGLBuffer(PAddr flush_start, PAddr flush_end) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| MICROPROFILE_DEFINE(OpenGL_TextureUL, "OpenGL", "Texture Upload", MP_RGB(128, 192, 64)); | MICROPROFILE_DEFINE(OpenGL_TextureUL, "OpenGL", "Texture Upload", MP_RGB(128, 192, 64)); | ||||||
| void CachedSurface::UploadGLTexture(const MathUtil::Rectangle<u32>& rect, GLuint read_fb_handle, | void CachedSurface::UploadGLTexture(const Common::Rectangle<u32>& rect, GLuint read_fb_handle, | ||||||
|                                     GLuint draw_fb_handle) { |                                     GLuint draw_fb_handle) { | ||||||
|     if (type == SurfaceType::Fill) |     if (type == SurfaceType::Fill) | ||||||
|         return; |         return; | ||||||
|  | @ -883,7 +883,7 @@ void CachedSurface::UploadGLTexture(const MathUtil::Rectangle<u32>& rect, GLuint | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| MICROPROFILE_DEFINE(OpenGL_TextureDL, "OpenGL", "Texture Download", MP_RGB(128, 192, 64)); | MICROPROFILE_DEFINE(OpenGL_TextureDL, "OpenGL", "Texture Download", MP_RGB(128, 192, 64)); | ||||||
| void CachedSurface::DownloadGLTexture(const MathUtil::Rectangle<u32>& rect, GLuint read_fb_handle, | void CachedSurface::DownloadGLTexture(const Common::Rectangle<u32>& rect, GLuint read_fb_handle, | ||||||
|                                       GLuint draw_fb_handle) { |                                       GLuint draw_fb_handle) { | ||||||
|     if (type == SurfaceType::Fill) |     if (type == SurfaceType::Fill) | ||||||
|         return; |         return; | ||||||
|  | @ -918,7 +918,7 @@ void CachedSurface::DownloadGLTexture(const MathUtil::Rectangle<u32>& rect, GLui | ||||||
|         OGLTexture unscaled_tex; |         OGLTexture unscaled_tex; | ||||||
|         unscaled_tex.Create(); |         unscaled_tex.Create(); | ||||||
| 
 | 
 | ||||||
|         MathUtil::Rectangle<u32> unscaled_tex_rect{0, rect.GetHeight(), rect.GetWidth(), 0}; |         Common::Rectangle<u32> unscaled_tex_rect{0, rect.GetHeight(), rect.GetWidth(), 0}; | ||||||
|         AllocateSurfaceTexture(unscaled_tex.handle, tuple, rect.GetWidth(), rect.GetHeight()); |         AllocateSurfaceTexture(unscaled_tex.handle, tuple, rect.GetWidth(), rect.GetHeight()); | ||||||
|         BlitTextures(texture.handle, scaled_rect, unscaled_tex.handle, unscaled_tex_rect, type, |         BlitTextures(texture.handle, scaled_rect, unscaled_tex.handle, unscaled_tex_rect, type, | ||||||
|                      read_fb_handle, draw_fb_handle); |                      read_fb_handle, draw_fb_handle); | ||||||
|  | @ -1122,9 +1122,9 @@ RasterizerCacheOpenGL::~RasterizerCacheOpenGL() { | ||||||
| 
 | 
 | ||||||
| MICROPROFILE_DEFINE(OpenGL_BlitSurface, "OpenGL", "BlitSurface", MP_RGB(128, 192, 64)); | MICROPROFILE_DEFINE(OpenGL_BlitSurface, "OpenGL", "BlitSurface", MP_RGB(128, 192, 64)); | ||||||
| bool RasterizerCacheOpenGL::BlitSurfaces(const Surface& src_surface, | bool RasterizerCacheOpenGL::BlitSurfaces(const Surface& src_surface, | ||||||
|                                          const MathUtil::Rectangle<u32>& src_rect, |                                          const Common::Rectangle<u32>& src_rect, | ||||||
|                                          const Surface& dst_surface, |                                          const Surface& dst_surface, | ||||||
|                                          const MathUtil::Rectangle<u32>& dst_rect) { |                                          const Common::Rectangle<u32>& dst_rect) { | ||||||
|     MICROPROFILE_SCOPE(OpenGL_BlitSurface); |     MICROPROFILE_SCOPE(OpenGL_BlitSurface); | ||||||
| 
 | 
 | ||||||
|     if (!SurfaceParams::CheckFormatsBlittable(src_surface->pixel_format, dst_surface->pixel_format)) |     if (!SurfaceParams::CheckFormatsBlittable(src_surface->pixel_format, dst_surface->pixel_format)) | ||||||
|  | @ -1138,9 +1138,9 @@ bool RasterizerCacheOpenGL::BlitSurfaces(const Surface& src_surface, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RasterizerCacheOpenGL::ConvertD24S8toABGR(GLuint src_tex, | void RasterizerCacheOpenGL::ConvertD24S8toABGR(GLuint src_tex, | ||||||
|                                                const MathUtil::Rectangle<u32>& src_rect, |                                                const Common::Rectangle<u32>& src_rect, | ||||||
|                                                GLuint dst_tex, |                                                GLuint dst_tex, | ||||||
|                                                const MathUtil::Rectangle<u32>& dst_rect) { |                                                const Common::Rectangle<u32>& dst_rect) { | ||||||
|     OpenGLState prev_state = OpenGLState::GetCurState(); |     OpenGLState prev_state = OpenGLState::GetCurState(); | ||||||
|     SCOPE_EXIT({ prev_state.Apply(); }); |     SCOPE_EXIT({ prev_state.Apply(); }); | ||||||
| 
 | 
 | ||||||
|  | @ -1247,7 +1247,7 @@ SurfaceRect_Tuple RasterizerCacheOpenGL::GetSurfaceSubRect(const SurfaceParams& | ||||||
|                                                            ScaleMatch match_res_scale, |                                                            ScaleMatch match_res_scale, | ||||||
|                                                            bool load_if_create) { |                                                            bool load_if_create) { | ||||||
|     if (params.addr == 0 || params.height * params.width == 0) { |     if (params.addr == 0 || params.height * params.width == 0) { | ||||||
|         return std::make_tuple(nullptr, MathUtil::Rectangle<u32>{}); |         return std::make_tuple(nullptr, Common::Rectangle<u32>{}); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Attempt to find encompassing surface
 |     // Attempt to find encompassing surface
 | ||||||
|  | @ -1340,7 +1340,7 @@ Surface RasterizerCacheOpenGL::GetTextureSurface(const Pica::Texture::TextureInf | ||||||
| 
 | 
 | ||||||
|     if (info.width % 8 != 0 || info.height % 8 != 0) { |     if (info.width % 8 != 0 || info.height % 8 != 0) { | ||||||
|         Surface src_surface; |         Surface src_surface; | ||||||
|         MathUtil::Rectangle<u32> rect; |         Common::Rectangle<u32> rect; | ||||||
|         std::tie(src_surface, rect) = GetSurfaceSubRect(params, ScaleMatch::Ignore, true); |         std::tie(src_surface, rect) = GetSurfaceSubRect(params, ScaleMatch::Ignore, true); | ||||||
| 
 | 
 | ||||||
|         params.res_scale = src_surface->res_scale; |         params.res_scale = src_surface->res_scale; | ||||||
|  | @ -1447,7 +1447,7 @@ const CachedTextureCube& RasterizerCacheOpenGL::GetTextureCube(const TextureCube | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| SurfaceSurfaceRect_Tuple RasterizerCacheOpenGL::GetFramebufferSurfaces( | SurfaceSurfaceRect_Tuple RasterizerCacheOpenGL::GetFramebufferSurfaces( | ||||||
|     bool using_color_fb, bool using_depth_fb, const MathUtil::Rectangle<s32>& viewport_rect) { |     bool using_color_fb, bool using_depth_fb, const Common::Rectangle<s32>& viewport_rect) { | ||||||
|     const auto& regs = Pica::g_state.regs; |     const auto& regs = Pica::g_state.regs; | ||||||
|     const auto& config = regs.framebuffer.framebuffer; |     const auto& config = regs.framebuffer.framebuffer; | ||||||
| 
 | 
 | ||||||
|  | @ -1461,7 +1461,7 @@ SurfaceSurfaceRect_Tuple RasterizerCacheOpenGL::GetFramebufferSurfaces( | ||||||
|         texture_cube_cache.clear(); |         texture_cube_cache.clear(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> viewport_clamped{ |     Common::Rectangle<u32> viewport_clamped{ | ||||||
|         static_cast<u32>(std::clamp(viewport_rect.left, 0, static_cast<s32>(config.GetWidth()))), |         static_cast<u32>(std::clamp(viewport_rect.left, 0, static_cast<s32>(config.GetWidth()))), | ||||||
|         static_cast<u32>(std::clamp(viewport_rect.top, 0, static_cast<s32>(config.GetHeight()))), |         static_cast<u32>(std::clamp(viewport_rect.top, 0, static_cast<s32>(config.GetHeight()))), | ||||||
|         static_cast<u32>(std::clamp(viewport_rect.right, 0, static_cast<s32>(config.GetWidth()))), |         static_cast<u32>(std::clamp(viewport_rect.right, 0, static_cast<s32>(config.GetWidth()))), | ||||||
|  | @ -1495,19 +1495,19 @@ SurfaceSurfaceRect_Tuple RasterizerCacheOpenGL::GetFramebufferSurfaces( | ||||||
|         using_depth_fb = false; |         using_depth_fb = false; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> color_rect{}; |     Common::Rectangle<u32> color_rect{}; | ||||||
|     Surface color_surface = nullptr; |     Surface color_surface = nullptr; | ||||||
|     if (using_color_fb) |     if (using_color_fb) | ||||||
|         std::tie(color_surface, color_rect) = |         std::tie(color_surface, color_rect) = | ||||||
|             GetSurfaceSubRect(color_params, ScaleMatch::Exact, false); |             GetSurfaceSubRect(color_params, ScaleMatch::Exact, false); | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> depth_rect{}; |     Common::Rectangle<u32> depth_rect{}; | ||||||
|     Surface depth_surface = nullptr; |     Surface depth_surface = nullptr; | ||||||
|     if (using_depth_fb) |     if (using_depth_fb) | ||||||
|         std::tie(depth_surface, depth_rect) = |         std::tie(depth_surface, depth_rect) = | ||||||
|             GetSurfaceSubRect(depth_params, ScaleMatch::Exact, false); |             GetSurfaceSubRect(depth_params, ScaleMatch::Exact, false); | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> fb_rect{}; |     Common::Rectangle<u32> fb_rect{}; | ||||||
|     if (color_surface != nullptr && depth_surface != nullptr) { |     if (color_surface != nullptr && depth_surface != nullptr) { | ||||||
|         fb_rect = color_rect; |         fb_rect = color_rect; | ||||||
|         // Color and Depth surfaces must have the same dimensions and offsets
 |         // Color and Depth surfaces must have the same dimensions and offsets
 | ||||||
|  | @ -1560,7 +1560,7 @@ Surface RasterizerCacheOpenGL::GetFillSurface(const GPU::Regs::MemoryFillConfig& | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| SurfaceRect_Tuple RasterizerCacheOpenGL::GetTexCopySurface(const SurfaceParams& params) { | SurfaceRect_Tuple RasterizerCacheOpenGL::GetTexCopySurface(const SurfaceParams& params) { | ||||||
|     MathUtil::Rectangle<u32> rect{}; |     Common::Rectangle<u32> rect{}; | ||||||
| 
 | 
 | ||||||
|     Surface match_surface = FindMatch<MatchFlags::TexCopy | MatchFlags::Invalid>( |     Surface match_surface = FindMatch<MatchFlags::TexCopy | MatchFlags::Invalid>( | ||||||
|         surface_cache, params, ScaleMatch::Ignore); |         surface_cache, params, ScaleMatch::Ignore); | ||||||
|  |  | ||||||
|  | @ -88,8 +88,8 @@ static_assert(std::is_same<SurfaceRegions::interval_type, SurfaceCache::interval | ||||||
|                   std::is_same<SurfaceMap::interval_type, SurfaceCache::interval_type>(), |                   std::is_same<SurfaceMap::interval_type, SurfaceCache::interval_type>(), | ||||||
|               "incorrect interval types"); |               "incorrect interval types"); | ||||||
| 
 | 
 | ||||||
| using SurfaceRect_Tuple = std::tuple<Surface, MathUtil::Rectangle<u32>>; | using SurfaceRect_Tuple = std::tuple<Surface, Common::Rectangle<u32>>; | ||||||
| using SurfaceSurfaceRect_Tuple = std::tuple<Surface, Surface, MathUtil::Rectangle<u32>>; | using SurfaceSurfaceRect_Tuple = std::tuple<Surface, Surface, Common::Rectangle<u32>>; | ||||||
| 
 | 
 | ||||||
| using PageMap = boost::icl::interval_map<u32, int>; | using PageMap = boost::icl::interval_map<u32, int>; | ||||||
| 
 | 
 | ||||||
|  | @ -250,7 +250,7 @@ struct SurfaceParams { | ||||||
|     // Returns the outer rectangle containing "interval"
 |     // Returns the outer rectangle containing "interval"
 | ||||||
|     SurfaceParams FromInterval(SurfaceInterval interval) const; |     SurfaceParams FromInterval(SurfaceInterval interval) const; | ||||||
| 
 | 
 | ||||||
|     SurfaceInterval GetSubRectInterval(MathUtil::Rectangle<u32> unscaled_rect) const; |     SurfaceInterval GetSubRectInterval(Common::Rectangle<u32> unscaled_rect) const; | ||||||
| 
 | 
 | ||||||
|     // Returns the region of the biggest valid rectange within interval
 |     // Returns the region of the biggest valid rectange within interval
 | ||||||
|     SurfaceInterval GetCopyableInterval(const Surface& src_surface) const; |     SurfaceInterval GetCopyableInterval(const Surface& src_surface) const; | ||||||
|  | @ -263,11 +263,11 @@ struct SurfaceParams { | ||||||
|         return height * res_scale; |         return height * res_scale; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> GetRect() const { |     Common::Rectangle<u32> GetRect() const { | ||||||
|         return {0, height, width, 0}; |         return {0, height, width, 0}; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> GetScaledRect() const { |     Common::Rectangle<u32> GetScaledRect() const { | ||||||
|         return {0, GetScaledHeight(), GetScaledWidth(), 0}; |         return {0, GetScaledHeight(), GetScaledWidth(), 0}; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -284,8 +284,8 @@ struct SurfaceParams { | ||||||
|     bool CanExpand(const SurfaceParams& expanded_surface) const; |     bool CanExpand(const SurfaceParams& expanded_surface) const; | ||||||
|     bool CanTexCopy(const SurfaceParams& texcopy_params) const; |     bool CanTexCopy(const SurfaceParams& texcopy_params) const; | ||||||
| 
 | 
 | ||||||
|     MathUtil::Rectangle<u32> GetSubRect(const SurfaceParams& sub_surface) const; |     Common::Rectangle<u32> GetSubRect(const SurfaceParams& sub_surface) const; | ||||||
|     MathUtil::Rectangle<u32> GetScaledSubRect(const SurfaceParams& sub_surface) const; |     Common::Rectangle<u32> GetScaledSubRect(const SurfaceParams& sub_surface) const; | ||||||
| 
 | 
 | ||||||
|     PAddr addr = 0; |     PAddr addr = 0; | ||||||
|     PAddr end = 0; |     PAddr end = 0; | ||||||
|  | @ -373,9 +373,9 @@ struct CachedSurface : SurfaceParams, std::enable_shared_from_this<CachedSurface | ||||||
|     void FlushGLBuffer(PAddr flush_start, PAddr flush_end); |     void FlushGLBuffer(PAddr flush_start, PAddr flush_end); | ||||||
| 
 | 
 | ||||||
|     // Upload/Download data in gl_buffer in/to this surface's texture
 |     // Upload/Download data in gl_buffer in/to this surface's texture
 | ||||||
|     void UploadGLTexture(const MathUtil::Rectangle<u32>& rect, GLuint read_fb_handle, |     void UploadGLTexture(const Common::Rectangle<u32>& rect, GLuint read_fb_handle, | ||||||
|                          GLuint draw_fb_handle); |                          GLuint draw_fb_handle); | ||||||
|     void DownloadGLTexture(const MathUtil::Rectangle<u32>& rect, GLuint read_fb_handle, |     void DownloadGLTexture(const Common::Rectangle<u32>& rect, GLuint read_fb_handle, | ||||||
|                            GLuint draw_fb_handle); |                            GLuint draw_fb_handle); | ||||||
| 
 | 
 | ||||||
|     std::shared_ptr<SurfaceWatcher> CreateWatcher() { |     std::shared_ptr<SurfaceWatcher> CreateWatcher() { | ||||||
|  | @ -413,11 +413,11 @@ public: | ||||||
|     ~RasterizerCacheOpenGL(); |     ~RasterizerCacheOpenGL(); | ||||||
| 
 | 
 | ||||||
|     /// Blit one surface's texture to another
 |     /// Blit one surface's texture to another
 | ||||||
|     bool BlitSurfaces(const Surface& src_surface, const MathUtil::Rectangle<u32>& src_rect, |     bool BlitSurfaces(const Surface& src_surface, const Common::Rectangle<u32>& src_rect, | ||||||
|                       const Surface& dst_surface, const MathUtil::Rectangle<u32>& dst_rect); |                       const Surface& dst_surface, const Common::Rectangle<u32>& dst_rect); | ||||||
| 
 | 
 | ||||||
|     void ConvertD24S8toABGR(GLuint src_tex, const MathUtil::Rectangle<u32>& src_rect, |     void ConvertD24S8toABGR(GLuint src_tex, const Common::Rectangle<u32>& src_rect, GLuint dst_tex, | ||||||
|                             GLuint dst_tex, const MathUtil::Rectangle<u32>& dst_rect); |                             const Common::Rectangle<u32>& dst_rect); | ||||||
| 
 | 
 | ||||||
|     /// Copy one surface's region to another
 |     /// Copy one surface's region to another
 | ||||||
|     void CopySurface(const Surface& src_surface, const Surface& dst_surface, |     void CopySurface(const Surface& src_surface, const Surface& dst_surface, | ||||||
|  | @ -441,7 +441,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     /// Get the color and depth surfaces based on the framebuffer configuration
 |     /// Get the color and depth surfaces based on the framebuffer configuration
 | ||||||
|     SurfaceSurfaceRect_Tuple GetFramebufferSurfaces(bool using_color_fb, bool using_depth_fb, |     SurfaceSurfaceRect_Tuple GetFramebufferSurfaces(bool using_color_fb, bool using_depth_fb, | ||||||
|                                                     const MathUtil::Rectangle<s32>& viewport_rect); |                                                     const Common::Rectangle<s32>& viewport_rect); | ||||||
| 
 | 
 | ||||||
|     /// Get a surface that matches the fill config
 |     /// Get a surface that matches the fill config
 | ||||||
|     Surface GetFillSurface(const GPU::Regs::MemoryFillConfig& config); |     Surface GetFillSurface(const GPU::Regs::MemoryFillConfig& config); | ||||||
|  |  | ||||||
|  | @ -221,7 +221,7 @@ void RendererOpenGL::LoadFBToScreenInfo(const GPU::Regs::FramebufferConfig& fram | ||||||
|                                          static_cast<u32>(pixel_stride), screen_info)) { |                                          static_cast<u32>(pixel_stride), screen_info)) { | ||||||
|         // Reset the screen info's display texture to its own permanent texture
 |         // Reset the screen info's display texture to its own permanent texture
 | ||||||
|         screen_info.display_texture = screen_info.texture.resource.handle; |         screen_info.display_texture = screen_info.texture.resource.handle; | ||||||
|         screen_info.display_texcoords = MathUtil::Rectangle<float>(0.f, 0.f, 1.f, 1.f); |         screen_info.display_texcoords = Common::Rectangle<float>(0.f, 0.f, 1.f, 1.f); | ||||||
| 
 | 
 | ||||||
|         Memory::RasterizerFlushRegion(framebuffer_addr, framebuffer.stride * framebuffer.height); |         Memory::RasterizerFlushRegion(framebuffer_addr, framebuffer.stride * framebuffer.height); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ struct TextureInfo { | ||||||
| /// Structure used for storing information about the display target for each 3DS screen
 | /// Structure used for storing information about the display target for each 3DS screen
 | ||||||
| struct ScreenInfo { | struct ScreenInfo { | ||||||
|     GLuint display_texture; |     GLuint display_texture; | ||||||
|     MathUtil::Rectangle<float> display_texcoords; |     Common::Rectangle<float> display_texcoords; | ||||||
|     TextureInfo texture; |     TextureInfo texture; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -152,7 +152,8 @@ inline void SetField<DebugDataRecord::COND_CMP_IN>(DebugDataRecord& record, bool | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template <> | template <> | ||||||
| inline void SetField<DebugDataRecord::LOOP_INT_IN>(DebugDataRecord& record, Common::Vec4<u8> value) { | inline void SetField<DebugDataRecord::LOOP_INT_IN>(DebugDataRecord& record, | ||||||
|  |                                                    Common::Vec4<u8> value) { | ||||||
|     record.loop_int = value; |     record.loop_int = value; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue