@@ -305,7 +305,9 @@ typedef int VAStatus; /** Return status type from functions */
305
305
#define VA_STATUS_ERROR_NOT_ENOUGH_BUFFER 0x00000025
306
306
/** \brief Indicate an operation isn't completed because time-out interval elapsed. */
307
307
#define VA_STATUS_ERROR_TIMEDOUT 0x00000026
308
- #define VA_STATUS_ERROR_UNKNOWN 0xFFFFFFFF
308
+ /** \brief Indicate HW reset has happended. */
309
+ #define VA_STATUS_ERROR_RESET 0x00000027
310
+ #define VA_STATUS_ERROR_UNKNOWN 0xFFFFFFFF
309
311
310
312
/**
311
313
* 1. De-interlacing flags for vaPutSurface()
@@ -662,8 +664,8 @@ typedef enum {
662
664
* at vaBeginPicture() time refers to the decode output surface. The
663
665
* target surface for the output of processing needs to be a different
664
666
* surface since the decode process requires the original reconstructed buffer.
665
- * The “ surface” member of VAProcPipelineParameterBuffer should be set to the
666
- * same as “ render_target” set in vaBeginPicture(), but the driver may choose
667
+ * The " surface" member of VAProcPipelineParameterBuffer should be set to the
668
+ * same as " render_target" set in vaBeginPicture(), but the driver may choose
667
669
* to ignore this parameter.
668
670
*/
669
671
VAConfigAttribDecProcessing = 8 ,
@@ -4201,11 +4203,17 @@ typedef enum {
4201
4203
} VADecodeErrorType ;
4202
4204
4203
4205
/**
4204
- * Client calls vaQuerySurfaceError with VA_STATUS_ERROR_DECODING_ERROR , server side returns
4206
+ * Client calls vaQuerySurfaceError() with the VAStatus obtained from vaSyncSurface() , server side returns
4205
4207
* an array of structure VASurfaceDecodeMBErrors, and the array is terminated by setting status=-1
4206
4208
*/
4207
4209
typedef struct _VASurfaceDecodeMBErrors {
4208
- int32_t status ; /* 1 if hardware has returned detailed info below, -1 means this record is invalid */
4210
+ /**
4211
+ * Status reported by server side:
4212
+ * 1 if hardware has returned detailed info below;
4213
+ * -1 means this record is invalid;
4214
+ * VA_STATUS_ERROR_RESET means reset happened in the server side.
4215
+ */
4216
+ int32_t status ;
4209
4217
uint32_t start_mb ; /* start mb address with errors */
4210
4218
uint32_t end_mb ; /* end mb address with errors */
4211
4219
VADecodeErrorType decode_error_type ;
@@ -4217,8 +4225,14 @@ typedef struct _VASurfaceDecodeMBErrors {
4217
4225
/**
4218
4226
* After the application gets VA_STATUS_ERROR_DECODING_ERROR after calling vaSyncSurface(),
4219
4227
* it can call vaQuerySurfaceError to find out further details on the particular error.
4220
- * VA_STATUS_ERROR_DECODING_ERROR should be passed in as "error_status",
4221
- * upon the return, error_info will point to an array of _VASurfaceDecodeMBErrors structure,
4228
+ * VA_STATUS_ERROR_DECODING_ERROR should be passed in as "error_status".
4229
+ *
4230
+ * After the applications get VA_STATUS_HW_BUSY or VA_STATUS_SUCCESSFULL from vaSyncSurface(),
4231
+ * it still can call vaQuerySurfaceError to find out further details to know if has real hw reset
4232
+ * happened on this surface since umd and kmd could recover the context from reset with success in sometimes.
4233
+ * VA_STATUS_ERROR_RESET should be passed in as "error_status".
4234
+ *
4235
+ * Upon the return, error_info will point to an array of _VASurfaceDecodeMBErrors structure,
4222
4236
* which is allocated and filled by libVA with detailed information on the missing or error macroblocks.
4223
4237
* The array is terminated if "status==-1" is detected.
4224
4238
*/
0 commit comments