vdpau.h | vdpau.h | |||
---|---|---|---|---|
skipping to change at line 831 | skipping to change at line 831 | |||
* | * | |||
* The UV plane is an array of interleaved byte-sized U and V | * The UV plane is an array of interleaved byte-sized U and V | |||
* components, in the order U, V, U, V. Applications should | * components, in the order U, V, U, V. Applications should | |||
* access this data via a uint8_t pointer. | * access this data via a uint8_t pointer. | |||
*/ | */ | |||
#define VDP_YCBCR_FORMAT_NV12 (VdpYCbCrFormat)0 | #define VDP_YCBCR_FORMAT_NV12 (VdpYCbCrFormat)0 | |||
/** | /** | |||
* \hideinitializer | * \hideinitializer | |||
* \brief The "YV12" YCbCr surface format. | * \brief The "YV12" YCbCr surface format. | |||
* | * | |||
* This format has a three planes, a Y plane, a U plane, and a V | * This format has a three planes, a Y plane, a V plane, and a U | |||
* plane. | * plane. | |||
* | * | |||
* Each of the planes is an array of byte-sized components. | * Each of the planes is an array of byte-sized components. | |||
* | * | |||
* Applications should access this data via a uint8_t pointer. | * Applications should access this data via a uint8_t pointer. | |||
*/ | */ | |||
#define VDP_YCBCR_FORMAT_YV12 (VdpYCbCrFormat)1 | #define VDP_YCBCR_FORMAT_YV12 (VdpYCbCrFormat)1 | |||
/** | /** | |||
* \hideinitializer | * \hideinitializer | |||
* \brief The "UYVY" YCbCr surface format. | * \brief The "UYVY" YCbCr surface format. | |||
skipping to change at line 2147 | skipping to change at line 2147 | |||
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT = 1, | VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT = 1, | |||
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD = 2, | VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD = 2, | |||
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN = 3, | VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN = 3, | |||
VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX = 4, | VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX = 4, | |||
} VdpOutputSurfaceRenderBlendEquation; | } VdpOutputSurfaceRenderBlendEquation; | |||
#define VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION 0 | #define VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION 0 | |||
/** | /** | |||
* \brief Complete blending operation definition. | * \brief Complete blending operation definition. | |||
* | ||||
* A "blend state" operation controls the math behind certain rendering | ||||
* operations. | ||||
* | ||||
* The blend math is the familiar OpenGL blend math: | ||||
* \f[ | ||||
* dst.a = equation(blendFactorDstAlpha*dst.a, | ||||
* blendFactorSrcAlpha*src.a); | ||||
* \f] | ||||
* \f[ | ||||
* dst.rgb = equation(blendFactorDstColor*dst.rgb, | ||||
* blendFactorSrcColor*src.rgb); | ||||
* \f] | ||||
* | ||||
* Note that when equation is MIN or MAX, the blend factors and constants | ||||
* are ignored, and are treated as if they were 1.0. | ||||
*/ | */ | |||
typedef struct { | typedef struct { | |||
/** | /** | |||
* This field must be filled with VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE _VERSIION | * This field must be filled with VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE _VERSIION | |||
*/ | */ | |||
uint32_t struct_version; | uint32_t struct_version; | |||
VdpOutputSurfaceRenderBlendFactor blend_factor_source_color; | VdpOutputSurfaceRenderBlendFactor blend_factor_source_color; | |||
VdpOutputSurfaceRenderBlendFactor blend_factor_destination_color; | VdpOutputSurfaceRenderBlendFactor blend_factor_destination_color; | |||
VdpOutputSurfaceRenderBlendFactor blend_factor_source_alpha; | VdpOutputSurfaceRenderBlendFactor blend_factor_source_alpha; | |||
VdpOutputSurfaceRenderBlendFactor blend_factor_destination_alpha; | VdpOutputSurfaceRenderBlendFactor blend_factor_destination_alpha; | |||
skipping to change at line 2240 | skipping to change at line 2256 | |||
* post-rotation source (i.e. indices 0, 1, 2 and 3 run | * post-rotation source (i.e. indices 0, 1, 2 and 3 run | |||
* clockwise from the upper left corner). If the flag | * clockwise from the upper left corner). If the flag | |||
* VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is not | * VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is not | |||
* set, VDPAU will use the single VdpColor for all four | * set, VDPAU will use the single VdpColor for all four | |||
* corners. If colors is NULL then red, green, blue and | * corners. If colors is NULL then red, green, blue and | |||
* alpha values of 1.0 will be used. | * alpha values of 1.0 will be used. | |||
* \param[in] blend_state If a blend state is provided, the | * \param[in] blend_state If a blend state is provided, the | |||
* blend state will be used for the composite operation. If | * blend state will be used for the composite operation. If | |||
* NULL, blending is effectively disabled, which is | * NULL, blending is effectively disabled, which is | |||
* equivalent to a blend equation of ADD, source blend | * equivalent to a blend equation of ADD, source blend | |||
* factors of ONE and destination blend factors of ZERO. The | * factors of ONE and destination blend factors of ZERO. | |||
* blend math is the familiar OpenGL blend math: | * See \ref VdpOutputSurfaceRenderBlendState for details | |||
* \f[ | * regarding the mathematics of the blending operation. | |||
* dst.a = equation(blendFactorDstAlpha*dst.a, | ||||
* blendFactorSrcAlpha*src.a); | ||||
* \f] | ||||
* \f[ | ||||
* dst.rgb = equation(blendFactorDstColor*dst.rgb, | ||||
* blendFactorSrcColor*src.rgb); | ||||
* \f] | ||||
* \param[in] flags A set of flags influencing how the | * \param[in] flags A set of flags influencing how the | |||
* compositing operation works. | * compositing operation works. | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_0 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_0 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_90 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_90 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX | |||
* \return VdpStatus The completion status of the operation. | * \return VdpStatus The completion status of the operation. | |||
* | * | |||
* The general compositing pipeline is as follows. | * The general compositing pipeline is as follows. | |||
skipping to change at line 2327 | skipping to change at line 2336 | |||
* post-rotation source (i.e. indices 0, 1, 2 and 3 run | * post-rotation source (i.e. indices 0, 1, 2 and 3 run | |||
* clockwise from the upper left corner). If the flag | * clockwise from the upper left corner). If the flag | |||
* VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is not | * VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is not | |||
* set, VDPAU will use the single VdpColor for all four | * set, VDPAU will use the single VdpColor for all four | |||
* corners. If colors is NULL then red, green, blue and | * corners. If colors is NULL then red, green, blue and | |||
* alpha values of 1.0 will be used. | * alpha values of 1.0 will be used. | |||
* \param[in] blend_state If a blend state is provided, the | * \param[in] blend_state If a blend state is provided, the | |||
* blend state will be used for the composite operation. If | * blend state will be used for the composite operation. If | |||
* NULL, blending is effectively disabled, which is | * NULL, blending is effectively disabled, which is | |||
* equivalent to a blend equation of ADD, source blend | * equivalent to a blend equation of ADD, source blend | |||
* factors of ONE and destination blend factors of ZERO. The | * factors of ONE and destination blend factors of ZERO. | |||
* blend math is the familiar OpenGL blend math: | * See \ref VdpOutputSurfaceRenderBlendState for details | |||
* \f[ | * regarding the mathematics of the blending operation. | |||
* dst.a = equation(blendFactorDstAlpha*dst.a, | ||||
* blendFactorSrcAlpha*src.a); | ||||
* \f] | ||||
* \f[ | ||||
* dst.rgb = equation(blendFactorDstColor*dst.rgb, | ||||
* blendFactorSrcColor*src.rgb); | ||||
* \f] | ||||
* \param[in] flags A set of flags influencing how the | * \param[in] flags A set of flags influencing how the | |||
* compositing operation works. | * compositing operation works. | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_0 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_0 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_90 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_90 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 | |||
* \arg \ref VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX | * \arg \ref VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX | |||
* \return VdpStatus The completion status of the operation. | * \return VdpStatus The completion status of the operation. | |||
* | * | |||
* The general compositing pipeline is as follows. | * The general compositing pipeline is as follows. | |||
skipping to change at line 3993 | skipping to change at line 3995 | |||
* displayed region of a surface, in order to match the specific region tha t | * displayed region of a surface, in order to match the specific region tha t | |||
* was rendered to. | * was rendered to. | |||
* | * | |||
* In turn, this allows the application to allocate over-sized (e.g. | * In turn, this allows the application to allocate over-sized (e.g. | |||
* screen-sized) surfaces, but render to a region that matches the current | * screen-sized) surfaces, but render to a region that matches the current | |||
* size of the video window. | * size of the video window. | |||
* | * | |||
* Using this technique, an application's response to window resizing may | * Using this technique, an application's response to window resizing may | |||
* simply be to render to, and display, a different region of the surface, | * simply be to render to, and display, a different region of the surface, | |||
* rather than de-/re-allocation of surfaces to match the updated window si ze. | * rather than de-/re-allocation of surfaces to match the updated window si ze. | |||
* | ||||
* Implementations may impose an upper bound on the number of entries | ||||
* contained by the presentation queue at a given time. This limit is likel | ||||
y | ||||
* different to the number of \ref VdpOutputSurface "VdpOutputSurface"s tha | ||||
t | ||||
* may be allocated at a given time. This limit applies to entries in the | ||||
* QUEUED or VISIBLE state only. In other words, entries that have | ||||
* transitioned from a QUEUED or VISIBLE state to an IDLE state do not coun | ||||
t | ||||
* toward this limit. | ||||
*/ | */ | |||
typedef VdpStatus VdpPresentationQueueDisplay( | typedef VdpStatus VdpPresentationQueueDisplay( | |||
VdpPresentationQueue presentation_queue, | VdpPresentationQueue presentation_queue, | |||
VdpOutputSurface surface, | VdpOutputSurface surface, | |||
uint32_t clip_width, | uint32_t clip_width, | |||
uint32_t clip_height, | uint32_t clip_height, | |||
VdpTime earliest_presentation_time | VdpTime earliest_presentation_time | |||
); | ); | |||
/** | /** | |||
* \brief Wait for a surface to finish being displayed. | * \brief Wait for a surface to finish being displayed. | |||
* \param[in] presentation_queue The queue to query. | * \param[in] presentation_queue The queue to query. | |||
* \param[in] surface The surface to wait for. | * \param[in] surface The surface to wait for. | |||
* \param[out] first_presentation_time The timestamp of the | * \param[out] first_presentation_time The timestamp of the | |||
* VSYNC at which this surface was first displayed. Note | * VSYNC at which this surface was first displayed. Note | |||
* that 0 means the surface was never displayed. | * that 0 means the surface was never displayed. | |||
* \return VdpStatus The completion status of the operation. | * \return VdpStatus The completion status of the operation. | |||
* | * | |||
* Note that this API will block indefinitely if queried about | * Note that this API would block forever if queried about the surface most | |||
* the surface most recently added to a presentation queue, | * recently added to a presentation queue. That is because there would be n | |||
* since there is no other surface that could possibly replace | o | |||
* the queried surface. | * other surface that could possibly replace that surface as the currently | |||
* displayed surface, and hence that surface would never become idle. For | ||||
* that reason, this function will return an error in that case. | ||||
*/ | */ | |||
typedef VdpStatus VdpPresentationQueueBlockUntilSurfaceIdle( | typedef VdpStatus VdpPresentationQueueBlockUntilSurfaceIdle( | |||
VdpPresentationQueue presentation_queue, | VdpPresentationQueue presentation_queue, | |||
VdpOutputSurface surface, | VdpOutputSurface surface, | |||
/* output parameters follow */ | /* output parameters follow */ | |||
VdpTime * first_presentation_time | VdpTime * first_presentation_time | |||
); | ); | |||
/** | /** | |||
* \hideinitializer | * \hideinitializer | |||
End of changes. 6 change blocks. | ||||
25 lines changed or deleted | 40 lines changed or added | |||