summaryrefslogtreecommitdiffstats
path: root/video/out
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-02 00:56:54 +0100
committerwm4 <wm4@nowhere>2015-01-02 00:59:27 +0100
commit7873301be8a0ed3b6a70c5a32a36e4fa52284ffb (patch)
tree33003e434facf17bbfb1595ee118357cbb877024 /video/out
parent4ed0907f2d596ba66652ca6d739cc12dae7dc2a0 (diff)
downloadmpv-7873301be8a0ed3b6a70c5a32a36e4fa52284ffb.tar.bz2
mpv-7873301be8a0ed3b6a70c5a32a36e4fa52284ffb.tar.xz
vo_opengl_old: remove ancient ATI-specific YUV conversions
While there's no actual need to get rid of these, I want to make sure nobody actually needs this stuff, and removing it is the best way to get to know this. We still can revert this commit if it turns out there is a significant need for this stuff. The final goal is removing vo_opengl_old entirely. Add a warning, which basically announces this intention.
Diffstat (limited to 'video/out')
-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
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, &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: