diff options
| author | 2018-09-05 23:25:06 -0400 | |
|---|---|---|
| committer | 2018-09-08 02:53:38 -0400 | |
| commit | 05f6f59ffba2253e7c47263c919ef374e53571e5 (patch) | |
| tree | bb65e22e607c1bd336fbe53a393a7075089d1424 | |
| parent | gl_rasterizer_cache: Track texture depth. (diff) | |
| download | yuzu-05f6f59ffba2253e7c47263c919ef374e53571e5.tar.gz yuzu-05f6f59ffba2253e7c47263c919ef374e53571e5.tar.xz yuzu-05f6f59ffba2253e7c47263c919ef374e53571e5.zip | |
gl_rasterizer: Implement texture wrap mode p.
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 9 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 5deee20dd..e6eb829eb 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -580,7 +580,7 @@ bool RasterizerOpenGL::AccelerateDisplay(const Tegra::FramebufferConfig& config, | |||
| 580 | void RasterizerOpenGL::SamplerInfo::Create() { | 580 | void RasterizerOpenGL::SamplerInfo::Create() { |
| 581 | sampler.Create(); | 581 | sampler.Create(); |
| 582 | mag_filter = min_filter = Tegra::Texture::TextureFilter::Linear; | 582 | mag_filter = min_filter = Tegra::Texture::TextureFilter::Linear; |
| 583 | wrap_u = wrap_v = Tegra::Texture::WrapMode::Wrap; | 583 | wrap_u = wrap_v = wrap_p = Tegra::Texture::WrapMode::Wrap; |
| 584 | 584 | ||
| 585 | // default is GL_LINEAR_MIPMAP_LINEAR | 585 | // default is GL_LINEAR_MIPMAP_LINEAR |
| 586 | glSamplerParameteri(sampler.handle, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | 586 | glSamplerParameteri(sampler.handle, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
| @@ -607,8 +607,13 @@ void RasterizerOpenGL::SamplerInfo::SyncWithConfig(const Tegra::Texture::TSCEntr | |||
| 607 | wrap_v = config.wrap_v; | 607 | wrap_v = config.wrap_v; |
| 608 | glSamplerParameteri(s, GL_TEXTURE_WRAP_T, MaxwellToGL::WrapMode(wrap_v)); | 608 | glSamplerParameteri(s, GL_TEXTURE_WRAP_T, MaxwellToGL::WrapMode(wrap_v)); |
| 609 | } | 609 | } |
| 610 | if (wrap_p != config.wrap_p) { | ||
| 611 | wrap_p = config.wrap_p; | ||
| 612 | glSamplerParameteri(s, GL_TEXTURE_WRAP_R, MaxwellToGL::WrapMode(wrap_p)); | ||
| 613 | } | ||
| 610 | 614 | ||
| 611 | if (wrap_u == Tegra::Texture::WrapMode::Border || wrap_v == Tegra::Texture::WrapMode::Border) { | 615 | if (wrap_u == Tegra::Texture::WrapMode::Border || wrap_v == Tegra::Texture::WrapMode::Border || |
| 616 | wrap_p == Tegra::Texture::WrapMode::Border) { | ||
| 612 | const GLvec4 new_border_color = {{config.border_color_r, config.border_color_g, | 617 | const GLvec4 new_border_color = {{config.border_color_r, config.border_color_g, |
| 613 | config.border_color_b, config.border_color_a}}; | 618 | config.border_color_b, config.border_color_a}}; |
| 614 | if (border_color != new_border_color) { | 619 | if (border_color != new_border_color) { |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 9c30dc0e8..c6bb1516b 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -93,6 +93,7 @@ private: | |||
| 93 | Tegra::Texture::TextureFilter min_filter; | 93 | Tegra::Texture::TextureFilter min_filter; |
| 94 | Tegra::Texture::WrapMode wrap_u; | 94 | Tegra::Texture::WrapMode wrap_u; |
| 95 | Tegra::Texture::WrapMode wrap_v; | 95 | Tegra::Texture::WrapMode wrap_v; |
| 96 | Tegra::Texture::WrapMode wrap_p; | ||
| 96 | GLvec4 border_color; | 97 | GLvec4 border_color; |
| 97 | }; | 98 | }; |
| 98 | 99 | ||