summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_rasterizer.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2018-03-27 04:42:54 +0200
committerJames Rowe <jroweboy@gmail.com>2018-04-07 04:40:24 +0200
commitca96b04a0c524a1a6c3bc6952aab7d059da52c3d (patch)
tree5dcfad9d8419826601ba400e0a00fe115f5059ff /src/video_core/renderer_opengl/gl_rasterizer.cpp
parentGL: Rename PicaTexture to MaxwellTexture. (diff)
downloadyuzu-ca96b04a0c524a1a6c3bc6952aab7d059da52c3d.tar
yuzu-ca96b04a0c524a1a6c3bc6952aab7d059da52c3d.tar.gz
yuzu-ca96b04a0c524a1a6c3bc6952aab7d059da52c3d.tar.bz2
yuzu-ca96b04a0c524a1a6c3bc6952aab7d059da52c3d.tar.lz
yuzu-ca96b04a0c524a1a6c3bc6952aab7d059da52c3d.tar.xz
yuzu-ca96b04a0c524a1a6c3bc6952aab7d059da52c3d.tar.zst
yuzu-ca96b04a0c524a1a6c3bc6952aab7d059da52c3d.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_rasterizer.cpp')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 911890f16..307c5bcc1 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -452,6 +452,45 @@ bool RasterizerOpenGL::AccelerateDisplay(const Tegra::FramebufferConfig& framebu
return true;
}
+void RasterizerOpenGL::SamplerInfo::Create() {
+ sampler.Create();
+ mag_filter = min_filter = Tegra::Texture::TextureFilter::Linear;
+ wrap_u = wrap_v = Tegra::Texture::WrapMode::Wrap;
+ border_color_r = border_color_g = border_color_b = border_color_a = 0;
+
+ // default is GL_LINEAR_MIPMAP_LINEAR
+ glSamplerParameteri(sampler.handle, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ // Other attributes have correct defaults
+}
+
+void RasterizerOpenGL::SamplerInfo::SyncWithConfig(const Tegra::Texture::TSCEntry& config) {
+
+ GLuint s = sampler.handle;
+
+ if (mag_filter != config.mag_filter) {
+ mag_filter = config.mag_filter;
+ glSamplerParameteri(s, GL_TEXTURE_MAG_FILTER, MaxwellToGL::TextureFilterMode(mag_filter));
+ }
+ if (min_filter != config.min_filter) {
+ min_filter = config.min_filter;
+ glSamplerParameteri(s, GL_TEXTURE_MIN_FILTER, MaxwellToGL::TextureFilterMode(min_filter));
+ }
+
+ if (wrap_u != config.wrap_u) {
+ wrap_u = config.wrap_u;
+ glSamplerParameteri(s, GL_TEXTURE_WRAP_S, MaxwellToGL::WrapMode(wrap_u));
+ }
+ if (wrap_v != config.wrap_v) {
+ wrap_v = config.wrap_v;
+ glSamplerParameteri(s, GL_TEXTURE_WRAP_T, MaxwellToGL::WrapMode(wrap_v));
+ }
+
+ if (wrap_u == Tegra::Texture::WrapMode::Border || wrap_v == Tegra::Texture::WrapMode::Border) {
+ // TODO(Subv): Implement border color
+ ASSERT(false);
+ }
+}
+
void RasterizerOpenGL::SetShader() {
// TODO(bunnei): The below sets up a static test shader for passing untransformed vertices to
// OpenGL for rendering. This should be removed/replaced when we start emulating Maxwell