64
64
#include "smuio_v11_0.h"
65
65
#include "smuio_v11_0_6.h"
66
66
67
- #define codec_info_build (type , width , height , level ) \
68
- .codec_type = type,\
69
- .max_width = width,\
70
- .max_height = height,\
71
- .max_pixels_per_frame = height * width,\
72
- .max_level = level,
73
-
74
67
static const struct amd_ip_funcs nv_common_ip_funcs ;
75
68
76
69
/* Navi */
77
70
static const struct amdgpu_video_codec_info nv_video_codecs_encode_array [] =
78
71
{
79
- {
80
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC ,
81
- .max_width = 4096 ,
82
- .max_height = 2304 ,
83
- .max_pixels_per_frame = 4096 * 2304 ,
84
- .max_level = 0 ,
85
- },
86
- {
87
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC ,
88
- .max_width = 4096 ,
89
- .max_height = 2304 ,
90
- .max_pixels_per_frame = 4096 * 2304 ,
91
- .max_level = 0 ,
92
- },
72
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC , 4096 , 2304 , 0 )},
73
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC , 4096 , 2304 , 0 )},
93
74
};
94
75
95
76
static const struct amdgpu_video_codecs nv_video_codecs_encode =
@@ -101,55 +82,13 @@ static const struct amdgpu_video_codecs nv_video_codecs_encode =
101
82
/* Navi1x */
102
83
static const struct amdgpu_video_codec_info nv_video_codecs_decode_array [] =
103
84
{
104
- {
105
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 ,
106
- .max_width = 4096 ,
107
- .max_height = 4096 ,
108
- .max_pixels_per_frame = 4096 * 4096 ,
109
- .max_level = 3 ,
110
- },
111
- {
112
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 ,
113
- .max_width = 4096 ,
114
- .max_height = 4096 ,
115
- .max_pixels_per_frame = 4096 * 4096 ,
116
- .max_level = 5 ,
117
- },
118
- {
119
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC ,
120
- .max_width = 4096 ,
121
- .max_height = 4096 ,
122
- .max_pixels_per_frame = 4096 * 4096 ,
123
- .max_level = 52 ,
124
- },
125
- {
126
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 ,
127
- .max_width = 4096 ,
128
- .max_height = 4096 ,
129
- .max_pixels_per_frame = 4096 * 4096 ,
130
- .max_level = 4 ,
131
- },
132
- {
133
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC ,
134
- .max_width = 8192 ,
135
- .max_height = 4352 ,
136
- .max_pixels_per_frame = 8192 * 4352 ,
137
- .max_level = 186 ,
138
- },
139
- {
140
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG ,
141
- .max_width = 4096 ,
142
- .max_height = 4096 ,
143
- .max_pixels_per_frame = 4096 * 4096 ,
144
- .max_level = 0 ,
145
- },
146
- {
147
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 ,
148
- .max_width = 8192 ,
149
- .max_height = 4352 ,
150
- .max_pixels_per_frame = 8192 * 4352 ,
151
- .max_level = 0 ,
152
- },
85
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 , 4096 , 4906 , 3 )},
86
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 , 4096 , 4906 , 5 )},
87
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC , 4096 , 4906 , 52 )},
88
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 , 4096 , 4906 , 4 )},
89
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC , 8192 , 4352 , 186 )},
90
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG , 4096 , 4096 , 0 )},
91
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 , 8192 , 4352 , 0 )},
153
92
};
154
93
155
94
static const struct amdgpu_video_codecs nv_video_codecs_decode =
@@ -161,62 +100,14 @@ static const struct amdgpu_video_codecs nv_video_codecs_decode =
161
100
/* Sienna Cichlid */
162
101
static const struct amdgpu_video_codec_info sc_video_codecs_decode_array [] =
163
102
{
164
- {
165
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 ,
166
- .max_width = 4096 ,
167
- .max_height = 4096 ,
168
- .max_pixels_per_frame = 4096 * 4096 ,
169
- .max_level = 3 ,
170
- },
171
- {
172
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 ,
173
- .max_width = 4096 ,
174
- .max_height = 4096 ,
175
- .max_pixels_per_frame = 4096 * 4096 ,
176
- .max_level = 5 ,
177
- },
178
- {
179
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC ,
180
- .max_width = 4096 ,
181
- .max_height = 4096 ,
182
- .max_pixels_per_frame = 4096 * 4096 ,
183
- .max_level = 52 ,
184
- },
185
- {
186
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 ,
187
- .max_width = 4096 ,
188
- .max_height = 4096 ,
189
- .max_pixels_per_frame = 4096 * 4096 ,
190
- .max_level = 4 ,
191
- },
192
- {
193
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC ,
194
- .max_width = 8192 ,
195
- .max_height = 4352 ,
196
- .max_pixels_per_frame = 8192 * 4352 ,
197
- .max_level = 186 ,
198
- },
199
- {
200
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG ,
201
- .max_width = 4096 ,
202
- .max_height = 4096 ,
203
- .max_pixels_per_frame = 4096 * 4096 ,
204
- .max_level = 0 ,
205
- },
206
- {
207
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 ,
208
- .max_width = 8192 ,
209
- .max_height = 4352 ,
210
- .max_pixels_per_frame = 8192 * 4352 ,
211
- .max_level = 0 ,
212
- },
213
- {
214
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1 ,
215
- .max_width = 8192 ,
216
- .max_height = 4352 ,
217
- .max_pixels_per_frame = 8192 * 4352 ,
218
- .max_level = 0 ,
219
- },
103
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 , 4096 , 4906 , 3 )},
104
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 , 4096 , 4906 , 5 )},
105
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC , 4096 , 4906 , 52 )},
106
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 , 4096 , 4906 , 4 )},
107
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC , 8192 , 4352 , 186 )},
108
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG , 4096 , 4096 , 0 )},
109
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 , 8192 , 4352 , 0 )},
110
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1 , 8192 , 4352 , 0 )},
220
111
};
221
112
222
113
static const struct amdgpu_video_codecs sc_video_codecs_decode =
@@ -228,80 +119,20 @@ static const struct amdgpu_video_codecs sc_video_codecs_decode =
228
119
/* SRIOV Sienna Cichlid, not const since data is controlled by host */
229
120
static struct amdgpu_video_codec_info sriov_sc_video_codecs_encode_array [] =
230
121
{
231
- {
232
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC ,
233
- .max_width = 4096 ,
234
- .max_height = 2304 ,
235
- .max_pixels_per_frame = 4096 * 2304 ,
236
- .max_level = 0 ,
237
- },
238
- {
239
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC ,
240
- .max_width = 4096 ,
241
- .max_height = 2304 ,
242
- .max_pixels_per_frame = 4096 * 2304 ,
243
- .max_level = 0 ,
244
- },
122
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC , 4096 , 2304 , 0 )},
123
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC , 4096 , 2304 , 0 )},
245
124
};
246
125
247
126
static struct amdgpu_video_codec_info sriov_sc_video_codecs_decode_array [] =
248
127
{
249
- {
250
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 ,
251
- .max_width = 4096 ,
252
- .max_height = 4096 ,
253
- .max_pixels_per_frame = 4096 * 4096 ,
254
- .max_level = 3 ,
255
- },
256
- {
257
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 ,
258
- .max_width = 4096 ,
259
- .max_height = 4096 ,
260
- .max_pixels_per_frame = 4096 * 4096 ,
261
- .max_level = 5 ,
262
- },
263
- {
264
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC ,
265
- .max_width = 4096 ,
266
- .max_height = 4096 ,
267
- .max_pixels_per_frame = 4096 * 4096 ,
268
- .max_level = 52 ,
269
- },
270
- {
271
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 ,
272
- .max_width = 4096 ,
273
- .max_height = 4096 ,
274
- .max_pixels_per_frame = 4096 * 4096 ,
275
- .max_level = 4 ,
276
- },
277
- {
278
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC ,
279
- .max_width = 8192 ,
280
- .max_height = 4352 ,
281
- .max_pixels_per_frame = 8192 * 4352 ,
282
- .max_level = 186 ,
283
- },
284
- {
285
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG ,
286
- .max_width = 4096 ,
287
- .max_height = 4096 ,
288
- .max_pixels_per_frame = 4096 * 4096 ,
289
- .max_level = 0 ,
290
- },
291
- {
292
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 ,
293
- .max_width = 8192 ,
294
- .max_height = 4352 ,
295
- .max_pixels_per_frame = 8192 * 4352 ,
296
- .max_level = 0 ,
297
- },
298
- {
299
- .codec_type = AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1 ,
300
- .max_width = 8192 ,
301
- .max_height = 4352 ,
302
- .max_pixels_per_frame = 8192 * 4352 ,
303
- .max_level = 0 ,
304
- },
128
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 , 4096 , 4906 , 3 )},
129
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 , 4096 , 4906 , 5 )},
130
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC , 4096 , 4906 , 52 )},
131
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 , 4096 , 4906 , 4 )},
132
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC , 8192 , 4352 , 186 )},
133
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG , 4096 , 4096 , 0 )},
134
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 , 8192 , 4352 , 0 )},
135
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1 , 8192 , 4352 , 0 )},
305
136
};
306
137
307
138
static struct amdgpu_video_codecs sriov_sc_video_codecs_encode =
@@ -333,6 +164,19 @@ static const struct amdgpu_video_codecs bg_video_codecs_encode = {
333
164
.codec_array = NULL ,
334
165
};
335
166
167
+ /* Yellow Carp*/
168
+ static const struct amdgpu_video_codec_info yc_video_codecs_decode_array [] = {
169
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC , 4096 , 4906 , 52 )},
170
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC , 8192 , 4352 , 186 )},
171
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 , 8192 , 4352 , 0 )},
172
+ {codec_info_build (AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG , 4096 , 4096 , 0 )},
173
+ };
174
+
175
+ static const struct amdgpu_video_codecs yc_video_codecs_decode = {
176
+ .codec_count = ARRAY_SIZE (yc_video_codecs_decode_array ),
177
+ .codec_array = yc_video_codecs_decode_array ,
178
+ };
179
+
336
180
static int nv_query_video_codecs (struct amdgpu_device * adev , bool encode ,
337
181
const struct amdgpu_video_codecs * * codecs )
338
182
{
@@ -353,12 +197,17 @@ static int nv_query_video_codecs(struct amdgpu_device *adev, bool encode,
353
197
case CHIP_NAVY_FLOUNDER :
354
198
case CHIP_DIMGREY_CAVEFISH :
355
199
case CHIP_VANGOGH :
356
- case CHIP_YELLOW_CARP :
357
200
if (encode )
358
201
* codecs = & nv_video_codecs_encode ;
359
202
else
360
203
* codecs = & sc_video_codecs_decode ;
361
204
return 0 ;
205
+ case CHIP_YELLOW_CARP :
206
+ if (encode )
207
+ * codecs = & nv_video_codecs_encode ;
208
+ else
209
+ * codecs = & yc_video_codecs_decode ;
210
+ return 0 ;
362
211
case CHIP_BEIGE_GOBY :
363
212
if (encode )
364
213
* codecs = & bg_video_codecs_encode ;
@@ -1387,7 +1236,10 @@ static int nv_common_early_init(void *handle)
1387
1236
AMD_PG_SUPPORT_VCN |
1388
1237
AMD_PG_SUPPORT_VCN_DPG |
1389
1238
AMD_PG_SUPPORT_JPEG ;
1390
- adev -> external_rev_id = adev -> rev_id + 0x01 ;
1239
+ if (adev -> pdev -> device == 0x1681 )
1240
+ adev -> external_rev_id = adev -> rev_id + 0x19 ;
1241
+ else
1242
+ adev -> external_rev_id = adev -> rev_id + 0x01 ;
1391
1243
break ;
1392
1244
default :
1393
1245
/* FIXME: not supported yet */
0 commit comments