4 changed files with 915 additions and 11 deletions
@ -0,0 +1,845 @@ |
|||||||
|
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
||||||
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
||||||
|
# |
||||||
|
# Filename: package/.../fglrx/install/usr_include_amd_amdxvba.h.txt |
||||||
|
# Copyright (C) 2012 The OpenSDE Project |
||||||
|
# |
||||||
|
# More information can be found in the files COPYING and README. |
||||||
|
# |
||||||
|
# This program is free software; you can redistribute it and/or modify |
||||||
|
# it under the terms of the GNU General Public License as published by |
||||||
|
# the Free Software Foundation; version 2 of the License. A copy of the |
||||||
|
# GNU General Public License can be found in the file COPYING. |
||||||
|
# --- SDE-COPYRIGHT-NOTE-END --- |
||||||
|
|
||||||
|
/******************************************************************************* |
||||||
|
* |
||||||
|
* Copyright (c) 2011, Advanced Micro Devices, Inc. |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following are met: |
||||||
|
* |
||||||
|
* Neither the name of the copyright holder nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific, prior, written permission. |
||||||
|
* |
||||||
|
* You must reproduce the above copyright notice. |
||||||
|
* |
||||||
|
* You must include the following terms in your license and/or other |
||||||
|
* materials provided with the software. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||||
|
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
* |
||||||
|
* Without limiting the foregoing, the software may implement third |
||||||
|
* party technologies (e.g. third party libraries) for which you must |
||||||
|
* obtain licenses from parties other than AMD. You agree that AMD has |
||||||
|
* not obtained or conveyed to you, and that you shall be responsible for |
||||||
|
* obtaining the rights to use and/or distribute the applicable underlying |
||||||
|
* intellectual property rights related to the third party technologies. |
||||||
|
* These third party technologies are not licensed hereunder. |
||||||
|
* |
||||||
|
* Without limiting the foregoing, for MPEG-2 products, the following |
||||||
|
* additional notices are provided: For MPEG-2 Encoding Products (those |
||||||
|
* that are "Sold" to end-users, directly or indirectly): |
||||||
|
* |
||||||
|
* NO LICENSE IS GRANTED HEREIN, BY IMPLICATION OR OTHERWISE, |
||||||
|
* TO YOU OR YOUR CUSTOMERS TO USE MPEG-2 ENCODING PRODUCTS, |
||||||
|
* MPEG-2 DISTRIBUTION ENCODING PRODUCTS, MPEG-2 ENCODING SOFTWARE, |
||||||
|
* AND/OR MPEG-2 BUNDLED ENCODING SOFTWARE FOR ENCODING OR HAVING |
||||||
|
* ENCODED ONE OR MORE MPEG-2 VIDEO EVENTS FOR RECORDING ON AN |
||||||
|
* MPEG-2 PACKAGED MEDIUM FOR ANY USE OR DISTRIBUTION OTHER THAN |
||||||
|
* PERSONAL USE OF LICENSEE'S CUSTOMER. |
||||||
|
* |
||||||
|
* For MPEG-2 Intermediate Products (those that are NOT "Sold" to |
||||||
|
* end-users, directly or indirectly): |
||||||
|
* |
||||||
|
* NO LICENSE IS GRANTED HEREIN, BY IMPLICATION OR OTHERWISE, |
||||||
|
* TO YOU OR YOUR CUSTOMERS TO USE MPEG-2 INTERMEDIATE PRODUCTS |
||||||
|
* MANUFACTURED OR SOLD BY YOU. |
||||||
|
* |
||||||
|
* If you use the software (in whole or in part), you shall adhere to |
||||||
|
* all applicable U.S., European, and other export laws, including but |
||||||
|
* not limited to the U.S. Export Administration Regulations ("EAR"), |
||||||
|
* (15 C.F.R. Sections 730 through 774), and E.U. Council Regulation (EC) |
||||||
|
* No 1334/2000 of 22 June 2000. Further, pursuant to Section 740.6 of |
||||||
|
* the EAR, you hereby certify that, except pursuant to a license granted |
||||||
|
* by the United States Department of Commerce Bureau of Industry and |
||||||
|
* Security or as otherwise permitted pursuant to a License Exception |
||||||
|
* under the U.S. Export Administration Regulations ("EAR"), you will |
||||||
|
* not (1) export, re-export or release to a national of a country in |
||||||
|
* Country Groups D:1, E:1 or E:2 any restricted technology, software, |
||||||
|
* or source code you receive hereunder, or (2) export to Country Groups |
||||||
|
* D:1, E:1 or E:2 the direct product of such technology or software, if |
||||||
|
* such foreign produced direct product is subject to national security |
||||||
|
* controls as identified on the Commerce Control List (currently found |
||||||
|
* in Supplement 1 to Part 774 of EAR). For the most current Country |
||||||
|
* Group listings, or for additional information about the EAR or your |
||||||
|
* obligations under those regulations, please refer to the U.S. Bureau |
||||||
|
* of Industry and Security's website at http://www.bis.doc.gov/. |
||||||
|
* |
||||||
|
*******************************************************************************/ |
||||||
|
|
||||||
|
#ifndef _XVBA_H |
||||||
|
#define _XVBA_H |
||||||
|
|
||||||
|
// A minor revision change indicates a backward-compatible change; a major revision change indicates a backward-incompatible |
||||||
|
#define XVBA_VERSION_MAJOR 0 |
||||||
|
#define XVBA_VERSION_MINOR 74 |
||||||
|
#define XVBA_VERSION ((XVBA_VERSION_MAJOR << 16) | XVBA_VERSION_MINOR) |
||||||
|
|
||||||
|
#define NUM_OF_XVBA_DECODE_CAP 3 |
||||||
|
#define NUM_OF_XVBA_GET_SURFACE_TARGET 3 |
||||||
|
|
||||||
|
#ifdef __cplusplus |
||||||
|
extern "C" { |
||||||
|
#endif |
||||||
|
|
||||||
|
typedef enum _XVBA_SURFACE_FLAG |
||||||
|
{ |
||||||
|
XVBA_FRAME = 0, |
||||||
|
XVBA_TOP_FIELD, |
||||||
|
XVBA_BOTTOM_FIELD, |
||||||
|
|
||||||
|
} XVBA_SURFACE_FLAG; |
||||||
|
|
||||||
|
/* Four-character-code (FOURCC) */ |
||||||
|
#define XVBA_FOURCC(a,b,c,d)\ |
||||||
|
(((unsigned int)(a)<<0) |\ |
||||||
|
((unsigned int)(b)<<8) |\ |
||||||
|
((unsigned int)(c)<<16)|\ |
||||||
|
((unsigned int)(d)<<24)) |
||||||
|
|
||||||
|
typedef enum _XVBA_SURFACE_FORMAT |
||||||
|
{ |
||||||
|
XVBA_NV12 = XVBA_FOURCC('N','V','1','2'), /* 12bit Y/CbCr 4:2:0 planar */ |
||||||
|
XVBA_YUY2 = XVBA_FOURCC('Y','U','Y','2'), /* 16bit YUV 4:2:2 */ |
||||||
|
XVBA_ARGB = XVBA_FOURCC('A','R','G','B'), /* 32bit ARGB-8-8-8-8 */ |
||||||
|
XVBA_AYUV = XVBA_FOURCC('A','Y','U','V'), /* 32bit AYUV-8-8-8-8 */ |
||||||
|
XVBA_YV12 = XVBA_FOURCC('Y','V','1','2'), /* 12bit Y/V/U 4:2:0 planar */ |
||||||
|
} XVBA_SURFACE_FORMAT; |
||||||
|
|
||||||
|
typedef struct _XVBA_GetSurface_Target |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
XVBA_SURFACE_FORMAT surfaceType; |
||||||
|
XVBA_SURFACE_FLAG flag; |
||||||
|
} XVBA_GetSurface_Target; |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Query Extension |
||||||
|
*/ |
||||||
|
Bool |
||||||
|
XVBAQueryExtension |
||||||
|
( |
||||||
|
Display *display, |
||||||
|
int *version |
||||||
|
); |
||||||
|
|
||||||
|
/******************************************************************/ |
||||||
|
/* XVBA Context */ |
||||||
|
/******************************************************************/ |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Context Create |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
Display *display; |
||||||
|
Drawable draw; |
||||||
|
|
||||||
|
} XVBA_Create_Context_Input; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *context; |
||||||
|
|
||||||
|
} XVBA_Create_Context_Output; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBACreateContext |
||||||
|
( |
||||||
|
XVBA_Create_Context_Input *create_context_input, |
||||||
|
XVBA_Create_Context_Output *create_context_output |
||||||
|
); |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Context Destroy |
||||||
|
*/ |
||||||
|
Status |
||||||
|
XVBADestroyContext |
||||||
|
( |
||||||
|
void *context |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************/ |
||||||
|
/* XVBA Sessions */ |
||||||
|
/******************************************************************/ |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Context Query Session Info |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *context; |
||||||
|
|
||||||
|
} XVBA_GetSessionInfo_Input; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
unsigned int getcapdecode_output_size; ///< 0 = Decode not supported, NZ = Decode session is supported and the value is used for XVBAGetCapDecode output struct size |
||||||
|
unsigned int xvba_gsio_reserved_0; |
||||||
|
unsigned int xvba_gsio_reserved_1; |
||||||
|
} XVBA_GetSessionInfo_Output; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBAGetSessionInfo |
||||||
|
( |
||||||
|
XVBA_GetSessionInfo_Input *get_session_info_input, |
||||||
|
XVBA_GetSessionInfo_Output *get_session_info_output |
||||||
|
); |
||||||
|
|
||||||
|
/******************************************************************/ |
||||||
|
/* XVBA decode errors */ |
||||||
|
/******************************************************************/ |
||||||
|
|
||||||
|
typedef enum |
||||||
|
{ |
||||||
|
XVBA_DECODE_NO_ERROR = 0, |
||||||
|
XVBA_DECODE_BAD_PICTURE, ///< the entire picture is corrupted . All MBs are invalid |
||||||
|
XVBA_DECODE_BAD_SLICE, ///< part of the picture, slice, wasn.t decoded properly . all MBs in this slice are bad |
||||||
|
XVBA_DECODE_BAD_MB ///< some MBs are not decoded properly |
||||||
|
|
||||||
|
} XVBA_DECODE_ERROR; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
XVBA_DECODE_ERROR type; |
||||||
|
unsigned int num_of_bad_mbs; ///< number of marcoblocks that were not properly decoded |
||||||
|
|
||||||
|
} XVBADecodeError; |
||||||
|
|
||||||
|
/******************************************************************/ |
||||||
|
/* XVBA Surface */ |
||||||
|
/******************************************************************/ |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Surface create |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; |
||||||
|
void *session; |
||||||
|
unsigned int width; |
||||||
|
unsigned int height; |
||||||
|
XVBA_SURFACE_FORMAT surface_type; |
||||||
|
|
||||||
|
} XVBA_Create_Surface_Input; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; |
||||||
|
void *surface; ///< Pointer to XVBASurface |
||||||
|
|
||||||
|
} XVBA_Create_Surface_Output; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBACreateSurface( |
||||||
|
XVBA_Create_Surface_Input *create_surface_input, |
||||||
|
XVBA_Create_Surface_Output *create_surface_output |
||||||
|
); |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Surface destroy |
||||||
|
*/ |
||||||
|
Status |
||||||
|
XVBADestroySurface( |
||||||
|
void *surface |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Synchronization query_status_flags |
||||||
|
*/ |
||||||
|
typedef enum |
||||||
|
{ |
||||||
|
XVBA_GET_SURFACE_STATUS = 1, ///< get surface status; is surface still used by GPU |
||||||
|
XVBA_GET_DECODE_ERRORS ///< get decode errors for target surface |
||||||
|
|
||||||
|
} XVBA_QUERY_STATUS; |
||||||
|
|
||||||
|
/** |
||||||
|
* Synchronization status flags |
||||||
|
*/ |
||||||
|
#define XVBA_STILL_PENDING 0x00000001 ///< surface is still used by HW |
||||||
|
#define XVBA_COMPLETED 0x00000002 ///< HW completed job on this surface |
||||||
|
#define XVBA_NO_ERROR_DECODE 0x00000004 ///< no decode errors |
||||||
|
#define XVBA_ERROR_DECODE 0x00000008 ///< decode errors for queried surface |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Surface synchronization |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; |
||||||
|
void *session; |
||||||
|
void *surface; |
||||||
|
XVBA_QUERY_STATUS query_status; |
||||||
|
|
||||||
|
} XVBA_Surface_Sync_Input; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; |
||||||
|
unsigned int status_flags; |
||||||
|
XVBADecodeError decode_error; |
||||||
|
|
||||||
|
} XVBA_Surface_Sync_Output; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBASyncSurface ( |
||||||
|
XVBA_Surface_Sync_Input *surface_sync_input, |
||||||
|
XVBA_Surface_Sync_Output *surface_sync_output |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
// Conversion from OGL to XVBA surface |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; |
||||||
|
void *session; |
||||||
|
void *glcontext; |
||||||
|
unsigned int gltexture; |
||||||
|
|
||||||
|
} XVBA_Create_GLShared_Surface_Input; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; |
||||||
|
void *surface; // Pointer to XVBASurface |
||||||
|
|
||||||
|
} XVBA_Create_GLShared_Surface_Output; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBACreateGLSharedSurface ( |
||||||
|
XVBA_Create_GLShared_Surface_Input *create_glshared_surface_input, |
||||||
|
XVBA_Create_GLShared_Surface_Output *create_glshared_surface_output |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Get Surface |
||||||
|
*/ |
||||||
|
typedef struct { |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *session; // XVBA session |
||||||
|
void *src_surface; // source XVBA surface |
||||||
|
void *target_buffer; // application supplied system memory buffer |
||||||
|
unsigned int target_pitch; // pitch of the destination buffer |
||||||
|
unsigned int target_width; // width of the destination buffer |
||||||
|
unsigned int target_height; // height of the destination buffer |
||||||
|
XVBA_GetSurface_Target target_parameter; // destination buffer format and flag |
||||||
|
unsigned int reserved [4]; // reserved |
||||||
|
} XVBA_Get_Surface_Input; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBAGetSurface ( |
||||||
|
XVBA_Get_Surface_Input *get_surface_input |
||||||
|
); |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Transfer Surface |
||||||
|
*/ |
||||||
|
typedef struct { |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *session; // XVBA session |
||||||
|
void *src_surface; // source XVBA surface |
||||||
|
void *target_surface; // destination XVBA surface |
||||||
|
XVBA_SURFACE_FLAG flag; // top, bottom or frame |
||||||
|
unsigned int reserved [4]; // reserved |
||||||
|
} XVBA_Transfer_Surface_Input; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBATransferSurface ( |
||||||
|
XVBA_Transfer_Surface_Input *transfer_surface_input |
||||||
|
); |
||||||
|
|
||||||
|
/******************************************************************/ |
||||||
|
/* XVBA Buffers */ |
||||||
|
/******************************************************************/ |
||||||
|
|
||||||
|
typedef enum |
||||||
|
{ |
||||||
|
XVBA_NONE = 0, |
||||||
|
XVBA_PICTURE_DESCRIPTION_BUFFER, |
||||||
|
XVBA_DATA_BUFFER, |
||||||
|
XVBA_DATA_CTRL_BUFFER, |
||||||
|
XVBA_QM_BUFFER |
||||||
|
|
||||||
|
} XVBA_BUFFER; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
XVBA_BUFFER buffer_type; |
||||||
|
unsigned int buffer_size; ///< allocated size of data in bytes |
||||||
|
void *bufferXVBA; ///< pointer to XVBA decode data buffer |
||||||
|
unsigned int data_size_in_buffer;///< Used in Decode call only |
||||||
|
int data_offset; ///< Used in Decode call only |
||||||
|
void *appPrivate; ///< used only by application to store pointer to its private data. |
||||||
|
|
||||||
|
} XVBABufferDescriptor; |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Decode buffers create |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *session; |
||||||
|
XVBA_BUFFER buffer_type; |
||||||
|
unsigned int num_of_buffers; |
||||||
|
|
||||||
|
} XVBA_Create_DecodeBuff_Input; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
unsigned int num_of_buffers_in_list; |
||||||
|
XVBABufferDescriptor *buffer_list; |
||||||
|
|
||||||
|
} XVBA_Create_DecodeBuff_Output; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBACreateDecodeBuffers ( |
||||||
|
XVBA_Create_DecodeBuff_Input *create_decodebuff_input, |
||||||
|
XVBA_Create_DecodeBuff_Output *create_decodebuff_output |
||||||
|
); |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Decode buffers destroy |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; |
||||||
|
void *session; |
||||||
|
unsigned int num_of_buffers_in_list; |
||||||
|
XVBABufferDescriptor *buffer_list; |
||||||
|
|
||||||
|
} XVBA_Destroy_Decode_Buffers_Input; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBADestroyDecodeBuffers ( |
||||||
|
XVBA_Destroy_Decode_Buffers_Input *buffer_list |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************/ |
||||||
|
/* XVBA Decode session (XVBADecodeCap) */ |
||||||
|
/******************************************************************/ |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBADecodeCap flags |
||||||
|
*/ |
||||||
|
typedef enum |
||||||
|
{ |
||||||
|
XVBA_NOFLAG = 0, |
||||||
|
XVBA_H264_BASELINE, |
||||||
|
XVBA_H264_MAIN, |
||||||
|
XVBA_H264_HIGH, |
||||||
|
|
||||||
|
XVBA_VC1_SIMPLE, |
||||||
|
XVBA_VC1_MAIN, |
||||||
|
XVBA_VC1_ADVANCED, |
||||||
|
|
||||||
|
} XVBA_DECODE_FLAGS; |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBADecodeCap capability_id |
||||||
|
*/ |
||||||
|
typedef enum |
||||||
|
{ |
||||||
|
XVBA_H264 = 0x100,///< bitstream level of acceleration |
||||||
|
XVBA_VC1, ///< bitstream level of acceleration |
||||||
|
XVBA_MPEG2_IDCT, ///< iDCT and motion compensation level of acceleration |
||||||
|
XVBA_MPEG2_VLD ///< bitstream level of acceleration |
||||||
|
|
||||||
|
} XVBA_CAPABILITY_ID; |
||||||
|
|
||||||
|
typedef struct { |
||||||
|
unsigned int size; ///< structure size |
||||||
|
XVBA_CAPABILITY_ID capability_id; ///< Unique descriptor for decode capability |
||||||
|
XVBA_DECODE_FLAGS flags; ///< defines for additional information about capability |
||||||
|
XVBA_SURFACE_FORMAT surface_type; ///< Surface type: fourcc YUV or RGB supported with this capability. |
||||||
|
|
||||||
|
} XVBADecodeCap; |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBADecodeCap Query Info |
||||||
|
*/ |
||||||
|
typedef struct { |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *context; |
||||||
|
|
||||||
|
} XVBA_GetCapDecode_Input; |
||||||
|
|
||||||
|
typedef struct { |
||||||
|
unsigned int size; ///< structure size |
||||||
|
unsigned int num_of_decodecaps; |
||||||
|
XVBADecodeCap decode_caps_list[NUM_OF_XVBA_DECODE_CAP]; |
||||||
|
unsigned int num_of_getsurface_target; |
||||||
|
XVBA_GetSurface_Target getsurface_target_list[NUM_OF_XVBA_GET_SURFACE_TARGET]; |
||||||
|
} XVBA_GetCapDecode_Output; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBAGetCapDecode ( |
||||||
|
XVBA_GetCapDecode_Input *decodecap_list_input, |
||||||
|
XVBA_GetCapDecode_Output *decodecap_list_output |
||||||
|
); |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBADecodeCap create |
||||||
|
*/ |
||||||
|
typedef struct { |
||||||
|
unsigned int size; ///< structure size |
||||||
|
unsigned int width; ///< decoded video width |
||||||
|
unsigned int height; ///< decoded video height |
||||||
|
void *context; |
||||||
|
XVBADecodeCap *decode_cap; ///< capability from the driver reported list |
||||||
|
|
||||||
|
} XVBA_Create_Decode_Session_Input; |
||||||
|
|
||||||
|
typedef struct { |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *session; ///< Pointer to the created decode session |
||||||
|
|
||||||
|
} XVBA_Create_Decode_Session_Output; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBACreateDecode ( |
||||||
|
XVBA_Create_Decode_Session_Input *create_decode_session_input, |
||||||
|
XVBA_Create_Decode_Session_Output *create_decode_session_output |
||||||
|
); |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBADecodeCap destroy |
||||||
|
*/ |
||||||
|
Status |
||||||
|
XVBADestroyDecode ( |
||||||
|
void *session |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************/ |
||||||
|
/* XVBA Decode API */ |
||||||
|
/******************************************************************/ |
||||||
|
#define XVBA_PREDICTION_FIELD 0x01 |
||||||
|
#define XVBA_PREDICTION_FRAME 0x02 |
||||||
|
#define XVBA_PREDICTION_DUAL_PRIME 0x03 |
||||||
|
#define XVBA_PREDICTION_16x8 0x02 |
||||||
|
|
||||||
|
#define XVBA_SECOND_FIELD 0x00000004 |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA inits picture decoding |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *session; ///< pointer to decode session |
||||||
|
void *target_surface; ///< decode target |
||||||
|
|
||||||
|
} XVBA_Decode_Picture_Start_Input; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBAStartDecodePicture ( |
||||||
|
XVBA_Decode_Picture_Start_Input *decode_picture_start |
||||||
|
); |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA picture decode |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; ///< structure size |
||||||
|
void *session; ///< pointer to decode session |
||||||
|
unsigned int num_of_buffers_in_list; ///< number of decode compressed data buffers |
||||||
|
XVBABufferDescriptor **buffer_list; ///< array of XVBABufferDescriptor structures |
||||||
|
|
||||||
|
} XVBA_Decode_Picture_Input; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBADecodePicture ( |
||||||
|
XVBA_Decode_Picture_Input *decode_picture_input |
||||||
|
); |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA end picture decode |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int size; |
||||||
|
void *session; |
||||||
|
|
||||||
|
} XVBA_Decode_Picture_End_Input; |
||||||
|
|
||||||
|
Status |
||||||
|
XVBAEndDecodePicture ( |
||||||
|
XVBA_Decode_Picture_End_Input *decode_picture_end_input |
||||||
|
); |
||||||
|
|
||||||
|
/******************************************************************/ |
||||||
|
/* XVBA Decode Data buffers */ |
||||||
|
/******************************************************************/ |
||||||
|
|
||||||
|
/* |
||||||
|
* XVBA compressed data type: XVBA_PICTURE_DESCRIPTOR_BUFFER |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
//VC-1, MPEG2 bitstream references |
||||||
|
void *past_surface; |
||||||
|
void *future_surface; |
||||||
|
|
||||||
|
unsigned int profile; |
||||||
|
unsigned int level; |
||||||
|
|
||||||
|
unsigned int width_in_mb; |
||||||
|
unsigned int height_in_mb; |
||||||
|
unsigned int picture_structure; |
||||||
|
|
||||||
|
union { |
||||||
|
struct { |
||||||
|
unsigned int residual_colour_transform_flag : 1; |
||||||
|
unsigned int delta_pic_always_zero_flag : 1; |
||||||
|
unsigned int gaps_in_frame_num_value_allowed_flag: 1; |
||||||
|
unsigned int frame_mbs_only_flag : 1; |
||||||
|
unsigned int mb_adaptive_frame_field_flag : 1; |
||||||
|
unsigned int direct_8x8_inference_flag : 1; |
||||||
|
unsigned int xvba_avc_sps_reserved : 26; |
||||||
|
} avc; |
||||||
|
|
||||||
|
struct { |
||||||
|
unsigned int postprocflag : 1; |
||||||
|
unsigned int pulldown : 1; |
||||||
|
unsigned int interlace : 1; |
||||||
|
unsigned int tfcntrflag : 1; |
||||||
|
unsigned int finterpflag : 1; |
||||||
|
unsigned int reserved : 1; |
||||||
|
unsigned int psf : 1; |
||||||
|
unsigned int second_field : 1; |
||||||
|
unsigned int xvba_vc1_sps_reserved : 24; |
||||||
|
} vc1; |
||||||
|
|
||||||
|
unsigned int flags; |
||||||
|
} sps_info; |
||||||
|
|
||||||
|
unsigned char chroma_format; |
||||||
|
unsigned char avc_bit_depth_luma_minus8; |
||||||
|
unsigned char avc_bit_depth_chroma_minus8; |
||||||
|
unsigned char avc_log2_max_frame_num_minus4; |
||||||
|
|
||||||
|
unsigned char avc_pic_order_cnt_type; |
||||||
|
unsigned char avc_log2_max_pic_order_cnt_lsb_minus4; |
||||||
|
unsigned char avc_num_ref_frames; |
||||||
|
unsigned char avc_reserved_8bit; |
||||||
|
|
||||||
|
union { |
||||||
|
struct { |
||||||
|
unsigned int entropy_coding_mode_flag : 1; |
||||||
|
unsigned int pic_order_present_flag : 1; |
||||||
|
unsigned int weighted_pred_flag : 1; |
||||||
|
unsigned int weighted_bipred_idc : 2; |
||||||
|
unsigned int deblocking_filter_control_present_flag : 1; |
||||||
|
unsigned int constrained_intra_pred_flag : 1; |
||||||
|
unsigned int redundant_pic_cnt_present_flag : 1; |
||||||
|
unsigned int transform_8x8_mode_flag : 1; |
||||||
|
unsigned int xvba_avc_pps_reserved : 23; |
||||||
|
} avc; |
||||||
|
|
||||||
|
struct { |
||||||
|
unsigned int panscan_flag : 1; |
||||||
|
unsigned int refdist_flag : 1; |
||||||
|
unsigned int loopfilter : 1; |
||||||
|
unsigned int fastuvmc : 1; |
||||||
|
unsigned int extended_mv : 1; |
||||||
|
unsigned int dquant : 2; |
||||||
|
unsigned int vstransform : 1; |
||||||
|
unsigned int overlap : 1; |
||||||
|
unsigned int quantizer : 2; |
||||||
|
unsigned int extended_dmv : 1; |
||||||
|
unsigned int maxbframes : 3; |
||||||
|
unsigned int rangered : 1; |
||||||
|
unsigned int syncmarker : 1; |
||||||
|
unsigned int multires : 1; |
||||||
|
unsigned int reserved : 2; |
||||||
|
unsigned int range_mapy_flag : 1; |
||||||
|
unsigned int range_mapy : 3; |
||||||
|
unsigned int range_mapuv_flag : 1; |
||||||
|
unsigned int range_mapuv : 3; |
||||||
|
unsigned int xvba_vc1_pps_reserved: 4; |
||||||
|
} vc1; |
||||||
|
|
||||||
|
unsigned int flags; |
||||||
|
} pps_info; |
||||||
|
|
||||||
|
unsigned char avc_num_slice_groups_minus1; |
||||||
|
unsigned char avc_slice_group_map_type; |
||||||
|
unsigned char avc_num_ref_idx_l0_active_minus1; |
||||||
|
unsigned char avc_num_ref_idx_l1_active_minus1; |
||||||
|
|
||||||
|
char avc_pic_init_qp_minus26; |
||||||
|
char avc_pic_init_qs_minus26; |
||||||
|
char avc_chroma_qp_index_offset; |
||||||
|
char avc_second_chroma_qp_index_offset; |
||||||
|
|
||||||
|
unsigned short avc_slice_group_change_rate_minus1; |
||||||
|
unsigned short avc_reserved_16bit; |
||||||
|
|
||||||
|
unsigned int avc_frame_num; |
||||||
|
unsigned int avc_frame_num_list[16]; ///< bit 31 is used to indicate long/short term |
||||||
|
int avc_curr_field_order_cnt_list[2]; |
||||||
|
int avc_field_order_cnt_list[16][2]; |
||||||
|
|
||||||
|
unsigned char avc_slice_group_map[810]; |
||||||
|
|
||||||
|
int avc_intra_flag; |
||||||
|
int avc_reference; |
||||||
|
|
||||||
|
int xvba_reserved[14]; |
||||||
|
|
||||||
|
} XVBAPictureDescriptor; |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Compressed data type: XVBA_DATA_CTRL_BUFFER |
||||||
|
* (H264 and VC1 only) |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned int SliceBitsInBuffer; |
||||||
|
unsigned int SliceDataLocation; |
||||||
|
unsigned int SliceBytesInBuffer; |
||||||
|
unsigned int reserved[5]; |
||||||
|
|
||||||
|
} XVBADataCtrl; |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA Compressed data type: XVBA_DATA_BUFFER |
||||||
|
* (MPEG2 iDCT level decode only) |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
struct |
||||||
|
{ |
||||||
|
unsigned short index: 15; ///< contains rates scan index of the coefficient within the block. |
||||||
|
///< cannot be greater or equal to (block width * block height) |
||||||
|
unsigned short endofblock: 1; |
||||||
|
} idx; |
||||||
|
short coeff; ///< value of the coefficient in the block; mismatch control and |
||||||
|
///< clipping is host.s responsibility |
||||||
|
|
||||||
|
} XVBAMpeg2Residual; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
short horizontal; |
||||||
|
short vertical; |
||||||
|
} XVBAMpeg2MV; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned short mb_address; |
||||||
|
struct |
||||||
|
{ |
||||||
|
unsigned short mb_intra : 1; |
||||||
|
unsigned short motion_fw : 1; |
||||||
|
unsigned short motion_back : 1; |
||||||
|
unsigned short reserved2 : 2; |
||||||
|
unsigned short field_residual : 1; |
||||||
|
unsigned short mb_scan_mode : 2; |
||||||
|
unsigned short motion_type : 2; |
||||||
|
unsigned short reserved1 : 2; |
||||||
|
unsigned short motion_vector_sel0 : 1; |
||||||
|
unsigned short motion_vector_sel1 : 1; |
||||||
|
unsigned short motion_vector_sel2 : 1; |
||||||
|
unsigned short motion_vector_sel3 : 1; |
||||||
|
} mpeg2data1; |
||||||
|
|
||||||
|
struct |
||||||
|
{ |
||||||
|
unsigned int mb_data_resid_location : 24; |
||||||
|
unsigned int skipped_mb : 8; |
||||||
|
} mpeg2data2; |
||||||
|
|
||||||
|
unsigned short pattern_code; |
||||||
|
unsigned char numcoeff[6]; |
||||||
|
|
||||||
|
} XVBAMpeg2IntraMB; |
||||||
|
|
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned short mb_address; |
||||||
|
struct |
||||||
|
{ |
||||||
|
unsigned short mb_intra : 1; |
||||||
|
unsigned short motion_fw : 1; |
||||||
|
unsigned short motion_back : 1; |
||||||
|
unsigned short reserved2 : 2; |
||||||
|
unsigned short field_residual : 1; |
||||||
|
unsigned short mb_scan_mode : 2; |
||||||
|
unsigned short motion_type : 2; |
||||||
|
unsigned short reserved1 : 2; |
||||||
|
unsigned short motion_vector_sel0 : 1; |
||||||
|
unsigned short motion_vector_sel1 : 1; |
||||||
|
unsigned short motion_vector_sel2 : 1; |
||||||
|
unsigned short motion_vector_sel3 : 1; |
||||||
|
} mpeg2data1; |
||||||
|
|
||||||
|
struct |
||||||
|
{ |
||||||
|
unsigned int mb_data_resid_location : 24; |
||||||
|
unsigned int skipped_mb : 8; |
||||||
|
} mpeg2data2; |
||||||
|
|
||||||
|
unsigned short pattern_code; |
||||||
|
unsigned char numcoeff[6]; |
||||||
|
|
||||||
|
XVBAMpeg2MV motion_vector[4]; |
||||||
|
|
||||||
|
} XVBAMpeg2NonIntraMB; |
||||||
|
|
||||||
|
/** |
||||||
|
* XVBA compressed data type: XVBA_QM_BUFFER |
||||||
|
* (H264 and VC1 only) |
||||||
|
*/ |
||||||
|
typedef struct |
||||||
|
{ |
||||||
|
unsigned char bScalingLists4x4[6][16]; |
||||||
|
unsigned char bScalingLists8x8[2][64]; |
||||||
|
|
||||||
|
} XVBAQuantMatrixAvc; |
||||||
|
|
||||||
|
#ifdef __cplusplus |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
#endif //_XVBA_H |
@ -0,0 +1,54 @@ |
|||||||
|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
||||||
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||||||
|
#
|
||||||
|
# Filename: package/.../fglrx/xf86-video-fglrx-12.2-TS_USEDFPU_fix.patch
|
||||||
|
# Copyright (C) 2012 The OpenSDE Project
|
||||||
|
#
|
||||||
|
# More information can be found in the files COPYING and README.
|
||||||
|
#
|
||||||
|
# This patch file is dual-licensed. It is available under the license the
|
||||||
|
# patched project is licensed under, as long as it is an OpenSource license
|
||||||
|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
|
||||||
|
# of the GNU General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
||||||
|
|
||||||
|
http://phoronix.com/forums/showthread.php?68922-Patch-to-compile-fgrlx-module-on-Linux-3-3-rc4-with-x86-32-bit-arch
|
||||||
|
fixed fgrlx compilation error on 32-bit x86 arch with kernel 3.3-rc4 due to commit:
|
||||||
|
https://github.com/torvalds/linux/commit/f94edacf998516ac9d849f7bc6949a703977a7f3
|
||||||
|
|
||||||
|
Signed-off-by: Gianluca Gennari <gennarone@gmail.com>
|
||||||
|
---
|
||||||
|
firegl_public.c | 9 +++++++++
|
||||||
|
1 files changed, 9 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/firegl_public.c b/firegl_public.c
|
||||||
|
index 6e0aa82..5010b91 100644
|
||||||
|
--- fglrx/common/lib/modules/fglrx/build_mod/firegl_public.c
|
||||||
|
+++ fglrx/common/lib/modules/fglrx/build_mod/firegl_public.c
|
||||||
|
@@ -5797,6 +5797,14 @@ void ATI_API_CALL KCL_fpu_begin(void)
|
||||||
|
#ifdef CONFIG_X86_64
|
||||||
|
kernel_fpu_begin();
|
||||||
|
#else
|
||||||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)
|
||||||
|
+ struct task_struct *tsk = current;
|
||||||
|
+ preempt_disable();
|
||||||
|
+ if (tsk->thread.has_fpu)
|
||||||
|
+ __save_init_fpu(tsk);
|
||||||
|
+ else
|
||||||
|
+ clts();
|
||||||
|
+#else
|
||||||
|
struct thread_info *cur_task = current_thread_info();
|
||||||
|
preempt_disable();
|
||||||
|
if (cur_task->status & TS_USEDFPU)
|
||||||
|
@@ -5804,6 +5812,7 @@ void ATI_API_CALL KCL_fpu_begin(void)
|
||||||
|
else
|
||||||
|
clts();
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \brief End of using FPU
|
||||||
|
--
|
||||||
|
1.7.5.4
|
Loading…
Reference in new issue