diff options
Diffstat (limited to 'video/out')
-rw-r--r-- | video/out/gl_common.c | 15 | ||||
-rw-r--r-- | video/out/gl_common.h | 10 | ||||
-rw-r--r-- | video/out/gl_header_fixes.h | 61 | ||||
-rw-r--r-- | video/out/vo_opengl_old.c | 150 |
4 files changed, 5 insertions, 231 deletions
diff --git a/video/out/gl_common.c b/video/out/gl_common.c index 23de622dd1..dcfaf32398 100644 --- a/video/out/gl_common.c +++ b/video/out/gl_common.c @@ -435,21 +435,6 @@ static const struct gl_functions gl_functions[] = { {0} }, }, - // Ancient ATI extensions. - { - .extension = "ATI_fragment_shader", - .ver_removed = 300, - .ver_es_removed = 100, - .functions = (const struct gl_function[]) { - DEF_FN_NAMES(BeginFragmentShader, "glBeginFragmentShaderATI"), - DEF_FN_NAMES(EndFragmentShader, "glEndFragmentShaderATI"), - DEF_FN_NAMES(SampleMap, "glSampleMapATI"), - DEF_FN_NAMES(ColorFragmentOp2, "glColorFragmentOp2ATI"), - DEF_FN_NAMES(ColorFragmentOp3, "glColorFragmentOp3ATI"), - DEF_FN_NAMES(SetFragmentShaderConstant, "glSetFragmentShaderConstantATI"), - {0} - }, - }, // For gl_hwdec_vdpau.c // http://www.opengl.org/registry/specs/NV/vdpau_interop.txt { diff --git a/video/out/gl_common.h b/video/out/gl_common.h index 103b458203..92ba81a249 100644 --- a/video/out/gl_common.h +++ b/video/out/gl_common.h @@ -268,16 +268,6 @@ struct GL { GLsizei, GLint, GLenum, GLenum, const GLvoid *); - void (GLAPIENTRY *BeginFragmentShader)(void); - void (GLAPIENTRY *EndFragmentShader)(void); - void (GLAPIENTRY *SampleMap)(GLuint, GLuint, GLenum); - void (GLAPIENTRY *ColorFragmentOp2)(GLenum, GLuint, GLuint, GLuint, GLuint, - GLuint, GLuint, GLuint, GLuint, GLuint); - void (GLAPIENTRY *ColorFragmentOp3)(GLenum, GLuint, GLuint, GLuint, GLuint, - GLuint, GLuint, GLuint, GLuint, GLuint, - GLuint, GLuint, GLuint); - void (GLAPIENTRY *SetFragmentShaderConstant)(GLuint, const GLfloat *); - void (GLAPIENTRY *GenVertexArrays)(GLsizei, GLuint *); void (GLAPIENTRY *BindVertexArray)(GLuint); GLint (GLAPIENTRY *GetAttribLocation)(GLuint, const GLchar *); diff --git a/video/out/gl_header_fixes.h b/video/out/gl_header_fixes.h index 6cdb8fbebc..0a8cef9684 100644 --- a/video/out/gl_header_fixes.h +++ b/video/out/gl_header_fixes.h @@ -34,14 +34,6 @@ #endif #endif -/** - * \defgroup glextdefines OpenGL extension defines - * - * conditionally define all extension defines used. - * vendor specific extensions should be marked as such - * (e.g. _NV), _ARB is not used to ease readability. - * \{ - */ #ifndef GL_TEXTURE_3D #define GL_TEXTURE_3D 0x806F #endif @@ -54,57 +46,6 @@ #ifndef GL_GENERATE_MIPMAP #define GL_GENERATE_MIPMAP 0x8191 #endif -#ifndef GL_TEXT_FRAGMENT_SHADER_ATI -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 -#endif -#ifndef GL_FRAGMENT_SHADER_ATI -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#endif -#ifndef GL_NUM_FRAGMENT_REGISTERS_ATI -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#endif -#ifndef GL_REG_0_ATI -#define GL_REG_0_ATI 0x8921 -#endif -#ifndef GL_REG_1_ATI -#define GL_REG_1_ATI 0x8922 -#endif -#ifndef GL_REG_2_ATI -#define GL_REG_2_ATI 0x8923 -#endif -#ifndef GL_CON_0_ATI -#define GL_CON_0_ATI 0x8941 -#endif -#ifndef GL_CON_1_ATI -#define GL_CON_1_ATI 0x8942 -#endif -#ifndef GL_CON_2_ATI -#define GL_CON_2_ATI 0x8943 -#endif -#ifndef GL_CON_3_ATI -#define GL_CON_3_ATI 0x8944 -#endif -#ifndef GL_ADD_ATI -#define GL_ADD_ATI 0x8963 -#endif -#ifndef GL_MUL_ATI -#define GL_MUL_ATI 0x8964 -#endif -#ifndef GL_MAD_ATI -#define GL_MAD_ATI 0x8968 -#endif -#ifndef GL_SWIZZLE_STR_ATI -#define GL_SWIZZLE_STR_ATI 0x8976 -#endif -#ifndef GL_4X_BIT_ATI -#define GL_4X_BIT_ATI 2 -#endif -#ifndef GL_8X_BIT_ATI -#define GL_8X_BIT_ATI 4 -#endif -#ifndef GL_BIAS_BIT_ATI -#define GL_BIAS_BIT_ATI 8 -#endif #ifndef GL_MAX_TEXTURE_UNITS #define GL_MAX_TEXTURE_UNITS 0x84E2 #endif @@ -219,8 +160,6 @@ #ifndef GL_RGBA32F #define GL_RGBA32F 0x8814 #endif -/** \} */ // end of glextdefines group - #if HAVE_GL_WIN32 && !defined(WGL_CONTEXT_MAJOR_VERSION_ARB) /* these are supposed to be defined in wingdi.h but mingw's is too old */ diff --git a/video/out/vo_opengl_old.c b/video/out/vo_opengl_old.c index 7f81a727e5..dc105baaaa 100644 --- a/video/out/vo_opengl_old.c +++ b/video/out/vo_opengl_old.c @@ -175,7 +175,6 @@ static inline int glYUVLargeRange(int conv) { switch (conv) { case YUV_CONVERSION_NONE: - case YUV_CONVERSION_COMBINERS_ATI: case YUV_CONVERSION_FRAGMENT_LOOKUP3D: case YUV_CONVERSION_TEXT_FRAGMENT: return 0; @@ -515,102 +514,6 @@ static int glCreatePPMTex(GL *gl, GLenum target, GLenum fmt, GLint filter, return 1; } - -/** - * \brief Setup ATI version of register combiners for YUV to RGB conversion. - * \param csp_params parameters used for colorspace conversion - * \param text if set use the GL_ATI_text_fragment_shader API as - * used on OS X. - */ -static void glSetupYUVFragmentATI(struct vo *vo, GL *gl, - struct mp_csp_params *csp_params, int text) -{ - GLint i; - float yuv2rgb[3][4]; - - gl->GetIntegerv(GL_MAX_TEXTURE_UNITS, &i); - if (i < 3) - MP_ERR(vo, "3 texture units needed for YUV combiner (ATI) support (found %i)\n", i); - - mp_get_yuv2rgb_coeffs(csp_params, yuv2rgb); - for (i = 0; i < 3; i++) { - int j; - yuv2rgb[i][3] -= -0.5 * (yuv2rgb[i][1] + yuv2rgb[i][2]); - for (j = 0; j < 4; j++) { - yuv2rgb[i][j] *= 0.125; - yuv2rgb[i][j] += 0.5; - if (yuv2rgb[i][j] > 1) - yuv2rgb[i][j] = 1; - if (yuv2rgb[i][j] < 0) - yuv2rgb[i][j] = 0; - } - } - if (text == 0) { - GLfloat c0[4] = { yuv2rgb[0][0], yuv2rgb[1][0], yuv2rgb[2][0] }; - GLfloat c1[4] = { yuv2rgb[0][1], yuv2rgb[1][1], yuv2rgb[2][1] }; - GLfloat c2[4] = { yuv2rgb[0][2], yuv2rgb[1][2], yuv2rgb[2][2] }; - GLfloat c3[4] = { yuv2rgb[0][3], yuv2rgb[1][3], yuv2rgb[2][3] }; - if (!gl->BeginFragmentShader || !gl->EndFragmentShader || - !gl->SetFragmentShaderConstant || !gl->SampleMap || - !gl->ColorFragmentOp2 || !gl->ColorFragmentOp3) { - MP_ERR(vo, "Combiner (ATI) functions missing!\n"); - return; - } - gl->GetIntegerv(GL_NUM_FRAGMENT_REGISTERS_ATI, &i); - if (i < 3) - MP_ERR(vo, "3 registers needed for YUV combiner (ATI) support (found %i)\n", i); - gl->BeginFragmentShader(); - gl->SetFragmentShaderConstant(GL_CON_0_ATI, c0); - gl->SetFragmentShaderConstant(GL_CON_1_ATI, c1); - gl->SetFragmentShaderConstant(GL_CON_2_ATI, c2); - gl->SetFragmentShaderConstant(GL_CON_3_ATI, c3); - gl->SampleMap(GL_REG_0_ATI, GL_TEXTURE0, GL_SWIZZLE_STR_ATI); - gl->SampleMap(GL_REG_1_ATI, GL_TEXTURE1, GL_SWIZZLE_STR_ATI); - gl->SampleMap(GL_REG_2_ATI, GL_TEXTURE2, GL_SWIZZLE_STR_ATI); - gl->ColorFragmentOp2(GL_MUL_ATI, GL_REG_1_ATI, GL_NONE, GL_NONE, - GL_REG_1_ATI, GL_NONE, GL_BIAS_BIT_ATI, - GL_CON_1_ATI, GL_NONE, GL_BIAS_BIT_ATI); - gl->ColorFragmentOp3(GL_MAD_ATI, GL_REG_2_ATI, GL_NONE, GL_NONE, - GL_REG_2_ATI, GL_NONE, GL_BIAS_BIT_ATI, - GL_CON_2_ATI, GL_NONE, GL_BIAS_BIT_ATI, - GL_REG_1_ATI, GL_NONE, GL_NONE); - gl->ColorFragmentOp3(GL_MAD_ATI, GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_CON_0_ATI, GL_NONE, GL_BIAS_BIT_ATI, - GL_REG_2_ATI, GL_NONE, GL_NONE); - gl->ColorFragmentOp2(GL_ADD_ATI, GL_REG_0_ATI, GL_NONE, GL_8X_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_CON_3_ATI, GL_NONE, GL_BIAS_BIT_ATI); - gl->EndFragmentShader(); - } else { - static const char template[] = - "!!ATIfs1.0\n" - "StartConstants;\n" - " CONSTANT c0 = {%e, %e, %e};\n" - " CONSTANT c1 = {%e, %e, %e};\n" - " CONSTANT c2 = {%e, %e, %e};\n" - " CONSTANT c3 = {%e, %e, %e};\n" - "EndConstants;\n" - "StartOutputPass;\n" - " SampleMap r0, t0.str;\n" - " SampleMap r1, t1.str;\n" - " SampleMap r2, t2.str;\n" - " MUL r1.rgb, r1.bias, c1.bias;\n" - " MAD r2.rgb, r2.bias, c2.bias, r1;\n" - " MAD r0.rgb, r0, c0.bias, r2;\n" - " ADD r0.rgb.8x, r0, c3.bias;\n" - "EndPass;\n"; - char buffer[512]; - snprintf(buffer, sizeof(buffer), template, - yuv2rgb[0][0], yuv2rgb[1][0], yuv2rgb[2][0], - yuv2rgb[0][1], yuv2rgb[1][1], yuv2rgb[2][1], - yuv2rgb[0][2], yuv2rgb[1][2], yuv2rgb[2][2], - yuv2rgb[0][3], yuv2rgb[1][3], yuv2rgb[2][3]); - MP_DBG(vo, "generated fragment program:\n%s\n", buffer); - loadGPUProgram(vo, gl, GL_TEXT_FRAGMENT_SHADER_ATI, buffer); - } -} - // Replace all occurances of variables named "$"+name (e.g. $foo) in *text with // replace, and return the result. *text must have been allocated with talloc. static void replace_var_str(char **text, const char *name, const char *replace) @@ -1262,10 +1165,6 @@ static int glAutodetectYUVConversion(GL *gl) return YUV_CONVERSION_NONE; if (strstr(extensions, "GL_ARB_fragment_program")) return YUV_CONVERSION_FRAGMENT; - if (strstr(extensions, "GL_ATI_text_fragment_shader")) - return YUV_CONVERSION_TEXT_FRAGMENT; - if (strstr(extensions, "GL_ATI_fragment_shader")) - return YUV_CONVERSION_COMBINERS_ATI; return YUV_CONVERSION_NONE; } @@ -1283,12 +1182,6 @@ static void glSetupYUVConversion(struct vo *vo, GL *gl, if (params->chrom_texh == 0) params->chrom_texh = 1; switch (YUV_CONVERSION(params->type)) { - case YUV_CONVERSION_COMBINERS_ATI: - glSetupYUVFragmentATI(vo, gl, ¶ms->csp_params, 0); - break; - case YUV_CONVERSION_TEXT_FRAGMENT: - glSetupYUVFragmentATI(vo, gl, ¶ms->csp_params, 1); - break; case YUV_CONVERSION_FRAGMENT_LOOKUP: case YUV_CONVERSION_FRAGMENT_LOOKUP3D: case YUV_CONVERSION_FRAGMENT: @@ -1311,22 +1204,6 @@ static void glSetupYUVConversion(struct vo *vo, GL *gl, static void glEnableYUVConversion(GL *gl, GLenum target, int type) { switch (YUV_CONVERSION(type)) { - case YUV_CONVERSION_COMBINERS_ATI: - gl->ActiveTexture(GL_TEXTURE1); - gl->Enable(target); - gl->ActiveTexture(GL_TEXTURE2); - gl->Enable(target); - gl->ActiveTexture(GL_TEXTURE0); - gl->Enable(GL_FRAGMENT_SHADER_ATI); - break; - case YUV_CONVERSION_TEXT_FRAGMENT: - gl->ActiveTexture(GL_TEXTURE1); - gl->Enable(target); - gl->ActiveTexture(GL_TEXTURE2); - gl->Enable(target); - gl->ActiveTexture(GL_TEXTURE0); - gl->Enable(GL_TEXT_FRAGMENT_SHADER_ATI); - break; case YUV_CONVERSION_FRAGMENT_LOOKUP3D: case YUV_CONVERSION_FRAGMENT_LOOKUP: case YUV_CONVERSION_FRAGMENT_POW: @@ -1346,26 +1223,6 @@ static void glEnableYUVConversion(GL *gl, GLenum target, int type) static void glDisableYUVConversion(GL *gl, GLenum target, int type) { switch (YUV_CONVERSION(type)) { - case YUV_CONVERSION_COMBINERS_ATI: - gl->ActiveTexture(GL_TEXTURE1); - gl->Disable(target); - gl->ActiveTexture(GL_TEXTURE2); - gl->Disable(target); - gl->ActiveTexture(GL_TEXTURE0); - gl->Disable(GL_FRAGMENT_SHADER_ATI); - break; - case YUV_CONVERSION_TEXT_FRAGMENT: - gl->Disable(GL_TEXT_FRAGMENT_SHADER_ATI); - // HACK: at least the Mac OS X 10.5 PPC Radeon drivers are broken and - // without this disable the texture units while the program is still - // running (10.4 PPC seems to work without this though). - gl->Flush(); - gl->ActiveTexture(GL_TEXTURE1); - gl->Disable(target); - gl->ActiveTexture(GL_TEXTURE2); - gl->Disable(target); - gl->ActiveTexture(GL_TEXTURE0); - break; case YUV_CONVERSION_FRAGMENT_LOOKUP3D: case YUV_CONVERSION_FRAGMENT_LOOKUP: case YUV_CONVERSION_FRAGMENT_POW: @@ -2157,8 +2014,8 @@ static int preinit(struct vo *vo) { struct gl_priv *p = vo->priv; - if (p->use_yuv == 1) { - MP_WARN(vo, "yuv=1 (nVidia register combiners) have" + if (p->use_yuv == 1 || p->use_yuv == 5 || p->use_yuv == 7) { + MP_WARN(vo, "Ancient nvidia/ATI specific yuv modes have" " been removed, using yuv=2 instead.\n"); p->use_yuv = 2; } @@ -2181,6 +2038,9 @@ static int preinit(struct vo *vo) MP_VERBOSE(vo, "Using %d as slice height " "(0 means image height).\n", p->slice_height); + MP_WARN(vo, "This video output is deprecated and will be removed in the future.\n" + "If --vo=opengl does not work for you, complain on the bug tracker.\n"); + return 0; err_out: |