Просмотр исходного кода

Merge pull request #6529 from ReinUsesLisp/reaper-fixups

buffer_cache,texture_cache: Misc fixups from the memory reaper
Morph 5 лет назад
Родитель
Сommit
4df04ad48a

+ 1 - 0
src/video_core/CMakeLists.txt

@@ -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

+ 6 - 5
src/video_core/buffer_cache/buffer_cache.h

@@ -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>

+ 8 - 0
src/video_core/command_classes/codecs/codec.h

@@ -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 {

+ 21 - 4
src/video_core/command_classes/vic.cpp

@@ -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_)

+ 3 - 2
src/video_core/renderer_vulkan/vk_buffer_cache.cpp

@@ -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

+ 3 - 3
src/video_core/texture_cache/texture_cache.h

@@ -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,