mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	rasterizer: Flush and invalidate regions should be 64-bit.
This commit is contained in:
		
							parent
							
								
									cdf541fb5b
								
							
						
					
					
						commit
						11047d7fd5
					
				@ -296,7 +296,7 @@ u8* GetPhysicalPointer(PAddr address) {
 | 
				
			|||||||
    return target_pointer;
 | 
					    return target_pointer;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void RasterizerFlushVirtualRegion(VAddr start, u32 size, FlushMode mode) {
 | 
					void RasterizerFlushVirtualRegion(VAddr start, u64 size, FlushMode mode) {
 | 
				
			||||||
    // Since pages are unmapped on shutdown after video core is shutdown, the renderer may be
 | 
					    // Since pages are unmapped on shutdown after video core is shutdown, the renderer may be
 | 
				
			||||||
    // null here
 | 
					    // null here
 | 
				
			||||||
    if (VideoCore::g_renderer == nullptr) {
 | 
					    if (VideoCore::g_renderer == nullptr) {
 | 
				
			||||||
@ -313,7 +313,7 @@ void RasterizerFlushVirtualRegion(VAddr start, u32 size, FlushMode mode) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        VAddr overlap_start = std::max(start, region_start);
 | 
					        VAddr overlap_start = std::max(start, region_start);
 | 
				
			||||||
        VAddr overlap_end = std::min(end, region_end);
 | 
					        VAddr overlap_end = std::min(end, region_end);
 | 
				
			||||||
        u32 overlap_size = overlap_end - overlap_start;
 | 
					        u64 overlap_size = overlap_end - overlap_start;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        auto* rasterizer = VideoCore::g_renderer->Rasterizer();
 | 
					        auto* rasterizer = VideoCore::g_renderer->Rasterizer();
 | 
				
			||||||
        switch (mode) {
 | 
					        switch (mode) {
 | 
				
			||||||
 | 
				
			|||||||
@ -269,6 +269,6 @@ enum class FlushMode {
 | 
				
			|||||||
 * Flushes and invalidates any externally cached rasterizer resources touching the given virtual
 | 
					 * Flushes and invalidates any externally cached rasterizer resources touching the given virtual
 | 
				
			||||||
 * address region.
 | 
					 * address region.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void RasterizerFlushVirtualRegion(VAddr start, u32 size, FlushMode mode);
 | 
					void RasterizerFlushVirtualRegion(VAddr start, u64 size, FlushMode mode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace Memory
 | 
					} // namespace Memory
 | 
				
			||||||
 | 
				
			|||||||
@ -25,14 +25,14 @@ public:
 | 
				
			|||||||
    virtual void FlushAll() = 0;
 | 
					    virtual void FlushAll() = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Notify rasterizer that any caches of the specified region should be flushed to 3DS memory
 | 
					    /// Notify rasterizer that any caches of the specified region should be flushed to 3DS memory
 | 
				
			||||||
    virtual void FlushRegion(VAddr addr, u32 size) = 0;
 | 
					    virtual void FlushRegion(VAddr addr, u64 size) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Notify rasterizer that any caches of the specified region should be invalidated
 | 
					    /// Notify rasterizer that any caches of the specified region should be invalidated
 | 
				
			||||||
    virtual void InvalidateRegion(VAddr addr, u32 size) = 0;
 | 
					    virtual void InvalidateRegion(VAddr addr, u64 size) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Notify rasterizer that any caches of the specified region should be flushed to 3DS memory
 | 
					    /// Notify rasterizer that any caches of the specified region should be flushed to 3DS memory
 | 
				
			||||||
    /// and invalidated
 | 
					    /// and invalidated
 | 
				
			||||||
    virtual void FlushAndInvalidateRegion(VAddr addr, u32 size) = 0;
 | 
					    virtual void FlushAndInvalidateRegion(VAddr addr, u64 size) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Attempt to use a faster method to perform a display transfer with is_texture_copy = 0
 | 
					    /// Attempt to use a faster method to perform a display transfer with is_texture_copy = 0
 | 
				
			||||||
    virtual bool AccelerateDisplayTransfer(const void* config) {
 | 
					    virtual bool AccelerateDisplayTransfer(const void* config) {
 | 
				
			||||||
 | 
				
			|||||||
@ -194,17 +194,17 @@ void RasterizerOpenGL::FlushAll() {
 | 
				
			|||||||
    res_cache.FlushAll();
 | 
					    res_cache.FlushAll();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void RasterizerOpenGL::FlushRegion(VAddr addr, u32 size) {
 | 
					void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) {
 | 
				
			||||||
    MICROPROFILE_SCOPE(OpenGL_CacheManagement);
 | 
					    MICROPROFILE_SCOPE(OpenGL_CacheManagement);
 | 
				
			||||||
    res_cache.FlushRegion(addr, size);
 | 
					    res_cache.FlushRegion(addr, size);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void RasterizerOpenGL::InvalidateRegion(VAddr addr, u32 size) {
 | 
					void RasterizerOpenGL::InvalidateRegion(VAddr addr, u64 size) {
 | 
				
			||||||
    MICROPROFILE_SCOPE(OpenGL_CacheManagement);
 | 
					    MICROPROFILE_SCOPE(OpenGL_CacheManagement);
 | 
				
			||||||
    res_cache.InvalidateRegion(addr, size, nullptr);
 | 
					    res_cache.InvalidateRegion(addr, size, nullptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void RasterizerOpenGL::FlushAndInvalidateRegion(VAddr addr, u32 size) {
 | 
					void RasterizerOpenGL::FlushAndInvalidateRegion(VAddr addr, u64 size) {
 | 
				
			||||||
    MICROPROFILE_SCOPE(OpenGL_CacheManagement);
 | 
					    MICROPROFILE_SCOPE(OpenGL_CacheManagement);
 | 
				
			||||||
    res_cache.FlushRegion(addr, size);
 | 
					    res_cache.FlushRegion(addr, size);
 | 
				
			||||||
    res_cache.InvalidateRegion(addr, size, nullptr);
 | 
					    res_cache.InvalidateRegion(addr, size, nullptr);
 | 
				
			||||||
 | 
				
			|||||||
@ -32,9 +32,9 @@ public:
 | 
				
			|||||||
    void DrawTriangles() override;
 | 
					    void DrawTriangles() override;
 | 
				
			||||||
    void NotifyMaxwellRegisterChanged(u32 id) override;
 | 
					    void NotifyMaxwellRegisterChanged(u32 id) override;
 | 
				
			||||||
    void FlushAll() override;
 | 
					    void FlushAll() override;
 | 
				
			||||||
    void FlushRegion(VAddr addr, u32 size) override;
 | 
					    void FlushRegion(VAddr addr, u64 size) override;
 | 
				
			||||||
    void InvalidateRegion(VAddr addr, u32 size) override;
 | 
					    void InvalidateRegion(VAddr addr, u64 size) override;
 | 
				
			||||||
    void FlushAndInvalidateRegion(VAddr addr, u32 size) override;
 | 
					    void FlushAndInvalidateRegion(VAddr addr, u64 size) override;
 | 
				
			||||||
    bool AccelerateDisplayTransfer(const void* config) override;
 | 
					    bool AccelerateDisplayTransfer(const void* config) override;
 | 
				
			||||||
    bool AccelerateTextureCopy(const void* config) override;
 | 
					    bool AccelerateTextureCopy(const void* config) override;
 | 
				
			||||||
    bool AccelerateFill(const void* config) override;
 | 
					    bool AccelerateFill(const void* config) override;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user