summaryrefslogtreecommitdiffstats
path: root/libvo/gl_common.c
Commit message (Collapse)AuthorAgeFilesLines
* vo_gl: cocoa: point swapinterval to cocoa_common functionStefano Pigozzi2011-12-061-0/+2
| | | | | | | | Currently there is no way to set the swap interval with a function that has a signature compatible with other platforms' gl extensions. Make a wrapper function around the gui toolkit method of setting the swap interval property, and point gl->SwapInterval to it.
* vo_gl: cocoa: decouple cocoa_common from gl_commonStefano Pigozzi2011-12-061-2/+6
| | | | | | Remove the useless dependency on MPGLContext from cocoa_common, since it was used just to access the vo struct. Change gl_common to pass the vo struct directly to all the cocoa_common functions.
* libvo: remove title argument from struct vo_driver.configwm42011-12-061-11/+7
| | | | | | | | | | This affects only the "new" VO API. The config() title argument was barely used, and it's hardcoded to "MPlayer" in vf_vo.c. The X11 and the Cocoa GUI backends, which are the only ones properly supporting window titles, ignored this argument. Remove the title argument. Add the vo_get_window_title function. All GUI VOs are supposed to use it for the window title.
* vo_gl: add native mac osx Cocoa backend for vo_glStefano Pigozzi2011-11-261-0/+61
| | | | | | | | | Add native Cocoa code to display an OpenGL window. Some of the code is based on the OpenGL parts of vo_corevideo but I took the time to remove old code based on Carbon. There is autodetection in the configure script but you can use --enable[disable]-cocoa to enable[disable] this.
* vo_gl: fix cscale=4 and cscale=5 doing nothingwm42011-11-251-2/+4
| | | | | | | | | | | | | | | | The ARB shader code generated at the end of the shaders for scaling mode 4 and 5 was something like: MAD yuv.g, b.r, {0.5}, a.r; This appears to be semantically equivalent with: MAD yuv.g, b.rrrr, {0.5, 0, 0, 0}, a.rrrr; This has the consequence that the result register, yuv.g, will not contain the value computed by the scale filter, but a.r. a.r is the unchanged value sampled from the normal texture coordinates, so the filter did effectively nothing and behaved as if cscale=0 was specified. The basic mistake here is that yuv.g does not specify a single register, but it specifies the full vector register yuv, with writing enabled on the g channel. This means yuv.g will assigned the g channel of the the result vector computed by the MAD instruction.
* vo_gl: fix 10 bit with Mesa drivers (Intel/Nouveau on Linux)wm42011-11-251-4/+8
| | | | | | | | | | | | | | | | | | The GL_LUMINANCE16 texture format had only 8 bit precision on Mesa based drivers. This caused heavy degradation of the image when playing formats with more than 8 bits per pixel, such as 10 bit h264. Use GL_R16 instead, which at least Mesa and Nvidia drivers actually implement as 16 bit textures. Since sampling from this texture format doesn't return anything meaningful in the other color components (unlike luminance textures), the shader code has to be slightly changed. GL_R16 requires the GL_ARB_texture_rg extension. Check for it, and fall back to the old texture format if it's not available. The low precision of the GL_LUMINANCE16 format has just been fixed in upstream Mesa, but it'll take a while before that fix is available in distros.
* vo_gl: make shader code generation easier to deal withwm42011-11-251-152/+188
| | | | | | | | | The shader code was generated from very long strings with lots of format specifiers with snprintf calls. It was almost impossible to quickly tell what variables were inserted where in the shader. Make this more readable by implementing a kind of simple variable substitution, which allows replacing the format specifiers in the code templates with with variable names.
* vo_gl: implement screenshotswm42011-11-251-0/+19
|
* vo_gl: remove support for nvidia register combiners (yuv=1)wm42011-10-241-109/+0
| | | | | | | | | | | | | The register combiner color conversion is broken and seems to use a slightly incorrect color matrix (the image looks gray-ish). Completely remove all code related to nVidia register combiners. Unless you have an ancient nVidia GPU, there's no reason to prefer register combiners over fragment shaders. Users with ancient GPUs without fragment shader support can just use -vo xv. Passing yuv=1 (register combiners) as sub option will print a warning and use yuv=2 (fragment shaders) instead.
* vo_gl: remove mesa-buffer suboptionwm42011-10-241-4/+0
| | | | | | | This option enabled using Mesa specific functions, which have never been widely supported, and were removed from Mesa in 2010. http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb2a66fd0c095fe03be5aaf88c8d48f5867425d3
* vo_gl: move window creation functions from vo_gl.c into gl_common.cwm42011-10-241-32/+68
| | | | | | | Now all windowing specific code is in gl_common.c. init_mpglcontext() used to set dummy callbacks for non-optional windowing callbacks. Remove these, as they only lead to confusion.
* vo_gl/sdl: use desktop resolution for fullscreen modewm42011-10-241-0/+2
| | | | | Before the SDL code would change screen resolution when switching to fullscreen. Try to keep existing desktop resolution instead.
* vo_gl: convert to new API, clean up codewm42011-10-241-1450/+1478
| | | | | | | Reformat vo_gl.c, gl_common.c, gl_common.h. Remove all global variables and move them into a context struct (the Windows and SDL backends still refer to global_vo though). Change vo_gl.c to use the "new" VO API.
* vo_gl: fix YUY2/YVYU colorspace mixupreimar2011-07-061-1/+3
| | | | | | Second GL_YCBCR_MESA format is YVYU, not YUY2. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33694 b3059339-0415-0410-9bf9-f77b7e298cf2
* vo_gl: Request GL_LUMINANCE16 for 16-bit YUV inputreimar2011-06-291-2/+2
| | | | | | | Request GL_LUMINANCE16 as internal format for > 8 bit YUV formats. Have yet to find a system that actually provides that though. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33453 b3059339-0415-0410-9bf9-f77b7e298cf2
* vo_gl: don't accept 9/10-bit formats as inputreimar2011-06-291-1/+1
| | | | | | | | | Make mp_get_chroma_shift() simpler/more generic and add an argument to get the per-component bit depth. Use this to check more properly for supported formats in gl and gl2 vos (only 8 and 16 bit are supported, 9 and 10 are not). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33452 b3059339-0415-0410-9bf9-f77b7e298cf2
* cleanup: remove NULL checks before free() all over the codecboesch2010-11-141-2/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32624 b3059339-0415-0410-9bf9-f77b7e298cf2
* vo_gl: Move the read_pnm function into a separate filecigaes2010-11-021-60/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32513 b3059339-0415-0410-9bf9-f77b7e298cf2
* vo_gl: Extract code to read a pnm file into a separate functionreimar2010-11-021-24/+48
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32479 b3059339-0415-0410-9bf9-f77b7e298cf2
* vo_gl: Add initial stereo supportreimar2010-11-021-0/+85
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31633 b3059339-0415-0410-9bf9-f77b7e298cf2
* vo_gl, csputils: dual-license under LGPL v2.1reimar2010-11-021-0/+5
| | | | | | | | | | | | Dual-license gl_common and vo_gl under the LGPL v2.1 or later as an alternative to the GPL license. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31375 b3059339-0415-0410-9bf9-f77b7e298cf2 Allow LGPL for csputils as well, they were previously part of gl_common and are still an important part of it. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31376 b3059339-0415-0410-9bf9-f77b7e298cf2
* Merge svn changes up to r31145Uoti Urpala2010-05-301-1/+6
|\
| * Handle chroma texture size becoming 0, e.g. due to bad rounding.reimar2010-05-091-1/+6
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31143 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r31097Uoti Urpala2010-04-261-28/+112
|\|
| * Support for auto-selecting the OpenGL backend.reimar2010-04-251-0/+8
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31086 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Add reinitialization support. Necessary for fullscreen on OSX.reimar2010-04-251-0/+2
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31085 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Missing space in error message.reimar2010-04-251-1/+1
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31083 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Share SDL initialization code.reimar2010-04-251-2/+2
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31079 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Fullscreen support for -vo gl using SDL.reimar2010-04-251-0/+13
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31077 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Window resizing support for -vo gl with SDL backend.reimar2010-04-251-0/+4
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31075 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Add sdl_common file and use it to share the input handling between -vo glreimar2010-04-251-5/+12
| | | | | | | | | | | | | | with SDL backend and -vo sdl. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31074 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Use SDL_GL_ProcAddress to work around conflicts between -lGLreimar2010-04-251-0/+10
| | | | | | | | | | | | | | and -framework OpenGL. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31073 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Update copyright and email address.reimar2010-04-251-1/+1
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31072 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Clarify that the GL_TEXT_FRAGMENT_SHADER_ATI bug workaround is for OSX,reimar2010-04-251-3/+3
| | | | | | | | | | | | | | and which versions are known good/known bad. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31071 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Add workaroound for yuv=7 mode - does hurt speed but not muchreimar2010-04-241-1/+5
| | | | | | | | | | | | | | and this code should only be used when it is the only option. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31068 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Try harder to find linked OpenGL functions.reimar2010-04-241-27/+22
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31066 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Some crash-resilience fixes.reimar2010-04-241-0/+2
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31063 b3059339-0415-0410-9bf9-f77b7e298cf2
| * First steps to support -vo gl with SDL-based Window handling.reimar2010-04-241-0/+39
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31062 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r31020Uoti Urpala2010-04-261-0/+14
|\|
| * Factor out the YUV->RGB conversion auto-selection and alsoreimar2010-04-041-0/+14
| | | | | | | | | | | | | | | | enable auto-selection of ATI fragment shaders since they should do accurate conversions now. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31006 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r31004Uoti Urpala2010-04-261-272/+346
|\|
| * Share more code between the two ATI fragment shader YUV to RGBreimar2010-04-041-69/+87
| | | | | | | | | | | | | | | | conversion methods and extend them to support more accurate conversion (though at the cost of some speed). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30995 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Try to detect and work around broken glXGetProcAddress on atreimar2010-04-031-0/+6
| | | | | | | | | | | | | | least PPC OS X 10.4. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30994 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Implement OpenGL-based YUV to RGB version for Radeon 9200 classreimar2010-04-031-0/+50
| | | | | | | | | | | | | | cards on OS X. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30993 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Indentation fix.reimar2010-04-031-1/+1
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30988 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Add mpgl prefix to all OpenGL-related function pointers.reimar2010-04-031-254/+254
| | | | | | | | | | | | | | | | | | This is necessary because at least the GetString symbol causes clashes on PPC OSX 10.4, causing -vo gl to always crash. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30987 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r30907Uoti Urpala2010-04-261-117/+117
|\|
| * Add newlines to generated fragment program to make both fragment program dumpreimar2010-03-121-117/+117
| | | | | | | | | | | | | | with -v more readable and compiler error message more understandable. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30882 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r30463Uoti Urpala2010-03-091-1/+1
|\| | | | | | | | | | | Note that r30455 is wrong, that commit does not in fact change the default behavior as claimed in the commit message. It only breaks "-af-adv force=0", which was already pretty much useless though.
| * Try the more specific names first for the SwapInterval function to make it lessreimar2010-01-281-1/+1
| | | | | | | | | | | | | | likely we get an incompatible one. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30451 b3059339-0415-0410-9bf9-f77b7e298cf2
| * glXSwapIntervalEXT is defined to take different arguments from ↵reimar2010-01-281-1/+1
| | | | | | | | | | | | | | | | | | | | glXSwapIntervalSGI, so do not try to use it. Patch by Stephen Warren [swarren nvidia com] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30450 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r30185Uoti Urpala2010-01-081-0/+22
|\|
| * Add pointers to a few more standard OpenGL functions to ease future extensions.reimar2010-01-031-0/+22
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30179 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r30165Uoti Urpala2010-01-081-108/+35
|\|
| * Add support for 16-bit per component YUV formats.reimar2009-12-311-3/+16
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30152 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Extract functions to generate yuv->rgb matrices and lookup tables into areimar2009-12-311-101/+6
| | | | | | | | | | | | | | separate file. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30150 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Put the colourspace-related variables into a separate struct to easereimar2009-12-311-10/+10
| | | | | | | | | | | | | | extracting the code and sharing with other vos. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30149 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Support all planar YUV formats in OpenGL vos.reimar2009-12-301-4/+13
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30139 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r30104Uoti Urpala2009-12-301-29/+31
|\| | | | | | | Ignore the broken correct-pts change in r30100.
| * Change %f to %e in generated fragment programs to avoid losing precision ↵reimar2009-12-201-26/+26
| | | | | | | | | | | | unnecessarily. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30078 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Fix a broken indentation.reimar2009-12-191-1/+1
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30070 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Enable running fragment programs with YUV_CONVERSION_NONEreimar2009-12-191-2/+4