From e5d61b3019dd4f63753bf3a3265e7d6e4bc7df0c Mon Sep 17 00:00:00 2001 From: Nagy Karoly Gabriel Date: Tue, 10 Apr 2012 20:33:12 +0200 Subject: [PATCH] fglrx: Updated (8.32.5 -> 12.3) --- wip/fglrx/fglrx.conf | 19 +- wip/fglrx/fglrx.desc | 8 +- .../install/usr_include_amd_amdxvba.h.txt | 845 ++++++++++++++++++ ...xf86-video-fglrx-12.2-TS_USEDFPU_fix.patch | 54 ++ 4 files changed, 915 insertions(+), 11 deletions(-) create mode 100644 wip/fglrx/install/usr_include_amd_amdxvba.h.txt create mode 100644 wip/fglrx/xf86-video-fglrx-12.2-TS_USEDFPU_fix.patch diff --git a/wip/fglrx/fglrx.conf b/wip/fglrx/fglrx.conf index 88348829f..1fffe89aa 100644 --- a/wip/fglrx/fglrx.conf +++ b/wip/fglrx/fglrx.conf @@ -2,7 +2,7 @@ # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: package/.../fglrx/fglrx.conf -# Copyright (C) 2006 The OpenSDE Project +# Copyright (C) 2006 - 2012 The OpenSDE Project # # More information can be found in the files COPYING and README. # @@ -24,10 +24,12 @@ fglrx_extract() { commonsrc=common case "$arch" in x86-64) archsrc="arch/x86_64" - xorgsrc="x710_64a" + xorgsrc="xpic_64a" + atilib="lib64" ;; *) archsrc="arch/$arch" - xorgsrc="x710" + xorgsrc="xpic" + atilib="lib" ;; esac @@ -48,8 +50,8 @@ fglrx_install() { # mv -vf $archsrc/usr/sbin/* $root$sbindir/ mv -vf $archsrc/usr/X11R6/bin/* $x11_bindir/ - mv -vf $archsrc/usr/X11R6/lib/modules/dri/* $xorg_libdir/modules/dri/ - mv -vf $archsrc/usr/X11R6/lib/lib* $x11_libdir/ + mv -vf $archsrc/usr/X11R6/$atilib/modules/dri/* $x11_libdir/dri/ + mv -vf $archsrc/usr/X11R6/$atilib/lib* $x11_libdir/ # TODO: install during linux26 # arch/x86/lib/modules/fglrx/build_mod/libfglrx_ip.a.GCC4 @@ -57,11 +59,14 @@ fglrx_install() { # X.org # - mv -vf $xorgsrc/usr/X11R6/lib/modules/linux/libfglrxdrm.so $xorg_libdir/modules/linux/ - mv -vf $xorgsrc/usr/X11R6/lib/modules/drivers/fglrx_drv.so $xorg_libdir/modules/drivers/ + mkdir -p $xorg_libdir/modules/{linux,drivers} + mv -vf $xorgsrc/usr/X11R6/$atilib/modules/linux/libfglrxdrm.so $xorg_libdir/modules/linux/ + mv -vf $xorgsrc/usr/X11R6/$atilib/modules/drivers/fglrx_drv.so $xorg_libdir/modules/drivers/ # common # + mkdir -p $root$datadir/icons + mkdir -p $root$mandir/man8 mv -vf common/etc/ati/* $root$sysconfdir/ mv -vf common/usr/include/GL/* $root$includedir/GL/ mv -vf common/usr/share/icons/* $root$datadir/icons/ diff --git a/wip/fglrx/fglrx.desc b/wip/fglrx/fglrx.desc index 97c6a9a84..134f3d39f 100644 --- a/wip/fglrx/fglrx.desc +++ b/wip/fglrx/fglrx.desc @@ -2,7 +2,7 @@ [COPY] This copyright note is auto-generated by ./scripts/Create-CopyPatch. [COPY] [COPY] Filename: package/.../fglrx/fglrx.desc -[COPY] Copyright (C) 2006 The OpenSDE Project +[COPY] Copyright (C) 2006 - 2012 The OpenSDE Project [COPY] [COPY] More information can be found in the files COPYING and README. [COPY] @@ -30,8 +30,8 @@ [L] Free-to-use [S] Stable -[V] 8.32.5 -[P] 0 -----5---9 800.000 +[V] 12.3 +[P] X -----5---9 800.000 -[D] 3418021199 ati-driver-installer-8.32.5-x86.x86_64.run http://www2.ati.com/drivers/linux/ +[D] 2398767492 amd-driver-installer-12-3-x86.x86_64.run http://www2.ati.com/drivers/linux/ diff --git a/wip/fglrx/install/usr_include_amd_amdxvba.h.txt b/wip/fglrx/install/usr_include_amd_amdxvba.h.txt new file mode 100644 index 000000000..7c28ba388 --- /dev/null +++ b/wip/fglrx/install/usr_include_amd_amdxvba.h.txt @@ -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 diff --git a/wip/fglrx/xf86-video-fglrx-12.2-TS_USEDFPU_fix.patch b/wip/fglrx/xf86-video-fglrx-12.2-TS_USEDFPU_fix.patch new file mode 100644 index 000000000..77ad8042e --- /dev/null +++ b/wip/fglrx/xf86-video-fglrx-12.2-TS_USEDFPU_fix.patch @@ -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 +--- + 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