Description of your driver's 2D capabilities
#include <draw.h>
typedef struct disp_2d_caps {
int size;
unsigned accel_flags;
unsigned flags;
int min_stride;
int max_stride;
int stride_gran;
unsigned poly_flags;
unsigned poly_max_points;
} disp_2d_caps_t;
The disp_2d_caps_t structure describes a driver's 2D
capabilities.
Your driver fills it in when the graphics framework calls the
get_2d_caps()
function defined in
disp_draw_miscfuncs_t.
The disp_2d_caps_t structure includes the following members:
- size
- The size of this structure, in bytes.
- accel_flags
- Flags (defined in <draw.h>) describing which draw
operations are performed with hardware
acceleration:
- DISP_2D_ACCEL_OPAQUE_BLIT — simple, opaque blit
operations
- DISP_2D_ACCEL_OPAQUE_FILL — simple, opaque fill
operations
- DISP_2D_ACCEL_MONO_PAT — simple draw operations
with two colors and a pattern
- DISP_2D_ACCEL_TRANS_PAT — simple draw operations
with a transparency pattern
- DISP_2D_ACCEL_SIMPLE_ROPS — copy, XOR, AND and OR
with a pattern
- DISP_2D_ACCEL_COMPLEX_ROPS — all 256 rop3 codes
are accelerated
- DISP_2D_ACCEL_SRCALPHA_BLEND_GLOBAL — alpha
blending with a global source factor is supported
- DISP_2D_ACCEL_SRCALPHA_BLEND_PIXEL — alpha
blending with a per-pixel source factor is supported
- DISP_2D_ACCEL_SRCALPHA_BLEND_MAP — alpha blending
with an alpha map as source is supported
- DISP_2D_ACCEL_DSTALPHA_BLEND_GLOBAL — alpha
blending with a global destination factor
- DISP_2D_ACCEL_DSTALPHA_BLEND_MAP —
Alpha blending with an alpha map as destination is supported
- DISP_2D_ACCEL_DSTALPHA_BLEND_PIXEL — alpha
blending with a per-pixel destination factor
- DISP_2D_ACCEL_SRC_CHROMA — source image chroma
keying is supported
- DISP_2D_ACCEL_DST_CHROMA — destination image
chroma keying is supported
- DISP_2D_ACCEL_SCALED_BLIT — Scaled BitBlit supported
- DISP_2D_ACCEL_BRESENHAM_LINES — At least opaque Bresenham line drawing
- DISP_2D_ACCEL_SIMPLE_POLYGONS — Can at least render opaque convex polygons
- DISP_2D_ACCEL_COMPLEX_POLYGONS — Can at least render opaque complex polygons
- DISP_2D_ACCEL_ANTIALIAS — Can at least render anti-alias lines
- flags
- Flags (also defined in <draw.h>) describing miscellaneous
properties of the 2D renderer:
- DISP_2D_SRC_DST_STRIDE_EQUAL — separate source
and destination strides can't be specified
- DISP_2D_EXCLUSIVE_VM_ACCESS — not safe to access any video memory surface with the CPU while the 2D engine is busy
- min_stride
- The minimum stride that a 2D surface can be.
- max_stride
- The maximum stride that a 2D surface can be.
- stride_gran
- A value that the stride of the 2D surface must be a multiple of.
- poly_flags
- Polygon classes that can be handled:
- DISP_POLY_CLASS_CONVEX — a polygon is considered to be convex if every horizontal line drawn through the polygon at any point crosses exactly two active edges (neither horizontal lines nor zero-length edges count as active edges; both are acceptable anywhere in the polygon), and the right and left edges never cross. It's OK for them to touch, though, so long as the right edge never crosses over to the left of the left edge. Another way to describe a convex polygon is that every interior angle is less than 180 degrees. All convex polygons are monoton vertical.
- DISP_POLY_CLASS_MONOTONE_VERTICAL — A polygon is considered to be monoton vertical if its boundary doesn't change its vertical direction (y axis direction) more than twice.
- DISP_POLY_CLASS_SIMPLE — A simple polygon has a boundary that never intersect itself.
- DISP_POLY_CLASS_MONOTONE_VERTICAL_SIMPLE — a polygon that is both simple and monotone vertical.
- DISP_POLY_CLASS_NON_SIMPLE — a polygon whose boundary intersects itself.
- poly_max_points
- The maximum number of points in a single polygon that the hardware can handle.
Neutrino
disp_draw_miscfuncs_t