|
typedef VdpStatus | VdpOutputSurfaceRenderOutputSurface(VdpOutputSurface destination_surface, VdpRect const *destination_rect, VdpOutputSurface source_surface, VdpRect const *source_rect, VdpColor const *colors, VdpOutputSurfaceRenderBlendState const *blend_state, uint32_t flags) |
| Composite a sub-rectangle of a VdpOutputSurface into a sub-rectangle of another VdpOutputSurface; Output Surfaceobject VdpOutputSurface. More...
|
|
typedef VdpStatus | VdpOutputSurfaceRenderBitmapSurface(VdpOutputSurface destination_surface, VdpRect const *destination_rect, VdpBitmapSurface source_surface, VdpRect const *source_rect, VdpColor const *colors, VdpOutputSurfaceRenderBlendState const *blend_state, uint32_t flags) |
| Composite a sub-rectangle of a VdpBitmapSurface into a sub-rectangle of a VdpOutputSurface; Output Surfaceobject VdpOutputSurface. More...
|
|
|
enum | VdpOutputSurfaceRenderBlendFactor {
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO = 0,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE = 1,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR = 2,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA = 4,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 5,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA = 6,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 7,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR = 8,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 9,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE = 10,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR = 11,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 12,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA = 13,
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 14
} |
| The blending equation factors. More...
|
|
enum | VdpOutputSurfaceRenderBlendEquation {
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT = 0,
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT = 1,
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD = 2,
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN = 3,
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX = 4
} |
| The blending equations. More...
|
|
VdpOutputSurface objects directly provide some rendering/compositing operations. These are described below.
#define VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION 0 |
#define VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX |
A separate color is used for each vertex of the smooth-shaded quad. Hence, colors array contains 4 elements rather than 1. See description of colors array.
#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_0 |
Do not rotate source_surface prior to compositing.
#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 |
Rotate source_surface 180 degrees prior to compositing.
#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 |
Rotate source_surface 270 degrees clockwise prior to compositing.
#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_90 |
Rotate source_surface 90 degrees clockwise prior to compositing.
Composite a sub-rectangle of a VdpBitmapSurface into a sub-rectangle of a VdpOutputSurface; Output Surfaceobject VdpOutputSurface.
- Parameters
-
[in] | destination_surface | The destination surface of the compositing operation. |
[in] | destination_rect | The sub-rectangle of the destination surface to update. If NULL, the entire destination surface will be updated. |
[in] | source_surface | The source surface for the compositing operation. The surface is treated as having four components: red, green, blue and alpha. Any missing components are treated as 1.0. For example, for an A8 VdpBitmapSurface, alpha will come from the surface but red, green and blue will be treated as 1.0. If source_surface is VDP_INVALID_HANDLE, all components will be treated as 1.0. Note that destination_surface and source_surface must have been allocated via the same VdpDevice. |
[in] | source_rect | The sub-rectangle of the source surface to read from. If NULL, the entire source_surface will be read. Left/right ot top/bottom co-ordinates may be swapped to flip the source. Any flip occurs prior to any requested rotation. Values from outside the source surface are valid and samples at those locations will be taken from the nearest edge. |
[in] | colors | A pointer to an array of VdpColor objects. If the flag VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is set, VDPAU will four entries from the array, and treat them as the colors corresponding to the upper-left, upper-right, lower-right and lower-left corners of the post-rotation source (i.e. indices 0, 1, 2 and 3 run clockwise from the upper left corner). If the flag VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is not set, VDPAU will use the single VdpColor for all four corners. If colors is NULL then red, green, blue and alpha values of 1.0 will be used. |
[in] | blend_state | If a blend state is provided, the blend state will be used for the composite operation. If NULL, blending is effectively disabled, which is equivalent to a blend equation of ADD, source blend factors of ONE and destination blend factors of ZERO. See VdpOutputSurfaceRenderBlendState for details regarding the mathematics of the blending operation. |
[in] | flags | A set of flags influencing how the compositing operation works.
|
- Returns
- VdpStatus The completion status of the operation.
The general compositing pipeline is as follows.
- Extract source_rect from source_surface.
- The extracted source is rotated 0, 90, 180 or 270 degrees according to the flags.
- The rotated source is component-wise multiplied by a smooth-shaded quad with a (potentially) different color at each vertex.
- The resulting rotated, smooth-shaded quad is scaled to the size of destination_rect and composited with destination_surface using the provided blend state.
Composite a sub-rectangle of a VdpOutputSurface into a sub-rectangle of another VdpOutputSurface; Output Surfaceobject VdpOutputSurface.
- Parameters
-
[in] | destination_surface | The destination surface of the compositing operation. |
[in] | destination_rect | The sub-rectangle of the destination surface to update. If NULL, the entire destination surface will be updated. |
[in] | source_surface | The source surface for the compositing operation. The surface is treated as having four components: red, green, blue and alpha. Any missing components are treated as 1.0. For example, for an A8 VdpOutputSurface, alpha will come from the surface but red, green and blue will be treated as 1.0. If source_surface is VDP_INVALID_HANDLE, all components will be treated as 1.0. Note that destination_surface and source_surface must have been allocated via the same VdpDevice. |
[in] | source_rect | The sub-rectangle of the source surface to read from. If NULL, the entire source_surface will be read. Left/right and/or top/bottom co-ordinates may be swapped to flip the source. Any flip occurs prior to any requested rotation. Values from outside the source surface are valid and samples at those locations will be taken from the nearest edge. |
[in] | colors | A pointer to an array of VdpColor objects. If the flag VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is set, VDPAU will four entries from the array, and treat them as the colors corresponding to the upper-left, upper-right, lower-right and lower-left corners of the post-rotation source (i.e. indices 0, 1, 2 and 3 run clockwise from the upper left corner). If the flag VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is not set, VDPAU will use the single VdpColor for all four corners. If colors is NULL then red, green, blue and alpha values of 1.0 will be used. |
[in] | blend_state | If a blend state is provided, the blend state will be used for the composite operation. If NULL, blending is effectively disabled, which is equivalent to a blend equation of ADD, source blend factors of ONE and destination blend factors of ZERO. See VdpOutputSurfaceRenderBlendState for details regarding the mathematics of the blending operation. |
[in] | flags | A set of flags influencing how the compositing operation works.
|
- Returns
- VdpStatus The completion status of the operation.
The general compositing pipeline is as follows.
- Extract source_rect from source_surface.
- The extracted source is rotated 0, 90, 180 or 270 degrees according to the flags.
- The rotated source is component-wise multiplied by a smooth-shaded quad with a (potentially) different color at each vertex.
- The resulting rotated, smooth-shaded quad is scaled to the size of destination_rect and composited with destination_surface using the provided blend state.
The blending equations.
Enumerator |
---|
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX |
|
The blending equation factors.
Enumerator |
---|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA |
|
VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA |
|