changeset 31677:cc01d9cee8f0

Make it possible to select GL_NEAREST scaling.
author reimar
date Thu, 15 Jul 2010 18:57:57 +0000
parents a0a48c62bb8c
children 171c560d0ba1
files libvo/vo_gl.c
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/vo_gl.c	Thu Jul 15 18:50:57 2010 +0000
+++ b/libvo/vo_gl.c	Thu Jul 15 18:57:57 2010 +0000
@@ -507,12 +507,19 @@
          ati_hack, force_pbo, use_rectangle, use_yuv);
 }
 
+static GLint get_scale_type(int chroma) {
+  int nearest = (chroma ? cscale : lscale) & 64;
+  if (nearest)
+    return mipmap_gen ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST;
+  return mipmap_gen ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR;
+}
+
 /**
  * \brief Initialize a (new or reused) OpenGL context.
  * set global gl-related variables to their default values
  */
 static int initGl(uint32_t d_width, uint32_t d_height) {
-  int scale_type = mipmap_gen ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR;
+  GLint scale_type = get_scale_type(0);
   autodetectGlExtensions();
   gl_target = use_rectangle == 1 ? GL_TEXTURE_RECTANGLE : GL_TEXTURE_2D;
   yuvconvtype = SET_YUV_CONVERSION(use_yuv) |
@@ -540,6 +547,7 @@
   if (is_yuv) {
     int i;
     int xs, ys;
+    scale_type = get_scale_type(1);
     mp_get_chroma_shift(image_format, &xs, &ys);
     mpglGenTextures(21, default_texs);
     default_texs[21] = 0;