|
|
|
@ -33,8 +33,8 @@ OGLBuffer CreateBuffer(std::size_t size, GLenum usage) { |
|
|
|
CachedBufferEntry::CachedBufferEntry(VAddr cpu_addr, u8* host_ptr) |
|
|
|
: RasterizerCacheObject{host_ptr}, host_ptr{host_ptr}, cpu_addr{cpu_addr} {} |
|
|
|
|
|
|
|
OGLBufferCache::OGLBufferCache(RasterizerOpenGL& rasterizer, std::size_t size) |
|
|
|
: RasterizerCache{rasterizer}, stream_buffer(size, true) {} |
|
|
|
OGLBufferCache::OGLBufferCache(RasterizerOpenGL& rasterizer, Core::System& system, std::size_t size) |
|
|
|
: RasterizerCache{rasterizer}, system{system}, stream_buffer(size, true) {} |
|
|
|
|
|
|
|
OGLBufferCache::~OGLBufferCache() = default; |
|
|
|
|
|
|
|
@ -53,7 +53,7 @@ OGLBufferCache::BufferInfo OGLBufferCache::UploadMemory(GPUVAddr gpu_addr, std:: |
|
|
|
bool is_written) { |
|
|
|
std::lock_guard lock{mutex}; |
|
|
|
|
|
|
|
auto& memory_manager = Core::System::GetInstance().GPU().MemoryManager(); |
|
|
|
auto& memory_manager = system.GPU().MemoryManager(); |
|
|
|
const auto host_ptr{memory_manager.GetPointer(gpu_addr)}; |
|
|
|
const auto cache_addr{ToCacheAddr(host_ptr)}; |
|
|
|
if (!host_ptr) { |
|
|
|
@ -119,7 +119,7 @@ OGLBufferCache::BufferInfo OGLBufferCache::StreamBufferUpload(const void* raw_po |
|
|
|
OGLBufferCache::BufferInfo OGLBufferCache::FixedBufferUpload(GPUVAddr gpu_addr, u8* host_ptr, |
|
|
|
std::size_t size, bool internalize, |
|
|
|
bool is_written) { |
|
|
|
auto& memory_manager = Core::System::GetInstance().GPU().MemoryManager(); |
|
|
|
auto& memory_manager = system.GPU().MemoryManager(); |
|
|
|
const auto cpu_addr = *memory_manager.GpuToCpuAddress(gpu_addr); |
|
|
|
auto entry = GetUncachedBuffer(cpu_addr, host_ptr); |
|
|
|
entry->SetSize(size); |
|
|
|
@ -161,7 +161,7 @@ void OGLBufferCache::GrowBuffer(std::shared_ptr<CachedBufferEntry>& entry, std:: |
|
|
|
} |
|
|
|
|
|
|
|
std::shared_ptr<CachedBufferEntry> OGLBufferCache::GetUncachedBuffer(VAddr cpu_addr, u8* host_ptr) { |
|
|
|
if (auto entry = TryGetReservedBuffer(host_ptr); entry) { |
|
|
|
if (auto entry = TryGetReservedBuffer(host_ptr)) { |
|
|
|
return entry; |
|
|
|
} |
|
|
|
return std::make_shared<CachedBufferEntry>(cpu_addr, host_ptr); |
|
|
|
|