[igt-dev] [PATCH i-g-t 5/5] RFC tests/i915/kms_frontbuffer_tracking: xe only supports MMAP_WC, BLT, RENDER
Joshi, Kunal1
kunal1.joshi at intel.com
Fri Jun 9 05:47:19 UTC 2023
Hello Bhanu,
On 6/8/2023 5:16 PM, Modem, Bhanuprakash wrote:
>
>
> On Tue-06-06-2023 01:32 pm, Kunal Joshi wrote:
>> xe only supports MMAP_WC, BLT and RENDER methods,
>>
>> Open :- does draw method give guarantee for fb to be rendered
>> on return, if not how to assure, ex for RENDER we have intel_bb_sync
>>
>> Signed-off-by: Kunal Joshi <kunal1.joshi at intel.com>
>>
>> +static bool supported_xe_draw_method(enum igt_draw_method method)
>> +{
>> + return method == IGT_DRAW_MMAP_WC || method == IGT_DRAW_BLT
>> + || method == IGT_DRAW_RENDER;
>> +}
>
> Please use igt_draw_supports_method() instead of writing your own
> wrapper.
Sure bhanu, thanks for pointing it out, will float next revision with
this change
>
>> +
>> static drmModeModeInfo *get_connector_smallest_mode(igt_output_t
>> *output)
>> {
>> drmModeConnector *c = output->config.connector;
>> @@ -1307,10 +1317,12 @@ static void init_crcs(enum pixel_format
>> format, enum tiling_type tiling,
>> for (r = 0; r < pattern->n_rects; r++)
>> for (r_ = 0; r_ <= r; r_++)
>> draw_rect_igt_fb(pattern, &tmp_fbs[r],
>> - IGT_DRAW_PWRITE, r_);
>> + is_xe_device(drm.fd)?IGT_DRAW_RENDER:IGT_DRAW_PWRITE,
>> + r_);
>> } else {
>> for (r = 0; r < pattern->n_rects; r++)
>> - draw_rect_igt_fb(pattern, &tmp_fbs[r], IGT_DRAW_PWRITE,
>> + draw_rect_igt_fb(pattern, &tmp_fbs[r],
>> + is_xe_device(drm.fd)?IGT_DRAW_RENDER:IGT_DRAW_PWRITE,
>> r);
>> }
>> @@ -3180,6 +3192,9 @@ static void basic_subtest(const struct
>> test_mode *t)
>> fb1 = params->primary.fb;
>> for (r = 0, method = 0; method < IGT_DRAW_METHOD_COUNT;
>> method++) {
>> + if (is_xe_device(drm.fd) && !supported_xe_draw_method(method))
>> + continue;
>> +
>> if (method == IGT_DRAW_MMAP_GTT &&
>> !gem_has_mappable_ggtt(drm.fd))
>> continue;
>> @@ -3413,29 +3428,30 @@ static const char *tiling_str(enum
>> tiling_type tiling)
>> }
>> #define TEST_MODE_ITER_BEGIN(t) \
>> - t.format = FORMAT_DEFAULT; \
>> - t.flip = FLIP_PAGEFLIP; \
>> - t.tiling = opt.tiling;; \
>> - for (t.feature = 0; t.feature < FEATURE_COUNT; t.feature++)
>> { \
>> - for (t.pipes = 0; t.pipes < PIPE_COUNT; t.pipes++) { \
>> - for (t.screen = 0; t.screen < SCREEN_COUNT; t.screen++) { \
>> - for (t.plane = 0; t.plane < PLANE_COUNT; t.plane++) { \
>> - for (t.fbs = 0; t.fbs < FBS_COUNT; t.fbs++) { \
>> - for (t.method = 0; t.method < IGT_DRAW_METHOD_COUNT; t.method++)
>> { \
>> - if (t.pipes == PIPE_SINGLE && t.screen == SCREEN_SCND) \
>> - continue; \
>> - if (t.screen == SCREEN_OFFSCREEN && t.plane != PLANE_PRI) \
>> - continue; \
>> - if (!opt.show_hidden && t.pipes == PIPE_DUAL && \
>> - t.screen == SCREEN_OFFSCREEN) \
>> - continue; \
>> - if (!opt.show_hidden && t.feature == FEATURE_NONE) \
>> - continue; \
>> - if (!opt.show_hidden && t.fbs == FBS_SHARED && \
>> - (t.plane == PLANE_CUR || t.plane == PLANE_SPR)) \
>> + t.format =
>> FORMAT_DEFAULT; \
>> + t.flip = FLIP_PAGEFLIP; \
>> + t.tiling =
>> opt.tiling;; \
>> + for (t.feature = 0; t.feature < FEATURE_COUNT; t.feature++)
>> { \
>> + for (t.pipes = 0; t.pipes < PIPE_COUNT; t.pipes++)
>> { \
>> + for (t.screen = 0; t.screen < SCREEN_COUNT; t.screen++)
>> { \
>> + for (t.plane = 0; t.plane < PLANE_COUNT; t.plane++)
>> { \
>> + for (t.fbs = 0; t.fbs < FBS_COUNT; t.fbs++)
>> { \
>> + for (t.method = 0; t.method < IGT_DRAW_METHOD_COUNT;
>> t.method++) { \
>> + if (is_xe_device(drm.fd) &&
>> !supported_xe_draw_method(t.method)) \
>> + continue;
>
> Changes in this macro are irrelevant except above 2 lines.
Bhanu for the other line i have placed the \ at the end of the line
So it looks nice, let me know if its not required
>
> - Bhanu
> \
>> + if (t.pipes == PIPE_SINGLE && t.screen ==
>> SCREEN_SCND) \
>> + continue; \
>> + if (t.screen == SCREEN_OFFSCREEN && t.plane !=
>> PLANE_PRI) \
>> + continue; \
>> + if (!opt.show_hidden && t.pipes == PIPE_DUAL
>> && \
>> + t.screen ==
>> SCREEN_OFFSCREEN) \
>> + continue; \
>> + if (!opt.show_hidden && t.feature ==
>> FEATURE_NONE) \
>> + continue; \
>> + if (!opt.show_hidden && t.fbs == FBS_SHARED
>> && \
>> + (t.plane == PLANE_CUR || t.plane ==
>> PLANE_SPR)) \
>> continue;
>> -
>> #define TEST_MODE_ITER_END } } } } } }
>> struct option long_options[] = {
Thanks and Regards
Kunal Joshi
More information about the igt-dev
mailing list