Commit 701d1347 authored by Felix Paul Kühne's avatar Felix Paul Kühne Committed by Felix Paul Kühne

opengl: fixed playback of 10bit content on Macs with OpenGL 1.4 drivers,...

opengl: fixed playback of 10bit content on Macs with OpenGL 1.4 drivers, notably using the GMA 950 chipset (close #5973)

We do so by forcefully disabling the 16bit shaders, which the chipset pretends to support, but actually doesn't.
(cherry picked from commit adcc3b14)
parent 7f0418af
...@@ -10,6 +10,8 @@ Video Output: ...@@ -10,6 +10,8 @@ Video Output:
* Misc fixes in OpenGL module, on all platforms * Misc fixes in OpenGL module, on all platforms
* Fix video output on PowerPC-based Macs equipped with an ATI Radeon 7500, * Fix video output on PowerPC-based Macs equipped with an ATI Radeon 7500,
an ATI Radeon 9200 or a NVIDIA GeForceFX 5200 Ultra. an ATI Radeon 9200 or a NVIDIA GeForceFX 5200 Ultra.
* Fix video output of 10bit encoded contents on Intel-based Macs equipped
with an Intel GMA 950 chipset running OS X 10.6 or later.
Access: Access:
* Rework Digital TV module for Windows. DVB-T and DVB-C should work again * Rework Digital TV module for Windows. DVB-T and DVB-C should work again
......
...@@ -130,6 +130,24 @@ static inline int GetAlignedSize(unsigned size) ...@@ -130,6 +130,24 @@ static inline int GetAlignedSize(unsigned size)
static bool IsLuminance16Supported(int target) static bool IsLuminance16Supported(int target)
{ {
#if defined(MACOS_OPENGL)
/* OpenGL 1.x on OS X does _not_ support 16bit shaders, but pretends to.
* That's why we enforce return false here, even though the actual code below
* would return true.
* This fixes playback of 10bit content on the Intel GMA 950 chipset, which is
* the only "GPU" supported by 10.6 and 10.7 with just an OpenGL 1.4 driver.
*
* Presumely, this also improves playback on the GMA 3100, GeForce FX 5200,
* GeForce4 Ti, GeForce3, GeForce2 MX/4 MX and the Radeon 8500 when
* running OS X 10.5. */
const GLubyte * p_glversion;
float f_glversion;
p_glversion = glGetString (GL_VERSION);
sscanf((char *)p_glversion, "%f", &f_glversion);
if (f_glversion < 2)
return false;
#endif
GLuint texture; GLuint texture;
glGenTextures(1, &texture); glGenTextures(1, &texture);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment