public static extern int UpperBlitScaled(Surface *src, Rect *srcrect, Surface *dst, Rect *dstrect);
public static extern IntRect SurfaceGetDirtyBounds([NativeTypeName("ULSurface")] Surface *surface);
public static extern void *SurfaceGetUserData([NativeTypeName("ULSurface")] Surface *surface);
public static extern UIntPtr SurfaceGetSize([NativeTypeName("ULSurface")] Surface *surface);
public static extern void SurfaceResize([NativeTypeName("ULSurface")] Surface *surface, [NativeTypeName("unsigned int")] uint width, [NativeTypeName("unsigned int")] uint height);
public static extern Texture CreateTextureFromSurface(Renderer renderer, Surface *surface);
public static extern uint SurfaceGetHeight([NativeTypeName("ULSurface")] Surface *surface);
public static extern void GetClipRect(Surface *surface, Rect *rect);
public static extern int GetColorKey(Surface *surface, uint *key);
public static extern int FillRects(Surface *dst, Rect *rects, int count, uint color);
public static extern void FreeSurface(Surface *surface);
public static extern Surface *ConvertSurfaceFormat(Surface *src, uint pixel_format, uint flags);
public static extern Surface *ConvertSurface(Surface *src, PixelFormat *fmt, uint flags);
public static int BlitSurface(Surface *src, Rect *srcrect, Surface *dst, Rect *dstrect) => UpperBlit(src, srcrect, dst, dstrect);
public static extern int SetSurfaceAlphaMod(Surface *surface, byte alpha);
public static extern int GetSurfaceColorMod(Surface *surface, byte *r, byte *g, byte *b);
public static extern int SetSurfaceBlendMode(Surface *surface, BlendMode blendMode);
public static extern int LockSurface(Surface *surface);
public static extern Renderer CreateSoftwareRenderer(Surface *surface);
public static extern int LowerBlit(Surface *src, Rect *srcrect, Surface *dst, Rect *dstrect);
public static extern uint SurfaceGetRowBytes([NativeTypeName("ULSurface")] Surface *surface);
public static extern int LowerBlitScaled(Surface *surface, Rect *srcrect, Surface *dst, Rect *dstrect);
public static extern void SurfaceUnlockPixels([NativeTypeName("ULSurface")] Surface *surface);
public static bool MUSTLOCK(Surface *s) => (s->Flags & 0x00000002) != 0;
public static extern void SurfaceSetDirtyBounds([NativeTypeName("ULSurface")] Surface *surface, IntRect bounds);
public static extern bool SetClipRect(Surface *surface, Rect *rect);
public static extern void SurfaceClearDirtyBounds([NativeTypeName("ULSurface")] Surface *surface);
public static extern int SetColorKey(Surface *surface, bool flag, uint key);
public static extern Bitmap *BitmapSurfaceGetBitmap([NativeTypeName("ULBitmapSurface")] Surface *surface);
public static extern void UnlockSurface(Surface *surface);