[vlc-commits] opengl: add check for opengl >= 2.0

Ilkka Ollakka git at videolan.org
Sat Jun 30 15:01:42 CEST 2012


vlc | branch: master | Ilkka Ollakka <ileoo at videolan.org> | Sat Jun 30 15:58:39 2012 +0300| [e3fc9953f4bca375ee5bcbd6a5e150e38c6e0cd7] | committer: Ilkka Ollakka

opengl: add check for opengl >= 2.0

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e3fc9953f4bca375ee5bcbd6a5e150e38c6e0cd7
---

 modules/video_output/opengl.c |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/modules/video_output/opengl.c b/modules/video_output/opengl.c
index 34c270c..e604572 100644
--- a/modules/video_output/opengl.c
+++ b/modules/video_output/opengl.c
@@ -241,7 +241,9 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt,
     }
 
 
-    bool supports_fp = true;
+    const char *ogl_version = glGetString(GL_VERSION);
+    float f_ogl_version = atof(ogl_version);
+    bool supports_shaders = f_ogl_version >= 2.0f;
     GLint max_texture_units = 0;
     glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &max_texture_units);
 
@@ -281,7 +283,7 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt,
     /* Use YUV if possible and needed */
     bool need_fs_yuv = false;
     float yuv_range_correction = 1.0;
-    if ( max_texture_units >= 3 &&
+    if ( max_texture_units >= 3 && supports_shaders &&
         vlc_fourcc_IsYUV(fmt->i_chroma) && !vlc_fourcc_IsYUV(vgl->fmt.i_chroma)) {
         const vlc_fourcc_t *list = vlc_fourcc_GetYUVFallback(fmt->i_chroma);
         while (*list) {
@@ -360,7 +362,7 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt,
 
     if( !vgl->CreateShader || !vgl->ShaderSource || !vgl->CreateProgram )
     {
-        fprintf(stderr, "Looks like you don't have all the opengl we need, only %s, giving up\n", glGetString(GL_VERSION));
+        fprintf(stderr, "Looks like you don't have all the opengl we need. Driver is %s, giving up\n", glGetString(GL_VERSION));
         free( vgl );
         return NULL;
     }
@@ -379,7 +381,7 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt,
     vgl->program[1] = 0;
     vgl->local_count = 0;
     vgl->shader[0] = vgl->shader[1] = vgl->shader[2] = -1;
-    if (supports_fp) {
+    if (supports_shaders) {
         char *code = NULL;
 
             /* [R/G/B][Y U V O] from TV range to full range
@@ -515,7 +517,7 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt,
 
                     if( link_status == GL_FALSE )
                     {
-                        msg_Err( vgl->gl, "Unable to use program %d", i );
+                        fprintf( stderr, "Unable to use program %d", i );
                         free( vgl );
                         return NULL;
                     }



More information about the vlc-commits mailing list