diff src/SDL_compat.c @ 2226:0e70b4b8cf84

Date: Sat, 11 Aug 2007 02:03:16 +0200 (CEST) From: couriersud arcor.de To: slouken@libsdl.org Subject: Directfb driver for SDL1.3 Hi, the attachment contains a patch for a SDL1.3 directfb driver. It supports: - Renderer "directfb": Hardware acceleration as supported by the underlying directfb driver. With a radeon X850, testsprite2 runs at 50% to 70% of OpenGL (X11, dri) performance. Also supports hardware accelerated yuv overlays. This must be enabled by sett ing: export SDL_DIRECTFB_YUV_DIRECT=1 - Renderer "opengl" Supports software opengl using mesa opengl (make linux-directfb). Some more information may be found in README.DirectFB There will certainly still be some bugs, and there is some debug code around. When I find some time, I will compile against directfb-0.9.25 as distributed with ubuntu 7.04. The diff also contains a fix for SDL_LockYUVOverlay fixing a bug in *pixels and pitches initialization. Kind regards, couriersud
author Sam Lantinga <slouken@libsdl.org>
date Sat, 11 Aug 2007 21:51:19 +0000
parents 926294b2bb4e
children bb67fd5ccfdb
line wrap: on
line diff
--- a/src/SDL_compat.c	Sat Aug 11 21:44:49 2007 +0000
+++ b/src/SDL_compat.c	Sat Aug 11 21:51:19 2007 +0000
@@ -1440,19 +1440,21 @@
         < 0) {
         return -1;
     }
+    overlay->pixels[0] = (Uint8 *) pixels;
+    overlay->pitches[0] = pitch;
     switch (overlay->format) {
     case SDL_YV12_OVERLAY:
     case SDL_IYUV_OVERLAY:
-        overlay->pixels[0] = (Uint8 *) pixels;
+        overlay->pitches[1] = pitch / 2;
+        overlay->pitches[2] = pitch / 2;
         overlay->pixels[1] =
             overlay->pixels[0] + overlay->pitches[0] * overlay->h;
         overlay->pixels[2] =
-            overlay->pixels[1] + overlay->pitches[1] * overlay->h;
+            overlay->pixels[1] + overlay->pitches[1] * overlay->h / 2;
         break;
     case SDL_YUY2_OVERLAY:
     case SDL_UYVY_OVERLAY:
     case SDL_YVYU_OVERLAY:
-        overlay->pixels[0] = (Uint8 *) pixels;
         break;
     }
     return 0;