mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +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
				
			
		| 
						 | 
				
			
			@ -522,7 +522,7 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) {
 | 
			
		|||
        (write_depth_fb || regs.framebuffer.output_merger.depth_test_enable != 0 ||
 | 
			
		||||
         (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
 | 
			
		||||
        regs.rasterizer.viewport_corner.x,  // left
 | 
			
		||||
        regs.rasterizer.viewport_corner.y + // top
 | 
			
		||||
| 
						 | 
				
			
			@ -536,7 +536,7 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) {
 | 
			
		|||
 | 
			
		||||
    Surface color_surface;
 | 
			
		||||
    Surface depth_surface;
 | 
			
		||||
    MathUtil::Rectangle<u32> surfaces_rect;
 | 
			
		||||
    Common::Rectangle<u32> surfaces_rect;
 | 
			
		||||
    std::tie(color_surface, depth_surface, surfaces_rect) =
 | 
			
		||||
        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
 | 
			
		||||
                              : (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) +
 | 
			
		||||
                                             viewport_rect_unscaled.left * res_scale,
 | 
			
		||||
                                         surfaces_rect.left, surfaces_rect.right)), // Left
 | 
			
		||||
| 
						 | 
				
			
			@ -841,9 +841,9 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    // Mark framebuffer surfaces as dirty
 | 
			
		||||
    MathUtil::Rectangle<u32> draw_rect_unscaled{
 | 
			
		||||
        draw_rect.left / res_scale, draw_rect.top / res_scale, draw_rect.right / res_scale,
 | 
			
		||||
        draw_rect.bottom / res_scale};
 | 
			
		||||
    Common::Rectangle<u32> draw_rect_unscaled{draw_rect.left / res_scale, draw_rect.top / res_scale,
 | 
			
		||||
                                              draw_rect.right / res_scale,
 | 
			
		||||
                                              draw_rect.bottom / res_scale};
 | 
			
		||||
 | 
			
		||||
    if (color_surface != nullptr && write_color_fb) {
 | 
			
		||||
        auto interval = color_surface->GetSubRectInterval(draw_rect_unscaled);
 | 
			
		||||
| 
						 | 
				
			
			@ -1392,7 +1392,7 @@ bool RasterizerOpenGL::AccelerateDisplayTransfer(const GPU::Regs::DisplayTransfe
 | 
			
		|||
    dst_params.pixel_format = SurfaceParams::PixelFormatFromGPUPixelFormat(config.output_format);
 | 
			
		||||
    dst_params.UpdateParams();
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> src_rect;
 | 
			
		||||
    Common::Rectangle<u32> src_rect;
 | 
			
		||||
    Surface src_surface;
 | 
			
		||||
    std::tie(src_surface, src_rect) =
 | 
			
		||||
        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;
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> dst_rect;
 | 
			
		||||
    Common::Rectangle<u32> dst_rect;
 | 
			
		||||
    Surface dst_surface;
 | 
			
		||||
    std::tie(dst_surface, dst_rect) =
 | 
			
		||||
        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.end = src_params.addr + src_params.size;
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> src_rect;
 | 
			
		||||
    Common::Rectangle<u32> src_rect;
 | 
			
		||||
    Surface src_surface;
 | 
			
		||||
    std::tie(src_surface, src_rect) = res_cache.GetTexCopySurface(src_params);
 | 
			
		||||
    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
 | 
			
		||||
    const bool load_gap = output_gap != 0;
 | 
			
		||||
    MathUtil::Rectangle<u32> dst_rect;
 | 
			
		||||
    Common::Rectangle<u32> dst_rect;
 | 
			
		||||
    Surface dst_surface;
 | 
			
		||||
    std::tie(dst_surface, dst_rect) =
 | 
			
		||||
        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.UpdateParams();
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> src_rect;
 | 
			
		||||
    Common::Rectangle<u32> src_rect;
 | 
			
		||||
    Surface src_surface;
 | 
			
		||||
    std::tie(src_surface, src_rect) =
 | 
			
		||||
        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_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.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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool BlitTextures(GLuint src_tex, const MathUtil::Rectangle<u32>& src_rect, GLuint dst_tex,
 | 
			
		||||
                         const MathUtil::Rectangle<u32>& dst_rect, SurfaceType type,
 | 
			
		||||
static bool BlitTextures(GLuint src_tex, const Common::Rectangle<u32>& src_rect, GLuint dst_tex,
 | 
			
		||||
                         const Common::Rectangle<u32>& dst_rect, SurfaceType type,
 | 
			
		||||
                         GLuint read_fb_handle, GLuint draw_fb_handle) {
 | 
			
		||||
    OpenGLState prev_state = OpenGLState::GetCurState();
 | 
			
		||||
    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,
 | 
			
		||||
                        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();
 | 
			
		||||
    SCOPE_EXIT({ prev_state.Apply(); });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -511,7 +511,7 @@ SurfaceParams SurfaceParams::FromInterval(SurfaceInterval interval) const {
 | 
			
		|||
    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) {
 | 
			
		||||
        return {};
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -534,24 +534,24 @@ SurfaceInterval SurfaceParams::GetSubRectInterval(MathUtil::Rectangle<u32> unsca
 | 
			
		|||
    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);
 | 
			
		||||
 | 
			
		||||
    if (is_tiled) {
 | 
			
		||||
        const int x0 = (begin_pixel_index % (stride * 8)) / 8;
 | 
			
		||||
        const int y0 = (begin_pixel_index / (stride * 8)) * 8;
 | 
			
		||||
        // Top to bottom
 | 
			
		||||
        return MathUtil::Rectangle<u32>(x0, height - y0, x0 + sub_surface.width,
 | 
			
		||||
                                        height - (y0 + sub_surface.height));
 | 
			
		||||
        return Common::Rectangle<u32>(x0, height - y0, x0 + sub_surface.width,
 | 
			
		||||
                                      height - (y0 + sub_surface.height));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const int x0 = begin_pixel_index % stride;
 | 
			
		||||
    const int y0 = begin_pixel_index / stride;
 | 
			
		||||
    // 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);
 | 
			
		||||
    rect.left = rect.left * 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));
 | 
			
		||||
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) {
 | 
			
		||||
    if (type == SurfaceType::Fill)
 | 
			
		||||
        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));
 | 
			
		||||
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) {
 | 
			
		||||
    if (type == SurfaceType::Fill)
 | 
			
		||||
        return;
 | 
			
		||||
| 
						 | 
				
			
			@ -918,7 +918,7 @@ void CachedSurface::DownloadGLTexture(const MathUtil::Rectangle<u32>& rect, GLui
 | 
			
		|||
        OGLTexture unscaled_tex;
 | 
			
		||||
        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());
 | 
			
		||||
        BlitTextures(texture.handle, scaled_rect, unscaled_tex.handle, unscaled_tex_rect, type,
 | 
			
		||||
                     read_fb_handle, draw_fb_handle);
 | 
			
		||||
| 
						 | 
				
			
			@ -1122,9 +1122,9 @@ RasterizerCacheOpenGL::~RasterizerCacheOpenGL() {
 | 
			
		|||
 | 
			
		||||
MICROPROFILE_DEFINE(OpenGL_BlitSurface, "OpenGL", "BlitSurface", MP_RGB(128, 192, 64));
 | 
			
		||||
bool RasterizerCacheOpenGL::BlitSurfaces(const Surface& src_surface,
 | 
			
		||||
                                         const MathUtil::Rectangle<u32>& src_rect,
 | 
			
		||||
                                         const Common::Rectangle<u32>& src_rect,
 | 
			
		||||
                                         const Surface& dst_surface,
 | 
			
		||||
                                         const MathUtil::Rectangle<u32>& dst_rect) {
 | 
			
		||||
                                         const Common::Rectangle<u32>& dst_rect) {
 | 
			
		||||
    MICROPROFILE_SCOPE(OpenGL_BlitSurface);
 | 
			
		||||
 | 
			
		||||
    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,
 | 
			
		||||
                                               const MathUtil::Rectangle<u32>& src_rect,
 | 
			
		||||
                                               const Common::Rectangle<u32>& src_rect,
 | 
			
		||||
                                               GLuint dst_tex,
 | 
			
		||||
                                               const MathUtil::Rectangle<u32>& dst_rect) {
 | 
			
		||||
                                               const Common::Rectangle<u32>& dst_rect) {
 | 
			
		||||
    OpenGLState prev_state = OpenGLState::GetCurState();
 | 
			
		||||
    SCOPE_EXIT({ prev_state.Apply(); });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1247,7 +1247,7 @@ SurfaceRect_Tuple RasterizerCacheOpenGL::GetSurfaceSubRect(const SurfaceParams&
 | 
			
		|||
                                                           ScaleMatch match_res_scale,
 | 
			
		||||
                                                           bool load_if_create) {
 | 
			
		||||
    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
 | 
			
		||||
| 
						 | 
				
			
			@ -1340,7 +1340,7 @@ Surface RasterizerCacheOpenGL::GetTextureSurface(const Pica::Texture::TextureInf
 | 
			
		|||
 | 
			
		||||
    if (info.width % 8 != 0 || info.height % 8 != 0) {
 | 
			
		||||
        Surface src_surface;
 | 
			
		||||
        MathUtil::Rectangle<u32> rect;
 | 
			
		||||
        Common::Rectangle<u32> rect;
 | 
			
		||||
        std::tie(src_surface, rect) = GetSurfaceSubRect(params, ScaleMatch::Ignore, true);
 | 
			
		||||
 | 
			
		||||
        params.res_scale = src_surface->res_scale;
 | 
			
		||||
| 
						 | 
				
			
			@ -1447,7 +1447,7 @@ const CachedTextureCube& RasterizerCacheOpenGL::GetTextureCube(const TextureCube
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
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& config = regs.framebuffer.framebuffer;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1461,7 +1461,7 @@ SurfaceSurfaceRect_Tuple RasterizerCacheOpenGL::GetFramebufferSurfaces(
 | 
			
		|||
        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.top, 0, static_cast<s32>(config.GetHeight()))),
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> color_rect{};
 | 
			
		||||
    Common::Rectangle<u32> color_rect{};
 | 
			
		||||
    Surface color_surface = nullptr;
 | 
			
		||||
    if (using_color_fb)
 | 
			
		||||
        std::tie(color_surface, color_rect) =
 | 
			
		||||
            GetSurfaceSubRect(color_params, ScaleMatch::Exact, false);
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> depth_rect{};
 | 
			
		||||
    Common::Rectangle<u32> depth_rect{};
 | 
			
		||||
    Surface depth_surface = nullptr;
 | 
			
		||||
    if (using_depth_fb)
 | 
			
		||||
        std::tie(depth_surface, depth_rect) =
 | 
			
		||||
            GetSurfaceSubRect(depth_params, ScaleMatch::Exact, false);
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> fb_rect{};
 | 
			
		||||
    Common::Rectangle<u32> fb_rect{};
 | 
			
		||||
    if (color_surface != nullptr && depth_surface != nullptr) {
 | 
			
		||||
        fb_rect = color_rect;
 | 
			
		||||
        // 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) {
 | 
			
		||||
    MathUtil::Rectangle<u32> rect{};
 | 
			
		||||
    Common::Rectangle<u32> rect{};
 | 
			
		||||
 | 
			
		||||
    Surface match_surface = FindMatch<MatchFlags::TexCopy | MatchFlags::Invalid>(
 | 
			
		||||
        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>(),
 | 
			
		||||
              "incorrect interval types");
 | 
			
		||||
 | 
			
		||||
using SurfaceRect_Tuple = std::tuple<Surface, MathUtil::Rectangle<u32>>;
 | 
			
		||||
using SurfaceSurfaceRect_Tuple = std::tuple<Surface, Surface, MathUtil::Rectangle<u32>>;
 | 
			
		||||
using SurfaceRect_Tuple = std::tuple<Surface, Common::Rectangle<u32>>;
 | 
			
		||||
using SurfaceSurfaceRect_Tuple = std::tuple<Surface, Surface, Common::Rectangle<u32>>;
 | 
			
		||||
 | 
			
		||||
using PageMap = boost::icl::interval_map<u32, int>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +250,7 @@ struct SurfaceParams {
 | 
			
		|||
    // Returns the outer rectangle containing "interval"
 | 
			
		||||
    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
 | 
			
		||||
    SurfaceInterval GetCopyableInterval(const Surface& src_surface) const;
 | 
			
		||||
| 
						 | 
				
			
			@ -263,11 +263,11 @@ struct SurfaceParams {
 | 
			
		|||
        return height * res_scale;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> GetRect() const {
 | 
			
		||||
    Common::Rectangle<u32> GetRect() const {
 | 
			
		||||
        return {0, height, width, 0};
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> GetScaledRect() const {
 | 
			
		||||
    Common::Rectangle<u32> GetScaledRect() const {
 | 
			
		||||
        return {0, GetScaledHeight(), GetScaledWidth(), 0};
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -284,8 +284,8 @@ struct SurfaceParams {
 | 
			
		|||
    bool CanExpand(const SurfaceParams& expanded_surface) const;
 | 
			
		||||
    bool CanTexCopy(const SurfaceParams& texcopy_params) const;
 | 
			
		||||
 | 
			
		||||
    MathUtil::Rectangle<u32> GetSubRect(const SurfaceParams& sub_surface) const;
 | 
			
		||||
    MathUtil::Rectangle<u32> GetScaledSubRect(const SurfaceParams& sub_surface) const;
 | 
			
		||||
    Common::Rectangle<u32> GetSubRect(const SurfaceParams& sub_surface) const;
 | 
			
		||||
    Common::Rectangle<u32> GetScaledSubRect(const SurfaceParams& sub_surface) const;
 | 
			
		||||
 | 
			
		||||
    PAddr addr = 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);
 | 
			
		||||
 | 
			
		||||
    // 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);
 | 
			
		||||
    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);
 | 
			
		||||
 | 
			
		||||
    std::shared_ptr<SurfaceWatcher> CreateWatcher() {
 | 
			
		||||
| 
						 | 
				
			
			@ -413,11 +413,11 @@ public:
 | 
			
		|||
    ~RasterizerCacheOpenGL();
 | 
			
		||||
 | 
			
		||||
    /// Blit one surface's texture to another
 | 
			
		||||
    bool BlitSurfaces(const Surface& src_surface, const MathUtil::Rectangle<u32>& src_rect,
 | 
			
		||||
                      const Surface& dst_surface, const MathUtil::Rectangle<u32>& dst_rect);
 | 
			
		||||
    bool BlitSurfaces(const Surface& src_surface, const Common::Rectangle<u32>& src_rect,
 | 
			
		||||
                      const Surface& dst_surface, const Common::Rectangle<u32>& dst_rect);
 | 
			
		||||
 | 
			
		||||
    void ConvertD24S8toABGR(GLuint src_tex, const MathUtil::Rectangle<u32>& src_rect,
 | 
			
		||||
                            GLuint dst_tex, const MathUtil::Rectangle<u32>& dst_rect);
 | 
			
		||||
    void ConvertD24S8toABGR(GLuint src_tex, const Common::Rectangle<u32>& src_rect, GLuint dst_tex,
 | 
			
		||||
                            const Common::Rectangle<u32>& dst_rect);
 | 
			
		||||
 | 
			
		||||
    /// Copy one surface's region to another
 | 
			
		||||
    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
 | 
			
		||||
    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
 | 
			
		||||
    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)) {
 | 
			
		||||
        // Reset the screen info's display texture to its own permanent texture
 | 
			
		||||
        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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ struct TextureInfo {
 | 
			
		|||
/// Structure used for storing information about the display target for each 3DS screen
 | 
			
		||||
struct ScreenInfo {
 | 
			
		||||
    GLuint display_texture;
 | 
			
		||||
    MathUtil::Rectangle<float> display_texcoords;
 | 
			
		||||
    Common::Rectangle<float> display_texcoords;
 | 
			
		||||
    TextureInfo texture;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue