Mercurial > sdl-ios-xcode
diff src/video/photon/SDL_photon.h @ 3108:aa1897bee1e9
Continue working on QNX Photon with OpenGL ES support
author | Mike Gorchak <lestat@i.com.ua> |
---|---|
date | Tue, 28 Apr 2009 04:30:52 +0000 |
parents | cad1aefa2ed9 |
children | 7f684f249ec9 |
line wrap: on
line diff
--- a/src/video/photon/SDL_photon.h Fri Apr 24 03:46:54 2009 +0000 +++ b/src/video/photon/SDL_photon.h Tue Apr 28 04:30:52 2009 +0000 @@ -27,28 +27,78 @@ #ifndef __SDL_PHOTON_H__ #define __SDL_PHOTON_H__ +/* GF headers must be included first for the Photon GF functions */ +#if defined(SDL_VIDEO_OPENGL_ES) + #include <gf/gf.h> + #include <GLES/egl.h> +#endif /* SDL_VIDEO_OPENGL_ES */ + +#include "SDL_config.h" #include "../SDL_sysvideo.h" #include <Ph.h> +#include <Pt.h> +#include <photon/PkKeyDef.h> + +/* Maximum display devices, which can handle SDL Photon driver */ +#define SDL_VIDEO_PHOTON_MAX_RIDS 16 typedef struct SDL_VideoData { + PhRid_t rid[SDL_VIDEO_PHOTON_MAX_RIDS]; + uint32_t avail_rids; + uint32_t current_device_id; + #if defined(SDL_VIDEO_OPENGL_ES) + gf_dev_t gfdev; /* GF device handle */ + gf_dev_info_t gfdev_info; /* GF device information */ + SDL_bool gfinitialized; /* GF device initialization status */ + EGLDisplay egldisplay; /* OpenGL ES display connection */ + uint32_t egl_refcount; /* OpenGL ES reference count */ + uint32_t swapinterval; /* OpenGL ES default swap interval */ + #endif /* SDL_VIDEO_OPENGL_ES */ } SDL_VideoData; -#define SDL_VIDEO_PHOTON_DEVICENAME_MAX 257 +/* This is hardcoded value in photon/Pg.h */ +#define SDL_VIDEO_PHOTON_DEVICENAME_MAX 41 +#define SDL_VIDEO_PHOTON_MAX_CURSOR_SIZE 128 + +/* Maximum event message size with data payload */ +#define SDL_VIDEO_PHOTON_EVENT_SIZE 8192 typedef struct SDL_DisplayData { + uint32_t device_id; uint32_t custom_refresh; /* Custom refresh rate for all modes */ SDL_DisplayMode current_mode; /* Current video mode */ uint8_t description[SDL_VIDEO_PHOTON_DEVICENAME_MAX]; /* Device description */ uint32_t caps; /* Device capabilities */ + PhCursorDef_t* cursor; /* Global cursor settings */ + SDL_bool cursor_visible; /* SDL_TRUE if cursor visible */ + uint32_t cursor_size; /* Cursor size in memory w/ structure */ + #if defined(SDL_VIDEO_OPENGL_ES) + gf_display_t display; /* GF display handle */ + gf_display_info_t display_info; /* GF display information */ + #endif /* SDL_VIDEO_OPENGL_ES */ } SDL_DisplayData; +/* Maximum amount of OpenGL ES framebuffer configurations */ +#define SDL_VIDEO_GF_OPENGLES_CONFS 32 + typedef struct SDL_WindowData { - SDL_bool uses_gles; /* if true window must support OpenGL ES*/ + SDL_bool uses_gles; /* if true window must support OpenGL ES*/ + PtWidget_t* window; /* window handle */ + #if defined(SDL_VIDEO_OPENGL_ES) + EGLConfig gles_configs[SDL_VIDEO_GF_OPENGLES_CONFS]; + /* OpenGL ES framebuffer confs */ + EGLint gles_config; /* OpenGL ES configuration index */ + EGLContext gles_context; /* OpenGL ES context */ + EGLint gles_attributes[256]; /* OpenGL ES attributes for context */ + EGLSurface gles_surface; /* OpenGL ES target rendering surface */ + gf_surface_t gfsurface; /* OpenGL ES GF's surface */ + PdOffscreenContext_t* phsurface; /* OpenGL ES Photon's surface */ + #endif /* SDL_VIDEO_OPENGL_ES */ } SDL_WindowData; /****************************************************************************/ @@ -62,22 +112,24 @@ #define SDL_PHOTON_UNACCELERATED 0x00000000 #define SDL_PHOTON_ACCELERATED 0x00000001 +#define SDL_PHOTON_UNACCELERATED_3D 0x00000000 +#define SDL_PHOTON_ACCELERATED_3D 0x00000004 /****************************************************************************/ /* SDL_VideoDevice functions declaration */ /****************************************************************************/ /* Display and window functions */ -int photon_videoinit(_THIS); +int photon_videoinit(_THIS); void photon_videoquit(_THIS); void photon_getdisplaymodes(_THIS); -int photon_setdisplaymode(_THIS, SDL_DisplayMode* mode); -int photon_setdisplaypalette(_THIS, SDL_Palette* palette); -int photon_getdisplaypalette(_THIS, SDL_Palette* palette); -int photon_setdisplaygammaramp(_THIS, Uint16* ramp); -int photon_getdisplaygammaramp(_THIS, Uint16* ramp); -int photon_createwindow(_THIS, SDL_Window* window); -int photon_createwindowfrom(_THIS, SDL_Window* window, const void* data); +int photon_setdisplaymode(_THIS, SDL_DisplayMode* mode); +int photon_setdisplaypalette(_THIS, SDL_Palette* palette); +int photon_getdisplaypalette(_THIS, SDL_Palette* palette); +int photon_setdisplaygammaramp(_THIS, Uint16* ramp); +int photon_getdisplaygammaramp(_THIS, Uint16* ramp); +int photon_createwindow(_THIS, SDL_Window* window); +int photon_createwindowfrom(_THIS, SDL_Window* window, const void* data); void photon_setwindowtitle(_THIS, SDL_Window* window); void photon_setwindowicon(_THIS, SDL_Window* window, SDL_Surface* icon); void photon_setwindowposition(_THIS, SDL_Window* window);