2
* Common header file for both SetHWScoreboard and SetHWScoreboard_MBAFF kernels
3
* Copyright © <2010>, Intel Corporation.
5
* Permission is hereby granted, free of charge, to any person obtaining a
6
* copy of this software and associated documentation files (the
7
* "Software"), to deal in the Software without restriction, including
8
* without limitation the rights to use, copy, modify, merge, publish,
9
* distribute, sub license, and/or sell copies of the Software, and to
10
* permit persons to whom the Software is furnished to do so, subject to
11
* the following conditions:
13
* The above copyright notice and this permission notice (including the
14
* next paragraph) shall be included in all copies or substantial portions
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
21
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
* This file was originally licensed under the following license
27
* Licensed under the Apache License, Version 2.0 (the "License");
28
* you may not use this file except in compliance with the License.
29
* You may obtain a copy of the License at
31
* http://www.apache.org/licenses/LICENSE-2.0
33
* Unless required by applicable law or agreed to in writing, software
34
* distributed under the License is distributed on an "AS IS" BASIS,
35
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
36
* See the License for the specific language governing permissions and
37
* limitations under the License.
40
#if !defined(__SETHWSCOREBOARD_HEADER__) // Make sure this file is only included once
41
#define __SETHWSCOREBOARD_HEADER__
43
// Module name: SetHWScoreboard_header.inc
45
// Common header file for both SetHWScoreboard and SetHWScoreboard_MBAFF kernels
48
#define BI_CMD_BUF 0 // Binding table index for command buffer
52
// For use by setting HW scoreboard kernel for MBAFF picture
55
#define TOP_FM_MASK1_D r1.0 // Bit mask for first half of top frame MB SB mask
56
#define TOP_FM_MASK1_B r1.0 // Bit mask for first half of top frame MB SB mask
57
#define TOP_FM_MASK2_D r1.1 // Bit mask for second half of top frame MB SB mask
58
#define TOP_FM_MASK2_B r1.4 // Bit mask for second half of top frame MB SB mask
59
#define BOT_FM_MASK1_D r1.2 // Bit mask for first half of bottom frame MB SB mask
60
#define BOT_FM_MASK1_B r1.8 // Bit mask for first half of bottom frame MB SB mask
61
#define BOT_FM_MASK2_D r1.3 // Bit mask for second half of bottom frame MB SB mask
62
#define BOT_FM_MASK2_B r1.12 // Bit mask for second half of bottom frame MB SB mask
63
#define TOP_FD_MASK1_D r1.4 // Bit mask for first half of top field MB SB mask
64
#define TOP_FD_MASK1_B r1.16 // Bit mask for first half of top field MB SB mask
65
#define TOP_FD_MASK2_D r1.5 // Bit mask for second half of top field MB SB mask
66
#define TOP_FD_MASK2_B r1.20 // Bit mask for second half of top field MB SB mask
67
#define BOT_FD_MASK1_D r1.6 // Bit mask for first half of bottom field MB SB mask
68
#define BOT_FD_MASK1_B r1.24 // Bit mask for first half of bottom field MB SB mask
69
#define BOT_FD_MASK2_D r1.7 // Bit mask for second half of bottom field MB SB mask
70
#define BOT_FD_MASK2_B r1.28 // Bit mask for second half of bottom field MB SB mask
72
// For use by setting HW scoreboard kernel for non-MBAFF picture
73
#define MB_SHIFT_MASK_W r1.0 // :w type. Shift values for two parts of the MB SB mask
74
#define MB_SHIFT_MASK_B r1.0 // :b type. Shift values for two parts of the MB SB mask
80
#define INLINE_REG_OFFSET 1
83
#define StartingMB INLINE_REG.0 // :uw type. Starting MB number
84
#define TotalMB INLINE_REG.1 // :uw type. Total number of MB to be processed
85
#define PicWidthMB INLINE_REG.2 // :uw type. Picture width in MB
89
// Temporary variables
91
#define RemainderMB r3.0 // :uw type. Remainder of MB (<16) to be processed
93
#define TEMP_FD_X_W r3.2 // :w type. Temporary variable for field MB X origin in MBAFF picture
94
#define TEMP_FD_X_B r3.4 // :b type. Temporary variable for field MB X origin in MBAFF picture
95
#define TEMP_FD_Y_W r3.3 // :w type. Temporary variable for field MB Y origin in MBAFF picture
96
#define TEMP_FD_Y_B r3.6 // :b type. Temporary variable for field MB Y origin in MBAFF picture
98
#define TEMP_INTRA_FLAG_W r3.4 // :uw type. Temporary intra available flag
100
#define MB_MASK_D r3.4 // :ud type. Bit masks for MBAFF MB
101
#define MB_MASK_B r3.16 // :ub type. Bit masks for MBAFF MB
103
#define MRF_READ_HEADER_SRC r63
105
// MEDIA_OBJECT_EX Command map
107
// In DW1 of each MEDIA_OBJECT_EX command (VFE DWORD)
108
#define CUR_X 0 // Byte 0
109
#define CUR_Y 0 // Byte 2
111
// In DW2 of each MEDIA_OBJECT_EX command
112
#define USE_SCOREBOARD BIT21
114
// In DW4 of each MEDIA_OBJECT_EX command
116
#define IS_INTRA_MB BIT13
117
#define IS_FIELD_MB BIT14
118
#define IS_INTRA8X8 BIT15
119
#define IS_BOT_FD BIT24
121
// In DW7 of each MEDIA_OBJECT_EX command
128
#define CMD_BUFFER_REG_OFF 4
129
.declare CMD_BUFFER_D Base=GRF(4) ElementSize=4 SrcRegion=REGION(8,1) Type=ud // Command buffer (32 GRF)
130
.declare CMD_BUFFER_W Base=GRF(4) ElementSize=2 SrcRegion=REGION(16,1) Type=uw // Command buffer (32 GRF)
131
.declare CMD_BUFFER_B Base=GRF(4) ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Command buffer (32 GRF)
133
#define MRF_READ_HEADER m1
134
#define MRF_READ_HEADER0 m1
135
#define MRF_READ_HEADER1 m2
136
#define MRF_READ_HEADER2 m3
137
#define MRF_READ_HEADER3 m4
139
#define MRF_INTER_WRITE_HEADER m5
140
#define MRF_INTER_WRITE_DATA0 m6
141
#define MRF_INTER_WRITE_DATA1 m7
143
#define MRF_WRITE_HEADER m11
144
#define MRF_INTRA_WRITE_HEADER m11
146
#define MRF_CMD_BUF_REG_OFF 12
147
.declare MRF_CMD_BUF_D Base=m12 ElementSize=4 SrcRegion=REGION(8,1) Type=ud // Command buffer stored in MRF
148
.declare MRF_CMD_BUF_W Base=m12 ElementSize=2 SrcRegion=REGION(16,1) Type=uw // Command buffer stored in MRF
149
.declare MRF_CMD_BUF_B Base=m12 ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Command buffer stored in MRF
151
#define BI_CMD_BUFFER 0
153
#define OWBRMSGDSC_SC 0x02088000 // OWORD Block Read Message Descriptor, reading from sampler cache = A.
154
#define OWBWMSGDSC 0x02080000 // OWORD Block Write Message Descriptor
156
#define OWORD_1 0x000
157
#define OWORD_2 0x200
158
#define OWORD_4 0x300
159
#define OWORD_8 0x400
161
// End of SETHWSCOREBOARD_HEADER
163
#endif // !defined(__SETHWSCOREBOARD_HEADER__)