summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/vo.rst6
-rw-r--r--video/out/gl_common.c15
-rw-r--r--video/out/gl_common.h10
-rw-r--r--video/out/gl_header_fixes.h61
-rw-r--r--video/out/vo_opengl_old.c150
5 files changed, 6 insertions, 236 deletions
diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst
index c6158b6a10..cee765f1c8 100644
--- a/DOCS/man/vo.rst
+++ b/DOCS/man/vo.rst
@@ -687,11 +687,7 @@ Available video output drivers are:
control. Gamma can also be set independently for red, green and
blue.
5
- Use ATI-specific method (for older cards). This uses an
- ATI-specific extension (``GL_ATI_fragment_shader`` - not
- ``GL_ARB_fragment_shader``!). At least three texture units are
- needed. Provides saturation and hue control. This method is fast
- but inexact.
+ Removed. Used ATI-specific method (for older cards).
6
Use a 3D texture to do conversion via lookup. Needs the
``GL_ARB_fragment_program extension`` and at least four texture
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, &params->csp_params, 0);
- break;
- case YUV_CONVERSION_TEXT_FRAGMENT:
- glSetupYUVFragmentATI(vo, gl, &params->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: