[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