summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp9
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h5
-rw-r--r--src/video_core/renderer_opengl/maxwell_to_gl.h2
-rw-r--r--src/video_core/textures/texture.h8
4 files changed, 13 insertions, 11 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 56d9c575b..5d5ad84b7 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -601,7 +601,6 @@ void RasterizerOpenGL::SamplerInfo::Create() {
601 sampler.Create(); 601 sampler.Create();
602 mag_filter = min_filter = Tegra::Texture::TextureFilter::Linear; 602 mag_filter = min_filter = Tegra::Texture::TextureFilter::Linear;
603 wrap_u = wrap_v = Tegra::Texture::WrapMode::Wrap; 603 wrap_u = wrap_v = Tegra::Texture::WrapMode::Wrap;
604 border_color_r = border_color_g = border_color_b = border_color_a = 0;
605 604
606 // default is GL_LINEAR_MIPMAP_LINEAR 605 // default is GL_LINEAR_MIPMAP_LINEAR
607 glSamplerParameteri(sampler.handle, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 606 glSamplerParameteri(sampler.handle, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
@@ -630,8 +629,12 @@ void RasterizerOpenGL::SamplerInfo::SyncWithConfig(const Tegra::Texture::TSCEntr
630 } 629 }
631 630
632 if (wrap_u == Tegra::Texture::WrapMode::Border || wrap_v == Tegra::Texture::WrapMode::Border) { 631 if (wrap_u == Tegra::Texture::WrapMode::Border || wrap_v == Tegra::Texture::WrapMode::Border) {
633 // TODO(Subv): Implement border color 632 const GLvec4 new_border_color = {{config.border_color_r, config.border_color_g,
634 ASSERT(false); 633 config.border_color_b, config.border_color_a}};
634 if (border_color != new_border_color) {
635 border_color = new_border_color;
636 glSamplerParameterfv(s, GL_TEXTURE_BORDER_COLOR, border_color.data());
637 }
635 } 638 }
636} 639}
637 640
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index c406142e4..ab06e2d95 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -77,10 +77,7 @@ private:
77 Tegra::Texture::TextureFilter min_filter; 77 Tegra::Texture::TextureFilter min_filter;
78 Tegra::Texture::WrapMode wrap_u; 78 Tegra::Texture::WrapMode wrap_u;
79 Tegra::Texture::WrapMode wrap_v; 79 Tegra::Texture::WrapMode wrap_v;
80 u32 border_color_r; 80 GLvec4 border_color;
81 u32 border_color_g;
82 u32 border_color_b;
83 u32 border_color_a;
84 }; 81 };
85 82
86 /// Configures the color and depth framebuffer states and returns the dirty <Color, Depth> 83 /// Configures the color and depth framebuffer states and returns the dirty <Color, Depth>
diff --git a/src/video_core/renderer_opengl/maxwell_to_gl.h b/src/video_core/renderer_opengl/maxwell_to_gl.h
index e19c3b280..369bdd905 100644
--- a/src/video_core/renderer_opengl/maxwell_to_gl.h
+++ b/src/video_core/renderer_opengl/maxwell_to_gl.h
@@ -112,6 +112,8 @@ inline GLenum WrapMode(Tegra::Texture::WrapMode wrap_mode) {
112 return GL_MIRRORED_REPEAT; 112 return GL_MIRRORED_REPEAT;
113 case Tegra::Texture::WrapMode::ClampToEdge: 113 case Tegra::Texture::WrapMode::ClampToEdge:
114 return GL_CLAMP_TO_EDGE; 114 return GL_CLAMP_TO_EDGE;
115 case Tegra::Texture::WrapMode::Border:
116 return GL_CLAMP_TO_BORDER;
115 case Tegra::Texture::WrapMode::ClampOGL: 117 case Tegra::Texture::WrapMode::ClampOGL:
116 // TODO(Subv): GL_CLAMP was removed as of OpenGL 3.1, to implement GL_CLAMP, we can use 118 // TODO(Subv): GL_CLAMP was removed as of OpenGL 3.1, to implement GL_CLAMP, we can use
117 // GL_CLAMP_TO_BORDER to get the border color of the texture, and then sample the edge to 119 // GL_CLAMP_TO_BORDER to get the border color of the texture, and then sample the edge to
diff --git a/src/video_core/textures/texture.h b/src/video_core/textures/texture.h
index d1c755033..c6bd2f4b9 100644
--- a/src/video_core/textures/texture.h
+++ b/src/video_core/textures/texture.h
@@ -242,10 +242,10 @@ struct TSCEntry {
242 BitField<6, 2, TextureMipmapFilter> mip_filter; 242 BitField<6, 2, TextureMipmapFilter> mip_filter;
243 }; 243 };
244 INSERT_PADDING_BYTES(8); 244 INSERT_PADDING_BYTES(8);
245 u32 border_color_r; 245 float border_color_r;
246 u32 border_color_g; 246 float border_color_g;
247 u32 border_color_b; 247 float border_color_b;
248 u32 border_color_a; 248 float border_color_a;
249}; 249};
250static_assert(sizeof(TSCEntry) == 0x20, "TSCEntry has wrong size"); 250static_assert(sizeof(TSCEntry) == 0x20, "TSCEntry has wrong size");
251 251