1 /* 2 * Copyright � 2011 Intel Corporation 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the 6 * "Software"), to deal in the Software without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sub license, and/or sell copies of the Software, and to 9 * permit persons to whom the Software is furnished to do so, subject to 10 * the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the 13 * next paragraph) shall be included in all copies or substantial portions 14 * of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 20 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 * 24 * Authors: 25 * Xiang Haihao <haihao.xiang@intel.com> 26 * 27 */ 28 29 #ifndef _GEN7_MFD_H_ 30 #define _GEN7_MFD_H_ 31 32 #include <xf86drm.h> 33 #include <drm.h> 34 #include <i915_drm.h> 35 #include <intel_bufmgr.h> 36 #include "i965_decoder.h" 37 38 #define GEN7_VC1_I_PICTURE 0 39 #define GEN7_VC1_P_PICTURE 1 40 #define GEN7_VC1_B_PICTURE 2 41 #define GEN7_VC1_BI_PICTURE 3 42 #define GEN7_VC1_SKIPPED_PICTURE 4 43 44 #define GEN7_JPEG_ROTATION_0 0 45 #define GEN7_JPEG_ROTATION_90 1 46 #define GEN7_JPEG_ROTATION_270 2 47 #define GEN7_JPEG_ROTATION_180 3 48 49 #define GEN7_YUV400 0 50 #define GEN7_YUV420 1 51 #define GEN7_YUV422H_2Y 2 52 #define GEN7_YUV444 3 53 #define GEN7_YUV411 4 54 #define GEN7_YUV422V_2Y 5 55 #define GEN7_YUV422H_4Y 6 56 #define GEN7_YUV422V_4Y 7 57 58 struct gen7_vc1_surface { 59 dri_bo *dmv_top; 60 dri_bo *dmv_bottom; 61 int frame_coding_mode; 62 int picture_type_top; 63 int picture_type_bottom; 64 int range_reduction_frame; 65 int reference_distance; 66 int intensity_compensation_top; 67 int intensity_compensation_bottom; 68 int luma_scale; 69 int luma_scale_top[2]; 70 int luma_scale_bottom[2]; 71 int luma_shift; 72 int luma_shift_top[2]; 73 int luma_shift_bottom[2]; 74 }; 75 76 struct hw_context; 77 78 struct gen7_mfd_context { 79 struct hw_context base; 80 81 union { 82 VAIQMatrixBufferMPEG2 mpeg2; 83 VAIQMatrixBufferH264 h264; /* flat scaling lists (default) */ 84 } iq_matrix; 85 86 GenFrameStoreContext fs_ctx; 87 GenFrameStore reference_surface[MAX_GEN_REFERENCE_FRAMES]; 88 GenBuffer post_deblocking_output; 89 GenBuffer pre_deblocking_output; 90 GenBuffer intra_row_store_scratch_buffer; 91 GenBuffer deblocking_filter_row_store_scratch_buffer; 92 GenBuffer bsd_mpc_row_store_scratch_buffer; 93 GenBuffer mpr_row_store_scratch_buffer; 94 GenBuffer bitplane_read_buffer; 95 GenBuffer segmentation_buffer; 96 97 VASurfaceID jpeg_wa_surface_id; 98 struct object_surface *jpeg_wa_surface_object; 99 dri_bo *jpeg_wa_slice_data_bo; 100 101 int wa_mpeg2_slice_vertical_position; 102 103 void *driver_context; 104 }; 105 106 #endif /* _GEN7_MFD_H_ */ 107