rasterizer_cache: Explicit type in traits
This commit is contained in:
@ -25,7 +25,7 @@ inline auto RangeFromInterval(auto& map, const auto& interval) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
RasterizerCache<T>::RasterizerCache(Memory::MemorySystem& memory_, TextureRuntime& runtime_)
|
RasterizerCache<T>::RasterizerCache(Memory::MemorySystem& memory_, Runtime& runtime_)
|
||||||
: memory{memory_}, runtime{runtime_}, resolution_scale_factor{
|
: memory{memory_}, runtime{runtime_}, resolution_scale_factor{
|
||||||
VideoCore::GetResolutionScaleFactor()} {
|
VideoCore::GetResolutionScaleFactor()} {
|
||||||
using TextureConfig = Pica::TexturingRegs::TextureConfig;
|
using TextureConfig = Pica::TexturingRegs::TextureConfig;
|
||||||
@ -198,7 +198,7 @@ bool RasterizerCache<T>::AccelerateFill(const GPU::Regs::MemoryFillConfig& confi
|
|||||||
params.type = SurfaceType::Fill;
|
params.type = SurfaceType::Fill;
|
||||||
params.res_scale = std::numeric_limits<u16>::max();
|
params.res_scale = std::numeric_limits<u16>::max();
|
||||||
|
|
||||||
Surface fill_surface = std::make_shared<typename T::SurfaceType>(params, runtime);
|
Surface fill_surface = std::make_shared<typename T::Surface>(params, runtime);
|
||||||
|
|
||||||
std::memcpy(&fill_surface->fill_data[0], &config.value_32bit, 4);
|
std::memcpy(&fill_surface->fill_data[0], &config.value_32bit, 4);
|
||||||
if (config.fill_32bit) {
|
if (config.fill_32bit) {
|
||||||
@ -1146,7 +1146,7 @@ void RasterizerCache<T>::InvalidateRegion(PAddr addr, u32 size, const Surface& r
|
|||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
auto RasterizerCache<T>::CreateSurface(SurfaceParams& params) -> Surface {
|
auto RasterizerCache<T>::CreateSurface(SurfaceParams& params) -> Surface {
|
||||||
Surface surface = std::make_shared<typename T::SurfaceType>(params, runtime);
|
Surface surface = std::make_shared<typename T::Surface>(params, runtime);
|
||||||
surface->invalid_regions.insert(surface->GetInterval());
|
surface->invalid_regions.insert(surface->GetInterval());
|
||||||
return surface;
|
return surface;
|
||||||
}
|
}
|
||||||
|
@ -44,8 +44,8 @@ class RasterizerCache : NonCopyable {
|
|||||||
/// Address shift for caching surfaces into a hash table
|
/// Address shift for caching surfaces into a hash table
|
||||||
static constexpr u64 CITRA_PAGEBITS = 18;
|
static constexpr u64 CITRA_PAGEBITS = 18;
|
||||||
|
|
||||||
using TextureRuntime = typename T::RuntimeType;
|
using Runtime = typename T::Runtime;
|
||||||
using Surface = std::shared_ptr<typename T::SurfaceType>;
|
using Surface = std::shared_ptr<typename T::Surface>;
|
||||||
using Sampler = typename T::Sampler;
|
using Sampler = typename T::Sampler;
|
||||||
using Framebuffer = typename T::Framebuffer;
|
using Framebuffer = typename T::Framebuffer;
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ class RasterizerCache : NonCopyable {
|
|||||||
using PageMap = boost::icl::interval_map<u32, int>;
|
using PageMap = boost::icl::interval_map<u32, int>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RasterizerCache(Memory::MemorySystem& memory, TextureRuntime& runtime);
|
RasterizerCache(Memory::MemorySystem& memory, Runtime& runtime);
|
||||||
~RasterizerCache();
|
~RasterizerCache();
|
||||||
|
|
||||||
/// Perform hardware accelerated texture copy according to the provided configuration
|
/// Perform hardware accelerated texture copy according to the provided configuration
|
||||||
@ -184,7 +184,7 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Memory::MemorySystem& memory;
|
Memory::MemorySystem& memory;
|
||||||
TextureRuntime& runtime;
|
Runtime& runtime;
|
||||||
PageMap cached_pages;
|
PageMap cached_pages;
|
||||||
SurfaceMap dirty_regions;
|
SurfaceMap dirty_regions;
|
||||||
std::vector<Surface> remove_surfaces;
|
std::vector<Surface> remove_surfaces;
|
||||||
|
@ -179,10 +179,10 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct Traits {
|
struct Traits {
|
||||||
using RuntimeType = TextureRuntime;
|
using Runtime = OpenGL::TextureRuntime;
|
||||||
using SurfaceType = Surface;
|
using Surface = OpenGL::Surface;
|
||||||
using Sampler = Sampler;
|
using Sampler = OpenGL::Sampler;
|
||||||
using Framebuffer = Framebuffer;
|
using Framebuffer = OpenGL::Framebuffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
using RasterizerCache = VideoCore::RasterizerCache<Traits>;
|
using RasterizerCache = VideoCore::RasterizerCache<Traits>;
|
||||||
|
@ -299,10 +299,10 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct Traits {
|
struct Traits {
|
||||||
using RuntimeType = TextureRuntime;
|
using Runtime = Vulkan::TextureRuntime;
|
||||||
using SurfaceType = Surface;
|
using Surface = Vulkan::Surface;
|
||||||
using Sampler = Sampler;
|
using Sampler = Vulkan::Sampler;
|
||||||
using Framebuffer = Framebuffer;
|
using Framebuffer = Vulkan::Framebuffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
using RasterizerCache = VideoCore::RasterizerCache<Traits>;
|
using RasterizerCache = VideoCore::RasterizerCache<Traits>;
|
||||||
|
Reference in New Issue
Block a user