| --- | |
| layout: doc | |
| title: "Starboard Module Reference: blitter.h" | |
| --- | |
| The Blitter API provides support for issuing simple blit-style draw commands to | |
| either an offscreen surface or to a Starboard `SbWindow` object. Blitter is | |
| jargon that means "BLock Transfer," which might be abbreviated as BLT and, | |
| hence, the word "blit." | |
| This API is designed to allow implementations make use of GPU hardware | |
| acceleration, if it is available. Draw commands exist for solid-color rectangles | |
| and rasterization/blitting of rectangular images onto rectangular target | |
| patches. | |
| ## Threading Concerns ## | |
| Note that in general the Blitter API is not thread safe, except for all | |
| `SbBlitterDevice`-related functions. All functions that are not required to | |
| internally ensure any thread safety guarantees are prefaced with a comment | |
| indicating that they are not thread safe. | |
| Functions which claim to not be thread safe can still be used from multiple | |
| threads, but manual synchronization must be performed in order to ensure their | |
| parameters are not referenced at the same time on another thread by another | |
| function. | |
| ### Examples ### | |
| * Multiple threads should not issue commands to the same `SbBlitterContext` | |
| object unless they are manually synchronized. | |
| * Multiple threads should not issue draw calls to the same render target, even | |
| if the draw calls are made within separate contexts. In this case, be sure | |
| to manually synchronize through the use of syncrhonization primitives and | |
| use of the `SbBlitterFlushContext()` command. | |
| * Multiple threads can operate on the swap chain, but they must perform manual | |
| synchronization. | |
| ## Enums ## | |
| ### SbBlitterPixelDataFormat ### | |
| Defines the set of pixel formats that can be used with the Blitter API | |
| `SbBlitterPixelData` objects. Note that not all of these formats are guaranteed | |
| to be supported by a particular device, so before using these formats in pixel | |
| data creation commands, it should be checked that they are supported first (e.g. | |
| via `SbBlitterIsPixelFormatSupportedByPixelData()`). `SbBlitterPixelDataFormat` | |
| specifies specific orderings of the color channels, and when doing so, byte- | |
| order is used, e.g. "RGBA" implies that a value for red is stored in the byte | |
| with the lowest memory address. All pixel values are assumed to be in | |
| premultiplied alpha format. | |
| #### Values #### | |
| * `kSbBlitterPixelDataFormatARGB8` | |
| 32-bit pixels with 8-bits per channel, the alpha component in the byte with | |
| the lowest address and blue in the byte with the highest address. | |
| * `kSbBlitterPixelDataFormatBGRA8` | |
| 32-bit pixels with 8-bits per channel, the blue component in the byte with | |
| the lowest address and alpha in the byte with the highest address. | |
| * `kSbBlitterPixelDataFormatRGBA8` | |
| 32-bit pixels with 8-bits per channel, the red component in the byte with | |
| the lowest address and alpha in the byte with the highest address. | |
| * `kSbBlitterPixelDataFormatA8` | |
| 8-bit pixels that contain only a single alpha channel. When rendered, | |
| surfaces in this format will have `(R, G, B)` values of `(255, 255, 255)`. | |
| * `kSbBlitterNumPixelDataFormats` | |
| Constant that indicates how many unique pixel formats Starboard supports. | |
| * `kSbBlitterInvalidPixelDataFormat` | |
| ### SbBlitterSurfaceFormat ### | |
| Enumeration that describes the color format of surfaces. Note that | |
| `SbBlitterSurfaceFormat` does not differentiate between permutations of the | |
| color channel ordering (e.g. RGBA vs ARGB) since client code will never be able | |
| to access surface pixels directly. This is the main difference between | |
| `SbBlitterPixelDataFormat`, which does explicitly dictate an ordering. | |
| #### Values #### | |
| * `kSbBlitterSurfaceFormatRGBA8` | |
| 32-bit RGBA color, with 8 bits per channel. | |
| * `kSbBlitterSurfaceFormatA8` | |
| 8-bit alpha-only color. | |
| * `kSbBlitterNumSurfaceFormats` | |
| Constant that indicates how many unique surface formats Starboard supports. | |
| * `kSbBlitterInvalidSurfaceFormat` | |
| ## Typedefs ## | |
| ### SbBlitterColor ### | |
| A simple 32-bit color representation that is a parameter to many Blitter | |
| functions. | |
| #### Definition #### | |
| ``` | |
| typedef uint32_t SbBlitterColor | |
| ``` | |
| ## Structs ## | |
| ### SbBlitterRect ### | |
| Defines a rectangle via a point `(x, y)` and a size `(width, height)`. This | |
| structure is used as a parameter type in various blit calls. | |
| #### Members #### | |
| * `int x` | |
| * `int y` | |
| * `int width` | |
| * `int height` | |
| ### SbBlitterSurfaceInfo ### | |
| `SbBlitterSurfaceInfo` collects information about surfaces that can be queried | |
| from them at any time. | |
| #### Members #### | |
| * `int width` | |
| * `int height` | |
| * `SbBlitterSurfaceFormat format` | |
| ## Functions ## | |
| ### SbBlitterAFromColor ### | |
| Extract alpha from a `SbBlitterColor` object. | |
| #### Declaration #### | |
| ``` | |
| static uint8_t SbBlitterAFromColor(SbBlitterColor color) | |
| ``` | |
| ### SbBlitterBFromColor ### | |
| Extract blue from a `SbBlitterColor` object. | |
| #### Declaration #### | |
| ``` | |
| static uint8_t SbBlitterBFromColor(SbBlitterColor color) | |
| ``` | |
| ### SbBlitterBlitRectToRect ### | |
| Issues a draw call on `context` that blits the area of `source_surface` | |
| specified by `src_rect` to `context`'s current render target at `dst_rect`. The | |
| source rectangle must lie within the dimensions of `source_surface`. Note that | |
| the `source_surface`'s alpha is modulated by `opacity` before being drawn. For | |
| `opacity`, a value of 0 implies complete invisibility, and a value of 255 | |
| implies complete opacity. | |
| This function is not thread-safe. | |
| The return value indicates whether the draw call succeeded. | |
| `src_rect`: The area to be block transferred (blitted). | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterBlitRectToRect(SbBlitterContext context, SbBlitterSurface source_surface, SbBlitterRect src_rect, SbBlitterRect dst_rect) | |
| ``` | |
| ### SbBlitterBlitRectToRectTiled ### | |
| This function functions identically to SbBlitterBlitRectToRect(), except it | |
| permits values of `src_rect` outside the dimensions of `source_surface`. In | |
| those regions, the pixel data from `source_surface` will be wrapped. Negative | |
| values for `src_rect.x` and `src_rect.y` are allowed. | |
| The output is all stretched to fit inside of `dst_rect`. | |
| This function is not thread-safe. | |
| The return value indicates whether the draw call succeeded. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterBlitRectToRectTiled(SbBlitterContext context, SbBlitterSurface source_surface, SbBlitterRect src_rect, SbBlitterRect dst_rect) | |
| ``` | |
| ### SbBlitterBlitRectsToRects ### | |
| This function achieves the same effect as calling `SbBlitterBlitRectToRect()` | |
| `num_rects` times with each of the `num_rects` values of `src_rects` and | |
| `dst_rects`. This function allows for greater efficiency than looped calls to | |
| `SbBlitterBlitRectToRect()`. | |
| This function is not thread-safe. | |
| The return value indicates whether the draw call succeeded. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterBlitRectsToRects(SbBlitterContext context, SbBlitterSurface source_surface, const SbBlitterRect *src_rects, const SbBlitterRect *dst_rects, int num_rects) | |
| ``` | |
| ### SbBlitterBytesPerPixelForFormat ### | |
| A convenience function to return the number of bytes per pixel for a given pixel | |
| format. | |
| #### Declaration #### | |
| ``` | |
| static int SbBlitterBytesPerPixelForFormat(SbBlitterPixelDataFormat format) | |
| ``` | |
| ### SbBlitterColorFromRGBA ### | |
| A convenience function to create a `SbBlitterColor` object from separate 8-bit | |
| RGBA components. | |
| #### Declaration #### | |
| ``` | |
| static SbBlitterColor SbBlitterColorFromRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a) | |
| ``` | |
| ### SbBlitterCreateContext ### | |
| Creates an `SbBlitterContext` object on `device`. The returned context can be | |
| used to set up draw state and issue draw calls. | |
| Note that there is a limit on the number of contexts that can exist | |
| simultaneously, which can be queried by calling `SbBlitterGetMaxContexts()`. | |
| (The limit is often `1`.) | |
| `SbBlitterContext` objects keep track of draw state between a series of draw | |
| calls. Please refer to the `SbBlitterContext()` definition for more information | |
| about contexts. | |
| This function is thread-safe. | |
| This function returns `kSbBlitterInvalidContext` upon failure. Note that the | |
| function fails if it has already been used to create the maximum number of | |
| contexts. | |
| `device`: The `SbBlitterDevice` for which the `SbBlitterContext` object is | |
| created. | |
| #### Declaration #### | |
| ``` | |
| SbBlitterContext SbBlitterCreateContext(SbBlitterDevice device) | |
| ``` | |
| ### SbBlitterCreateDefaultDevice ### | |
| Creates and returns an `SbBlitterDevice` based on the Blitter API | |
| implementation's decision of which device should be the default. The returned | |
| `SbBlitterDevice` represents a connection to a device (like a GPU). | |
| On many platforms there is always one single obvious choice for a device to use, | |
| and that is the one that this function will return. For example, if this is | |
| called on a platform that has a single GPU, this call should return an object | |
| that represents that GPU. On a platform that has no GPU, an object representing | |
| a software CPU implementation may be returned. | |
| Only one default device can exist within a process at a time. This function is | |
| thread-safe. | |
| Returns `kSbBlitterInvalidDevice` on failure. | |
| #### Declaration #### | |
| ``` | |
| SbBlitterDevice SbBlitterCreateDefaultDevice() | |
| ``` | |
| ### SbBlitterCreatePixelData ### | |
| Allocates an `SbBlitterPixelData` object through `device` with `width`, `height` | |
| and `pixel_format`. `pixel_format` must be supported by `device` (see | |
| `SbBlitterIsPixelFormatSupportedByPixelData()`). | |
| This function is thread-safe. | |
| Calling this function results in the allocation of CPU-accessible (though | |
| perhaps blitter-device-resident) memory to store pixel data of the requested | |
| size/format. An `SbBlitterPixelData` object should eventually be passed either | |
| into a call to `SbBlitterCreateSurfaceFromPixelData()` or into a call to | |
| `SbBlitterDestroyPixelData()`. | |
| Returns `kSbBlitterInvalidPixelData` upon failure. | |
| #### Declaration #### | |
| ``` | |
| SbBlitterPixelData SbBlitterCreatePixelData(SbBlitterDevice device, int width, int height, SbBlitterPixelDataFormat pixel_format) | |
| ``` | |
| ### SbBlitterCreateRenderTargetSurface ### | |
| Creates a new surface with undefined pixel data on `device` with the specified | |
| `width`, `height` and `surface_format`. One can set the pixel data on the | |
| resulting surface by getting its associated SbBlitterRenderTarget object and | |
| then calling `SbBlitterGetRenderTargetFromSurface()`. | |
| This function is thread-safe. | |
| Returns `kSbBlitterInvalidSurface` upon failure. | |
| #### Declaration #### | |
| ``` | |
| SbBlitterSurface SbBlitterCreateRenderTargetSurface(SbBlitterDevice device, int width, int height, SbBlitterSurfaceFormat surface_format) | |
| ``` | |
| ### SbBlitterCreateSurfaceFromPixelData ### | |
| Creates an `SbBlitterSurface` object on `device`. Note that `device` must match | |
| the device that was used to create the `SbBlitterPixelData` object provided via | |
| the `pixel_data` parameter. | |
| This function also destroys the input `pixel_data` object. As a result, | |
| `pixel_data` should not be accessed again after a call to this function. | |
| The returned object cannot be used as a render target (e.g. calling | |
| `SbBlitterGetRenderTargetFromSurface()` on it will return | |
| `kSbBlitterInvalidRenderTarget`). | |
| This function is thread-safe with respect to `device`, but `pixel_data` should | |
| not be modified on another thread while this function is called. | |
| Returns `kSbBlitterInvalidSurface` in the event of an error. | |
| #### Declaration #### | |
| ``` | |
| SbBlitterSurface SbBlitterCreateSurfaceFromPixelData(SbBlitterDevice device, SbBlitterPixelData pixel_data) | |
| ``` | |
| ### SbBlitterCreateSwapChainFromWindow ### | |
| Creates and returns an `SbBlitterSwapChain` that can then be used to send | |
| graphics to the display. This function links `device` to `window`'s output, and | |
| drawing to the returned swap chain will result in `device` being used to render | |
| to `window`. | |
| This function must be called from the thread that called `SbWindowCreate()` to | |
| create `window`. | |
| Returns `kSbBlitterInvalidSwapChain` on failure. | |
| #### Declaration #### | |
| ``` | |
| SbBlitterSwapChain SbBlitterCreateSwapChainFromWindow(SbBlitterDevice device, SbWindow window) | |
| ``` | |
| ### SbBlitterDestroyContext ### | |
| Destroys the specified `context`, freeing all its resources. | |
| This function is not thread-safe. | |
| The return value indicates whether the destruction succeeded. | |
| `context`: The object to be destroyed. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterDestroyContext(SbBlitterContext context) | |
| ``` | |
| ### SbBlitterDestroyDevice ### | |
| Destroys `device`, cleaning up all resources associated with it. This function | |
| is thread-safe, but it should not be called if `device` is still being accessed | |
| elsewhere. | |
| The return value indicates whether the destruction succeeded. | |
| `device`: The SbBlitterDevice object to be destroyed. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterDestroyDevice(SbBlitterDevice device) | |
| ``` | |
| ### SbBlitterDestroyPixelData ### | |
| Destroys `pixel_data`. Note that this function does not need to be called and | |
| should not be called if `SbBlitterCreateSurfaceFromPixelData()` has been called | |
| on `pixel_data` before. | |
| This function is thread-safe. | |
| The return value indicates whether the destruction succeeded. | |
| `pixel_data`: The object to be destroyed. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterDestroyPixelData(SbBlitterPixelData pixel_data) | |
| ``` | |
| ### SbBlitterDestroySurface ### | |
| Destroys the `surface` object, cleaning up all resources associated with it. | |
| This function is not thread safe. | |
| The return value indicates whether the destruction succeeded. | |
| `surface`: The object to be destroyed. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterDestroySurface(SbBlitterSurface surface) | |
| ``` | |
| ### SbBlitterDestroySwapChain ### | |
| Destroys `swap_chain`, cleaning up all resources associated with it. This | |
| function is not thread-safe and must be called on the same thread that called | |
| `SbBlitterCreateSwapChainFromWindow()`. | |
| The return value indicates whether the destruction succeeded. | |
| `swap_chain`: The SbBlitterSwapChain to be destroyed. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterDestroySwapChain(SbBlitterSwapChain swap_chain) | |
| ``` | |
| ### SbBlitterDownloadSurfacePixels ### | |
| Downloads `surface` pixel data into CPU memory pointed to by `out_pixel_data`, | |
| formatted according to the requested `pixel_format` and the requested | |
| `pitch_in_bytes`. Before calling this function, you can call | |
| `SbBlitterIsPixelFormatSupportedByDownloadSurfacePixels()` to confirm that | |
| `pixel_format` is, in fact, valid for `surface`. | |
| When this function is called, it first waits for all previously flushed graphics | |
| commands to be executed by the device before downloading the data. Since this | |
| function waits for the pipeline to empty, it should be used sparingly, such as | |
| within in debug or test environments. | |
| The return value indicates whether the pixel data was downloaded successfully. | |
| The returned alpha format is premultiplied. | |
| This function is not thread-safe. | |
| `out_pixel_data`: A pointer to a region of memory with a size of surface_height | |
| * `pitch_in_bytes` bytes. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterDownloadSurfacePixels(SbBlitterSurface surface, SbBlitterPixelDataFormat pixel_format, int pitch_in_bytes, void *out_pixel_data) | |
| ``` | |
| ### SbBlitterFillRect ### | |
| Issues a draw call on `context` that fills the specified rectangle `rect`. The | |
| rectangle's color is determined by the last call to `SbBlitterSetColor()`. | |
| This function is not thread-safe. | |
| The return value indicates whether the draw call succeeded. | |
| `context`: The context on which the draw call will operate. `rect`: The | |
| rectangle to be filled. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterFillRect(SbBlitterContext context, SbBlitterRect rect) | |
| ``` | |
| ### SbBlitterFlipSwapChain ### | |
| Flips the `swap_chain` by making the buffer previously accessible to draw | |
| commands via `SbBlitterGetRenderTargetFromSwapChain()` visible on the display, | |
| while another buffer in an initially undefined state is set up as the new draw | |
| command target. Note that you do not need to call | |
| `SbBlitterGetRenderTargetFromSwapChain()` again after flipping, the swap chain's | |
| render target always refers to its current back buffer. | |
| This function stalls the calling thread until the next vertical refresh. In | |
| addition, to ensure consistency with the Starboard Player API when rendering | |
| punch-out video, calls to `SbPlayerSetBounds()` do not take effect until this | |
| method is called. | |
| The return value indicates whether the flip succeeded. | |
| This function is not thread-safe. | |
| `swap_chain`: The SbBlitterSwapChain to be flipped. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterFlipSwapChain(SbBlitterSwapChain swap_chain) | |
| ``` | |
| ### SbBlitterFlushContext ### | |
| Flushes all draw calls previously issued to `context`. Calling this function | |
| guarantees that the device processes all draw calls issued to this point on this | |
| `context` before processing any subsequent draw calls on any context. | |
| Before calling `SbBlitterFlipSwapChain()`, it is often prudent to call this | |
| function to ensure that all draw calls are submitted before the flip occurs. | |
| This function is not thread-safe. | |
| The return value indicates whether the flush succeeded. | |
| `context`: The context for which draw calls are being flushed. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterFlushContext(SbBlitterContext context) | |
| ``` | |
| ### SbBlitterGFromColor ### | |
| Extract green from a `SbBlitterColor` object. | |
| #### Declaration #### | |
| ``` | |
| static uint8_t SbBlitterGFromColor(SbBlitterColor color) | |
| ``` | |
| ### SbBlitterGetMaxContexts ### | |
| Returns the maximum number of contexts that `device` can support in parallel. | |
| Note that devices often support only a single context. | |
| This function is thread-safe. | |
| This function returns `-1` upon failure. | |
| `device`: The SbBlitterDevice for which the maximum number of contexts is | |
| returned. | |
| #### Declaration #### | |
| ``` | |
| int SbBlitterGetMaxContexts(SbBlitterDevice device) | |
| ``` | |
| ### SbBlitterGetPixelDataPitchInBytes ### | |
| Retrieves the pitch (in bytes) for `pixel_data`. This indicates the number of | |
| bytes per row of pixel data in the image. | |
| This function is not thread-safe. | |
| Returns `-1` in the event of an error. | |
| `pixel_data`: The object for which you are retrieving the pitch. | |
| #### Declaration #### | |
| ``` | |
| int SbBlitterGetPixelDataPitchInBytes(SbBlitterPixelData pixel_data) | |
| ``` | |
| ### SbBlitterGetPixelDataPointer ### | |
| Retrieves a CPU-accessible pointer to the pixel data represented by | |
| `pixel_data`. This pixel data can be modified by the CPU to initialize it on the | |
| CPU before calling `SbBlitterCreateSurfaceFromPixelData()`. | |
| Note that the pointer returned here is valid as long as `pixel_data` is valid, | |
| which means it is valid until either `SbBlitterCreateSurfaceFromPixelData()` or | |
| `SbBlitterDestroyPixelData()` is called. | |
| This function is not thread-safe. | |
| Returns `NULL` in the event of an error. | |
| #### Declaration #### | |
| ``` | |
| void* SbBlitterGetPixelDataPointer(SbBlitterPixelData pixel_data) | |
| ``` | |
| ### SbBlitterGetRenderTargetFromSurface ### | |
| Returns the `SbBlitterRenderTarget` object owned by `surface`. The returned | |
| object can be used as a target for draw calls. | |
| This function returns `kSbBlitterInvalidRenderTarget` if `surface` is not able | |
| to provide a render target or on any other error. | |
| This function is not thread-safe. | |
| #### Declaration #### | |
| ``` | |
| SbBlitterRenderTarget SbBlitterGetRenderTargetFromSurface(SbBlitterSurface surface) | |
| ``` | |
| ### SbBlitterGetRenderTargetFromSwapChain ### | |
| Returns the `SbBlitterRenderTarget` object that is owned by `swap_chain`. The | |
| returned object can be used to provide a target to blitter draw calls that draw | |
| directly to the display buffer. This function is not thread-safe. | |
| Returns `kSbBlitterInvalidRenderTarget` on failure. | |
| `swap_chain`: The SbBlitterSwapChain for which the target object is being | |
| retrieved. | |
| #### Declaration #### | |
| ``` | |
| SbBlitterRenderTarget SbBlitterGetRenderTargetFromSwapChain(SbBlitterSwapChain swap_chain) | |
| ``` | |
| ### SbBlitterGetSurfaceInfo ### | |
| Retrieves an `SbBlitterSurfaceInfo` structure, which describes immutable | |
| parameters of the `surface`, such as its width, height and pixel format. The | |
| results are set on the output parameter `surface_info`, which cannot be `NULL`. | |
| The return value indicates whether the information was retrieved successfully. | |
| This function is not thread-safe. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterGetSurfaceInfo(SbBlitterSurface surface, SbBlitterSurfaceInfo *surface_info) | |
| ``` | |
| ### SbBlitterIsContextValid ### | |
| Checks whether a blitter context is invalid. | |
| #### Declaration #### | |
| ``` | |
| static bool SbBlitterIsContextValid(SbBlitterContext context) | |
| ``` | |
| ### SbBlitterIsDeviceValid ### | |
| Checks whether a blitter device is invalid. | |
| #### Declaration #### | |
| ``` | |
| static bool SbBlitterIsDeviceValid(SbBlitterDevice device) | |
| ``` | |
| ### SbBlitterIsPixelDataValid ### | |
| Checks whether a pixel data object is invalid. | |
| #### Declaration #### | |
| ``` | |
| static bool SbBlitterIsPixelDataValid(SbBlitterPixelData pixel_data) | |
| ``` | |
| ### SbBlitterIsPixelFormatSupportedByDownloadSurfacePixels ### | |
| Indicates whether the combination of parameter values is valid for calls to | |
| `SbBlitterDownloadSurfacePixels()`. | |
| This function is not thread-safe. | |
| `surface`: The surface being checked. `pixel_format`: The pixel format that | |
| would be used on the surface. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterIsPixelFormatSupportedByDownloadSurfacePixels(SbBlitterSurface surface, SbBlitterPixelDataFormat pixel_format) | |
| ``` | |
| ### SbBlitterIsPixelFormatSupportedByPixelData ### | |
| Indicates whether `device` supports calls to `SbBlitterCreatePixelData` with the | |
| specified `pixel_format`. This function is thread-safe. | |
| `device`: The device for which compatibility is being checked. `pixel_format`: | |
| The SbBlitterPixelDataFormat for which compatibility is being checked. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterIsPixelFormatSupportedByPixelData(SbBlitterDevice device, SbBlitterPixelDataFormat pixel_format) | |
| ``` | |
| ### SbBlitterIsRenderTargetValid ### | |
| Checks whether a render target is invalid. | |
| #### Declaration #### | |
| ``` | |
| static bool SbBlitterIsRenderTargetValid(SbBlitterRenderTarget render_target) | |
| ``` | |
| ### SbBlitterIsSurfaceFormatSupportedByRenderTargetSurface ### | |
| Indicates whether the `device` supports calls to | |
| `SbBlitterCreateRenderTargetSurface()` with `surface_format`. | |
| This function is thread-safe. | |
| `device`: The device being checked for compatibility. `surface_format`: The | |
| surface format being checked for compatibility. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterIsSurfaceFormatSupportedByRenderTargetSurface(SbBlitterDevice device, SbBlitterSurfaceFormat surface_format) | |
| ``` | |
| ### SbBlitterIsSurfaceValid ### | |
| Checks whether a surface is invalid. | |
| #### Declaration #### | |
| ``` | |
| static bool SbBlitterIsSurfaceValid(SbBlitterSurface surface) | |
| ``` | |
| ### SbBlitterIsSwapChainValid ### | |
| Checks whether a swap chain is invalid. | |
| #### Declaration #### | |
| ``` | |
| static bool SbBlitterIsSwapChainValid(SbBlitterSwapChain swap_chain) | |
| ``` | |
| ### SbBlitterMakeRect ### | |
| Convenience function to setup a rectangle with the specified parameters. | |
| #### Declaration #### | |
| ``` | |
| static SbBlitterRect SbBlitterMakeRect(int x, int y, int width, int height) | |
| ``` | |
| ### SbBlitterPixelDataFormatToSurfaceFormat ### | |
| This function maps SbBlitterPixelDataFormat values to their corresponding | |
| `SbBlitterSurfaceFormat` value. Note that many `SbBlitterPixelDataFormat`s | |
| correspond to the same `SbBlitterSurfaceFormat`, so this function is not | |
| invertible. When creating a `SbBlitterSurface` object from a | |
| `SbBlitterPixelData` object, the `SbBlitterSurface`'s format will be computed | |
| from the `SbBlitterPixelData` object by using this function. | |
| #### Declaration #### | |
| ``` | |
| static SbBlitterSurfaceFormat SbBlitterPixelDataFormatToSurfaceFormat(SbBlitterPixelDataFormat pixel_format) | |
| ``` | |
| ### SbBlitterRFromColor ### | |
| Extract red from a `SbBlitterColor` object. | |
| #### Declaration #### | |
| ``` | |
| static uint8_t SbBlitterRFromColor(SbBlitterColor color) | |
| ``` | |
| ### SbBlitterSetBlending ### | |
| Sets the blending state for the specified `context`. By default, blending is | |
| disabled on a `SbBlitterContext`. | |
| This function is not thread-safe. | |
| The return value indicates whether the blending state was set successfully. | |
| `context`: The context for which the blending state is being set. | |
| `blending`: The blending state for the `context`. If `blending` is `true`, the | |
| source alpha of subsequent draw calls is used to blend with the destination | |
| color. In particular, | |
| ``` | |
| Fc = Sc * Sa + Dc * (1 - Sa) | |
| ``` | |
| where: | |
| * `Fc` is the final color. | |
| * `Sc` is the source color. | |
| * `Sa` is the source alpha. | |
| * `Dc` is the destination color. | |
| If `blending` is `false`, the source color and source alpha overwrite the | |
| destination color and alpha. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterSetBlending(SbBlitterContext context, bool blending) | |
| ``` | |
| ### SbBlitterSetColor ### | |
| Sets the context's current color. The current color's default value is | |
| `SbBlitterColorFromRGBA(255, 255, 255 255)`. | |
| The current color affects the fill rectangle's color in calls to | |
| `SbBlitterFillRect()`. If `SbBlitterSetModulateBlitsWithColor()` has been called | |
| to enable blit color modulation, the source blit surface pixel color is also | |
| modulated by the color before being output. | |
| This function is not thread-safe. | |
| The return value indicates whether the color was set successfully. | |
| `context`: The context for which the color is being set. `color`: The context's | |
| new color, specified in unpremultiplied alpha format. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterSetColor(SbBlitterContext context, SbBlitterColor color) | |
| ``` | |
| ### SbBlitterSetModulateBlitsWithColor ### | |
| Sets whether or not blit calls should have their source pixels modulated by the | |
| current color, which is set using `SbBlitterSetColor()`, before being output. | |
| This function can apply opacity to blit calls, color alpha-only surfaces, and | |
| apply other effects. | |
| This function is not thread-safe. | |
| The return value indicates whether the state was set successfully. | |
| `modulate_blits_with_color`: Indicates whether to modulate source pixels in blit | |
| calls. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterSetModulateBlitsWithColor(SbBlitterContext context, bool modulate_blits_with_color) | |
| ``` | |
| ### SbBlitterSetRenderTarget ### | |
| Sets up `render_target` as the render target that all subsequent draw calls made | |
| on `context` will use. | |
| This function is not thread-safe. | |
| The return value indicates whether the render target was set successfully. | |
| `context`: The object for which the render target is being set. `render_target`: | |
| The target that the `context` should use for draw calls. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterSetRenderTarget(SbBlitterContext context, SbBlitterRenderTarget render_target) | |
| ``` | |
| ### SbBlitterSetScissor ### | |
| Sets the scissor rectangle, which dictates a visibility area that affects all | |
| draw calls. Only pixels within the scissor rectangle are rendered, and all | |
| drawing outside of that area is clipped. | |
| When `SbBlitterSetRenderTarget()` is called, that function automatically sets | |
| the scissor rectangle to the size of the specified render target. If a scissor | |
| rectangle is specified outside of the extents of the current render target | |
| bounds, it will be intersected with the render target bounds. | |
| This function is not thread-safe. | |
| Returns whether the scissor was successfully set. It returns an error if it is | |
| called before a render target has been specified for the context. | |
| #### Declaration #### | |
| ``` | |
| bool SbBlitterSetScissor(SbBlitterContext context, SbBlitterRect rect) | |
| ``` | |