diff options
author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-08-30 15:05:56 +0200 |
---|---|---|
committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-09-03 20:09:51 +0200 |
commit | b044c047c48469be479ba2633ae14eff8643041e (patch) | |
tree | f76ddff71ac10838e6429815d8267c82b602737f /src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | |
parent | OpenGL: Remove ugly and endian-unsafe color pointer casts (diff) | |
download | yuzu-b044c047c48469be479ba2633ae14eff8643041e.tar yuzu-b044c047c48469be479ba2633ae14eff8643041e.tar.gz yuzu-b044c047c48469be479ba2633ae14eff8643041e.tar.bz2 yuzu-b044c047c48469be479ba2633ae14eff8643041e.tar.lz yuzu-b044c047c48469be479ba2633ae14eff8643041e.tar.xz yuzu-b044c047c48469be479ba2633ae14eff8643041e.tar.zst yuzu-b044c047c48469be479ba2633ae14eff8643041e.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/gl_rasterizer_cache.cpp')
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 5d9a80cd4..d9ccf2a3f 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -20,9 +20,8 @@ RasterizerCacheOpenGL::~RasterizerCacheOpenGL() { MICROPROFILE_DEFINE(OpenGL_TextureUpload, "OpenGL", "Texture Upload", MP_RGB(128, 64, 192)); -void RasterizerCacheOpenGL::LoadAndBindTexture(OpenGLState &state, unsigned texture_unit, const Pica::Regs::FullTextureConfig& config) { - PAddr texture_addr = config.config.GetPhysicalAddress(); - const auto cached_texture = texture_cache.find(texture_addr); +void RasterizerCacheOpenGL::LoadAndBindTexture(OpenGLState &state, unsigned texture_unit, const Pica::DebugUtils::TextureInfo& info) { + const auto cached_texture = texture_cache.find(info.physical_address); if (cached_texture != texture_cache.end()) { state.texture_units[texture_unit].texture_2d = cached_texture->second->texture.handle; @@ -37,26 +36,12 @@ void RasterizerCacheOpenGL::LoadAndBindTexture(OpenGLState &state, unsigned text state.Apply(); glActiveTexture(GL_TEXTURE0 + texture_unit); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, PicaToGL::TextureFilterMode(config.config.mag_filter)); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, PicaToGL::TextureFilterMode(config.config.min_filter)); - - GLenum wrap_s = PicaToGL::WrapMode(config.config.wrap_s); - GLenum wrap_t = PicaToGL::WrapMode(config.config.wrap_t); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_s); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t); - - if (wrap_s == GL_CLAMP_TO_BORDER || wrap_t == GL_CLAMP_TO_BORDER) { - auto border_color = PicaToGL::ColorRGBA8(config.config.border_color.raw); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, border_color.data()); - } - - const auto info = Pica::DebugUtils::TextureInfo::FromPicaRegister(config.config, config.format); - u8* texture_src_data = Memory::GetPhysicalPointer(texture_addr); + u8* texture_src_data = Memory::GetPhysicalPointer(info.physical_address); new_texture->width = info.width; new_texture->height = info.height; new_texture->size = info.stride * info.height; - new_texture->addr = texture_addr; + new_texture->addr = info.physical_address; new_texture->hash = Common::ComputeHash64(texture_src_data, new_texture->size); std::unique_ptr<Math::Vec4<u8>[]> temp_texture_buffer_rgba(new Math::Vec4<u8>[info.width * info.height]); @@ -69,7 +54,7 @@ void RasterizerCacheOpenGL::LoadAndBindTexture(OpenGLState &state, unsigned text glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, info.width, info.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, temp_texture_buffer_rgba.get()); - texture_cache.emplace(texture_addr, std::move(new_texture)); + texture_cache.emplace(info.physical_address, std::move(new_texture)); } } |