Skip to content

Commit 6505d6f

Browse files
Veerabadhran Gopalakrishnanalexdeucher
authored andcommitted
amdgpu/nv.c - Optimize code for video codec support structure
Optimized the code for codec info structure initialization Signed-off-by: Veerabadhran Gopalakrishnan <[email protected]> Reviewed-by: James Zhu <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent ea272ce commit 6505d6f

File tree

3 files changed

+56
-350
lines changed

3 files changed

+56
-350
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,13 @@ struct amdgpu_video_codec_info {
619619
u32 max_level;
620620
};
621621

622+
#define codec_info_build(type, width, height, level) \
623+
.codec_type = type,\
624+
.max_width = width,\
625+
.max_height = height,\
626+
.max_pixels_per_frame = height * width,\
627+
.max_level = level,
628+
622629
struct amdgpu_video_codecs {
623630
const u32 codec_count;
624631
const struct amdgpu_video_codec_info *codec_array;

drivers/gpu/drm/amd/amdgpu/nv.c

Lines changed: 27 additions & 196 deletions
Original file line numberDiff line numberDiff line change
@@ -64,32 +64,13 @@
6464
#include "smuio_v11_0.h"
6565
#include "smuio_v11_0_6.h"
6666

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-
7467
static const struct amd_ip_funcs nv_common_ip_funcs;
7568

7669
/* Navi */
7770
static const struct amdgpu_video_codec_info nv_video_codecs_encode_array[] =
7871
{
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)},
9374
};
9475

9576
static const struct amdgpu_video_codecs nv_video_codecs_encode =
@@ -101,55 +82,13 @@ static const struct amdgpu_video_codecs nv_video_codecs_encode =
10182
/* Navi1x */
10283
static const struct amdgpu_video_codec_info nv_video_codecs_decode_array[] =
10384
{
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)},
15392
};
15493

15594
static const struct amdgpu_video_codecs nv_video_codecs_decode =
@@ -161,62 +100,14 @@ static const struct amdgpu_video_codecs nv_video_codecs_decode =
161100
/* Sienna Cichlid */
162101
static const struct amdgpu_video_codec_info sc_video_codecs_decode_array[] =
163102
{
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)},
220111
};
221112

222113
static const struct amdgpu_video_codecs sc_video_codecs_decode =
@@ -228,80 +119,20 @@ static const struct amdgpu_video_codecs sc_video_codecs_decode =
228119
/* SRIOV Sienna Cichlid, not const since data is controlled by host */
229120
static struct amdgpu_video_codec_info sriov_sc_video_codecs_encode_array[] =
230121
{
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)},
245124
};
246125

247126
static struct amdgpu_video_codec_info sriov_sc_video_codecs_decode_array[] =
248127
{
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)},
305136
};
306137

307138
static struct amdgpu_video_codecs sriov_sc_video_codecs_encode =

0 commit comments

Comments
 (0)