mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Merge pull request #6529 from ReinUsesLisp/reaper-fixups
buffer_cache,texture_cache: Misc fixups from the memory reaper
This commit is contained in:
		@@ -293,6 +293,7 @@ endif()
 | 
			
		||||
if (MSVC)
 | 
			
		||||
    target_compile_options(video_core PRIVATE
 | 
			
		||||
        /we4267 # 'var' : conversion from 'size_t' to 'type', possible loss of data
 | 
			
		||||
        /we4244 # 'var' : conversion from integer to 'type', possible loss of data
 | 
			
		||||
        /we4456 # Declaration of 'identifier' hides previous local declaration
 | 
			
		||||
        /we4457 # Declaration of 'identifier' hides function parameter
 | 
			
		||||
        /we4458 # Declaration of 'identifier' hides class member
 | 
			
		||||
 
 | 
			
		||||
@@ -99,7 +99,7 @@ class BufferCache {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    static constexpr u32 DEFAULT_SKIP_CACHE_SIZE = 4_KiB;
 | 
			
		||||
    static constexpr u32 DEFAULT_SKIP_CACHE_SIZE = static_cast<u32>(4_KiB);
 | 
			
		||||
 | 
			
		||||
    explicit BufferCache(VideoCore::RasterizerInterface& rasterizer_,
 | 
			
		||||
                         Tegra::Engines::Maxwell3D& maxwell3d_,
 | 
			
		||||
@@ -109,8 +109,6 @@ public:
 | 
			
		||||
 | 
			
		||||
    void TickFrame();
 | 
			
		||||
 | 
			
		||||
    void RunGarbageCollector();
 | 
			
		||||
 | 
			
		||||
    void WriteMemory(VAddr cpu_addr, u64 size);
 | 
			
		||||
 | 
			
		||||
    void CachedWriteMemory(VAddr cpu_addr, u64 size);
 | 
			
		||||
@@ -197,6 +195,8 @@ private:
 | 
			
		||||
               ((cpu_addr + size) & ~Core::Memory::PAGE_MASK);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void RunGarbageCollector();
 | 
			
		||||
 | 
			
		||||
    void BindHostIndexBuffer();
 | 
			
		||||
 | 
			
		||||
    void BindHostVertexBuffers();
 | 
			
		||||
@@ -416,8 +416,9 @@ void BufferCache<P>::CachedWriteMemory(VAddr cpu_addr, u64 size) {
 | 
			
		||||
 | 
			
		||||
template <class P>
 | 
			
		||||
void BufferCache<P>::DownloadMemory(VAddr cpu_addr, u64 size) {
 | 
			
		||||
    ForEachBufferInRange(cpu_addr, size,
 | 
			
		||||
                         [&](BufferId, Buffer& buffer) { DownloadBufferMemory(buffer); });
 | 
			
		||||
    ForEachBufferInRange(cpu_addr, size, [&](BufferId, Buffer& buffer) {
 | 
			
		||||
        DownloadBufferMemory(buffer, cpu_addr, size);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <class P>
 | 
			
		||||
 
 | 
			
		||||
@@ -14,10 +14,18 @@ extern "C" {
 | 
			
		||||
#pragma GCC diagnostic push
 | 
			
		||||
#pragma GCC diagnostic ignored "-Wconversion"
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
#pragma warning(push)
 | 
			
		||||
#pragma warning(disable : 4242) // conversion from 'type' to 'type', possible loss of data
 | 
			
		||||
#pragma warning(disable : 4244) // conversion from 'type' to 'type', possible loss of data
 | 
			
		||||
#endif
 | 
			
		||||
#include <libavcodec/avcodec.h>
 | 
			
		||||
#if defined(__GNUC__) || defined(__clang__)
 | 
			
		||||
#pragma GCC diagnostic pop
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
#pragma warning(pop)
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace Tegra {
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,28 @@
 | 
			
		||||
// Refer to the license.txt file included.
 | 
			
		||||
 | 
			
		||||
#include <array>
 | 
			
		||||
 | 
			
		||||
extern "C" {
 | 
			
		||||
#if defined(__GNUC__) || defined(__clang__)
 | 
			
		||||
#pragma GCC diagnostic push
 | 
			
		||||
#pragma GCC diagnostic ignored "-Wconversion"
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
#pragma warning(disable : 4244) // conversion from 'type' to 'type', possible loss of data
 | 
			
		||||
#pragma warning(push)
 | 
			
		||||
#endif
 | 
			
		||||
#include <libswscale/swscale.h>
 | 
			
		||||
#if defined(__GNUC__) || defined(__clang__)
 | 
			
		||||
#pragma GCC diagnostic pop
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
#pragma warning(pop)
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#include "common/assert.h"
 | 
			
		||||
#include "common/logging/log.h"
 | 
			
		||||
 | 
			
		||||
#include "video_core/command_classes/nvdec.h"
 | 
			
		||||
#include "video_core/command_classes/vic.h"
 | 
			
		||||
#include "video_core/engines/maxwell_3d.h"
 | 
			
		||||
@@ -11,10 +32,6 @@
 | 
			
		||||
#include "video_core/memory_manager.h"
 | 
			
		||||
#include "video_core/textures/decoders.h"
 | 
			
		||||
 | 
			
		||||
extern "C" {
 | 
			
		||||
#include <libswscale/swscale.h>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace Tegra {
 | 
			
		||||
 | 
			
		||||
Vic::Vic(GPU& gpu_, std::shared_ptr<Nvdec> nvdec_processor_)
 | 
			
		||||
 
 | 
			
		||||
@@ -55,8 +55,9 @@ size_t BytesPerIndex(VkIndexType index_type) {
 | 
			
		||||
template <typename T>
 | 
			
		||||
std::array<T, 6> MakeQuadIndices(u32 quad, u32 first) {
 | 
			
		||||
    std::array<T, 6> indices{0, 1, 2, 0, 2, 3};
 | 
			
		||||
    std::ranges::transform(indices, indices.begin(),
 | 
			
		||||
                           [quad, first](u32 index) { return first + index + quad * 4; });
 | 
			
		||||
    for (T& index : indices) {
 | 
			
		||||
        index = static_cast<T>(first + index + quad * 4);
 | 
			
		||||
    }
 | 
			
		||||
    return indices;
 | 
			
		||||
}
 | 
			
		||||
} // Anonymous namespace
 | 
			
		||||
 
 | 
			
		||||
@@ -110,9 +110,6 @@ public:
 | 
			
		||||
    /// Notify the cache that a new frame has been queued
 | 
			
		||||
    void TickFrame();
 | 
			
		||||
 | 
			
		||||
    /// Runs the Garbage Collector.
 | 
			
		||||
    void RunGarbageCollector();
 | 
			
		||||
 | 
			
		||||
    /// Return a constant reference to the given image view id
 | 
			
		||||
    [[nodiscard]] const ImageView& GetImageView(ImageViewId id) const noexcept;
 | 
			
		||||
 | 
			
		||||
@@ -207,6 +204,9 @@ private:
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Runs the Garbage Collector.
 | 
			
		||||
    void RunGarbageCollector();
 | 
			
		||||
 | 
			
		||||
    /// Fills image_view_ids in the image views in indices
 | 
			
		||||
    void FillImageViews(DescriptorTable<TICEntry>& table,
 | 
			
		||||
                        std::span<ImageViewId> cached_image_view_ids, std::span<const u32> indices,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user