SDL-mirror icon indicating copy to clipboard operation
SDL-mirror copied to clipboard

An unofficial, automated SDL2 and SDL1.2 HG mirror.

Note: sdl2 vita support was upstreamed. Vitasdk contains latest package. Use that.

This repo kept for sdl1 support and historical purposes.

SDL/SDL2-vita

This repo contains full source for vita SDL1 and SDL2 ports (vita-* branches).

SDL1

This port supports both doublebuffered (with SDL_Flip) and non-doublebuffered drawing.
It draws directly to framebuffer, without GXM (same as sdl1 works on other platforms)

SDL2

There are two render backends for Vita:

  • sceGxm-based renderer (default)
  • scePiglet-based gles2 renderer (must be chosen via hint or renderer index, DolceSDK only)

sceGxm-based renderer

This is a default renderer.
This one is fast and should be used for sdl-based 2d. It can't bind SDL_Texture to gles2 context.
You can still use raw gles2, though.

scePiglet-based gles2 renderer

This one is incredibly slow in 2d, but you can use it if you'd like to use raw gles2 context, with ability to bind SDL_Texture

Where's code?

Code is in vita-[sdl-release-version] branches. Master branch is intentionally kept empty.

Requirements

  • DolceSDK (Or VitaSDK, but VitaSDK lacks Pigs-In-A-Blanket and thus gles2 support)
  • (SDL2 only, optional) Pigs-in-a-blanket (Included in DolceSDK)

Building

DolceSDK:

CMake:

mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE="${DOLCESDK}/share/dolce.toolchain.cmake" ..
make install

Makefile:

make -f Makefile.vita.dolce install

VITASDK:

CMake:

mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE="${VITASDK}/share/vita.toolchain.cmake" ..
make install

Makefile:

make -f Makefile.vita.vita install

Migrating from older SDL1-vita (vita2d one)

  • Drop links to vita2d and sceGxm

Migrating from older SDL2-vita (vita2d one)

  • Link your app with pib instead of vita2d
  • Link with SceMotion_stub
  • Everything else should be the same. If you used vita2d_init_advanced - drop it.

SDL1 Limitations

  • No opengl support. Only 960x544 at 32bpp screen supported (sdl will do needed conversions anyway, though).

SDL2 Limitations (in gxm renderer)

  • Only SDL_TEXTUREFORMAT_ABGR8888 is supported.
  • Memory pool (used for vertexes) has fixed size of 2 * 1024 * 1024. That shouldn't be an issue, unless your draw count if insanely big.
  • You can bind SDL_Texture to gles2 context only when using gles2 renderer.
  • SDL_RenderReadPixels supports reading only from display rendertarget (no one sane should read from texture rendertarget anyway, you already have texture, god dammit).

SDL1 Differences between this and vita2d version

  • vita2d doesn't support (and can't support) non-doublebuffered drawing that many sdl1-based software uses. This port does.

SDL2 Differences between this and vita2d version

  • First of all, it's based on a 2.0.12 instead of 2.0.8-something.
  • It fully supports everything that an SDL render should (while vita2d version doesn't support blending modes, RenderCopyEx and texture render target)
  • It also supports filesystem functions, while vita2d version doesn't
  • It is and always will be based on a fixed SDL release, not on some middle-point commit.
  • Sensors (gyro / accelerometer) support.

Thanks

  • xerpi and rsn8887 for initial (vita2d) port
  • vitasdk/dolcesdk devs
  • CBPS discord (Namely Graphene and SonicMastr)
  • Northfear for inspiration to do sdl1 port.