# HG changeset patch # User Sam Lantinga # Date 1228588626 0 # Node ID 70b63882d2ef1ff26eeeb29edd21b63bd6bcd7fc # Parent e919f2e3700d74e6592a531d9ee97117ca4867a5 The YCbCr texture extension works now that bytes_per_pixel() returns the correct value for YUV textures. Yay! I'm still cheering for Ryan's pixel shader instead, since once it works different shaders can handle all the YUV formats. diff -r e919f2e3700d -r 70b63882d2ef src/video/SDL_renderer_gl.c --- a/src/video/SDL_renderer_gl.c Sat Dec 06 18:22:28 2008 +0000 +++ b/src/video/SDL_renderer_gl.c Sat Dec 06 18:37:06 2008 +0000 @@ -660,6 +660,26 @@ format = GL_BGRA; type = GL_UNSIGNED_INT_2_10_10_10_REV; break; +#if 0 /* Ryan's pixel shader code should be better, once it works. :) */ + case SDL_PIXELFORMAT_UYVY: +// if (renderdata->GL_MESA_ycbcr_texture) { +// internalFormat = 3; +// format = GL_YCBCR_MESA; +// type = GL_UNSIGNED_SHORT_8_8_MESA; +// } else if (renderdata->GL_APPLE_ycbcr_422) { + internalFormat = GL_RGB; + format = GL_YCBCR_422_APPLE; +#if SDL_BYTEORDER == SDL_LIL_ENDIAN + type = GL_UNSIGNED_SHORT_8_8_APPLE; +#else + type = GL_UNSIGNED_SHORT_8_8_REV_APPLE; +#endif +// } else { +// SDL_SetError("Unsupported texture format"); +// return -1; +// } + break; +#else case SDL_PIXELFORMAT_UYVY: if (renderdata->GL_ARB_fragment_program_supported) { if (renderdata->fragment_program_UYVY == 0) { @@ -680,6 +700,7 @@ return -1; } break; +#endif default: SDL_SetError("Unsupported texture format"); return -1; @@ -867,7 +888,7 @@ } renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1); renderdata->glPixelStorei(GL_UNPACK_ROW_LENGTH, - (pitch / bytes_per_pixel(texture->format) / ((GL_TextureData *)texture->driverdata)->HACK_RYAN_FIXME)); + (pitch / bytes_per_pixel(texture->format)) / ((GL_TextureData *)texture->driverdata)->HACK_RYAN_FIXME); } static int