Browse Source
Merge pull request #2010 from ReinUsesLisp/gmem
Merge pull request #2010 from ReinUsesLisp/gmem
gl_global_cache: Add dummy global cache managerpull/15/merge
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 96 additions and 3 deletions
-
2src/video_core/CMakeLists.txt
-
24src/video_core/renderer_opengl/gl_global_cache.cpp
-
60src/video_core/renderer_opengl/gl_global_cache.h
-
3src/video_core/renderer_opengl/gl_rasterizer.cpp
-
10src/video_core/renderer_opengl/gl_rasterizer.h
@ -0,0 +1,24 @@ |
|||||
|
// Copyright 2018 yuzu Emulator Project
|
||||
|
// Licensed under GPLv2 or any later version
|
||||
|
// Refer to the license.txt file included.
|
||||
|
|
||||
|
#include <glad/glad.h>
|
||||
|
|
||||
|
#include "video_core/renderer_opengl/gl_global_cache.h"
|
||||
|
#include "video_core/renderer_opengl/gl_rasterizer.h"
|
||||
|
#include "video_core/renderer_opengl/utils.h"
|
||||
|
|
||||
|
namespace OpenGL { |
||||
|
|
||||
|
CachedGlobalRegion::CachedGlobalRegion(VAddr addr, u32 size) : addr{addr}, size{size} { |
||||
|
buffer.Create(); |
||||
|
// Bind and unbind the buffer so it gets allocated by the driver
|
||||
|
glBindBuffer(GL_SHADER_STORAGE_BUFFER, buffer.handle); |
||||
|
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0); |
||||
|
LabelGLObject(GL_BUFFER, buffer.handle, addr, "GlobalMemory"); |
||||
|
} |
||||
|
|
||||
|
GlobalRegionCacheOpenGL::GlobalRegionCacheOpenGL(RasterizerOpenGL& rasterizer) |
||||
|
: RasterizerCache{rasterizer} {} |
||||
|
|
||||
|
} // namespace OpenGL
|
||||
@ -0,0 +1,60 @@ |
|||||
|
// Copyright 2018 yuzu Emulator Project |
||||
|
// Licensed under GPLv2 or any later version |
||||
|
// Refer to the license.txt file included. |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <memory> |
||||
|
#include <glad/glad.h> |
||||
|
|
||||
|
#include "common/common_types.h" |
||||
|
#include "video_core/rasterizer_cache.h" |
||||
|
#include "video_core/renderer_opengl/gl_resource_manager.h" |
||||
|
|
||||
|
namespace OpenGL { |
||||
|
|
||||
|
namespace GLShader { |
||||
|
class GlobalMemoryEntry; |
||||
|
} // namespace GLShader |
||||
|
|
||||
|
class RasterizerOpenGL; |
||||
|
class CachedGlobalRegion; |
||||
|
using GlobalRegion = std::shared_ptr<CachedGlobalRegion>; |
||||
|
|
||||
|
class CachedGlobalRegion final : public RasterizerCacheObject { |
||||
|
public: |
||||
|
explicit CachedGlobalRegion(VAddr addr, u32 size); |
||||
|
|
||||
|
/// Gets the address of the shader in guest memory, required for cache management |
||||
|
VAddr GetAddr() const { |
||||
|
return addr; |
||||
|
} |
||||
|
|
||||
|
/// Gets the size of the shader in guest memory, required for cache management |
||||
|
std::size_t GetSizeInBytes() const { |
||||
|
return size; |
||||
|
} |
||||
|
|
||||
|
/// Gets the GL program handle for the buffer |
||||
|
GLuint GetBufferHandle() const { |
||||
|
return buffer.handle; |
||||
|
} |
||||
|
|
||||
|
// TODO(Rodrigo): When global memory is written (STG), implement flushing |
||||
|
void Flush() override { |
||||
|
UNIMPLEMENTED(); |
||||
|
} |
||||
|
|
||||
|
private: |
||||
|
VAddr addr{}; |
||||
|
u32 size{}; |
||||
|
|
||||
|
OGLBuffer buffer; |
||||
|
}; |
||||
|
|
||||
|
class GlobalRegionCacheOpenGL final : public RasterizerCache<GlobalRegion> { |
||||
|
public: |
||||
|
explicit GlobalRegionCacheOpenGL(RasterizerOpenGL& rasterizer); |
||||
|
}; |
||||
|
|
||||
|
} // namespace OpenGL |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue