lib/igt_kms: Convert properties to be more atomic-like.
v2 cover lib/igt_kms: Convert properties to be more atomic-like.
Instead of having to special case each property when it's added, I want to make sure that any test can add arbitrary properties without having to add too much code. Some of the members I want to expose directly, and I also add a way to set a blob as property for planes and pipes, which will be useful for the upcoming plane color management stuff.
Now with bugfixes!
Maarten Lankhorst (8):
tests: Stop looking at plane private members lib/igt_kms: Change output->pending_crtc_idx_mask to
output->pending_pipe
lib/igt_kms: Commit primary plane when a modeset is forced on a pipe lib/igt_kms: Rework connector properties to be more atomic, v2. lib/igt_kms: Rework plane properties to be more atomic, v2. lib/igt_kms: Rework pipe properties to be more atomic, v2. igt/kms_rotation_crc : Fix flip tests for sprite plane
tests: Rename kms_pipe_color to kms_color
lib/igt_kms.c | 587 +++++++++++++++-----------------
lib/igt_kms.h | 154 ++++-----
tests/Makefile.sources | 2 +-
tests/kms_atomic_interruptible.c | 20 +-
tests/kms_atomic_transition.c | 123 +++----
tests/kms_busy.c | 7 +-
tests/{kms_pipe_color.c => kms_color.c} | 4 +-
tests/kms_concurrent.c | 4 +-
tests/kms_crtc_background_color.c | 2 +-
tests/kms_cursor_legacy.c | 8 +-
tests/kms_fbc_crc.c | 3 +-
tests/kms_panel_fitting.c | 16 +-
tests/kms_plane_scaling.c | 14 +-
tests/kms_rmfb.c | 2 +-
tests/kms_rotation_crc.c | 37 +-
15 files changed, 463 insertions(+), 520 deletions(-)
rename tests/{kms_pipe_color.c => kms_color.c} (99%)Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 1/8 tests: Stop looking at plane private members
Most of these tests have no reason to look at those members, so try other ways of getting the information.
--- lib/igt_kms.h | 21 ++++++++ tests/kms_atomic_transition.c | 117 +++++++++++++++++++++--------------------- tests/kms_busy.c | 5 +- tests/kms_concurrent.c | 4 +- tests/kms_cursor_legacy.c | 6 +-- tests/kms_fbc_crc.c | 3 +- tests/kms_panel_fitting.c | 14 +---- tests/kms_plane_scaling.c | 14 +---- tests/kms_rmfb.c | 2 +- tests/kms_rotation_crc.c | 10 ---- 10 files changed, 93 insertions(+), 103 deletions(-)
lib/igt_kms.h +21 -0
@@ -556,6 +556,27 @@ static inline bool igt_output_is_connected(igt_output_t *output)igt_assert_lt (0 ,drmModeAtomicAddProperty (req, output->config.connector->connector_id,\ output->config.atomic_props_connector[prop], value)) +/* +* igt_pipe_refresh: +* @display: a pointer to an #igt_display_t structure +* @pipe: Pipe to refresh +* @force: Should be set to true if mode_blob is no longer considered +* to be valid, for example after doing an atomic commit during fork or closing display fd. +* +* Requests the pipe to be part of the state on next update. +* This is useful when state may have been out of sync after +* a fork, or we just want to be sure the pipe is included +* in the next commit. + */ +static inline void +igt_pipe_refresh (igt_display_t *display,enum pipe pipe,bool force) +{ +if (force) + display->pipes[pipe].mode_blob =0 ; + + display->pipes[pipe].mode_changed = true; +} +void igt_enable_connectors (void );void igt_reset_connectors (void );
tests/kms_atomic_transition.c +59 -58
254 lines not on this page · raw message
tests/kms_busy.c +4 -1
@@ -146,7 +146,10 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,if (modeset) {igt_set_module_param_int ("enable_hangcheck" ,1 ); - dpy->pipes[pipe].mode_blob =0 ; + +/* Clear old mode blob. */ +igt_pipe_refresh (dpy, pipe, true); +igt_output_set_pipe (output, pipe);igt_display_commit2 (dpy,COMMIT_ATOMIC ); }
tests/kms_concurrent.c +2 -2
@@ -91,7 +91,7 @@ static void test_fini(data_t *data, enum pipe pipe, int n_planes, {int i; - data->display.pipes[pipe].mode_blob =0 ; +igt_pipe_refresh (&data->display, pipe, true);for (i =0 ; i < n_planes; i++) {igt_plane_t *plane = data->plane[i];
@@ -292,7 +292,7 @@ test_resolution_with_output(data_t *data, enum pipe pipe, igt_output_t *output) i =0 ;while (i < iterations || loop_forever) { - data->display.pipes[pipe].mode_blob =0 ; +igt_pipe_refresh (&data->display, pipe, true); mode_hi =igt_output_get_mode (output); mode_lo =get_lowres_mode (data, mode_hi, output);
tests/kms_cursor_legacy.c +3 -3
@@ -784,7 +784,7 @@ static bool skip_on_unsupported_nonblocking_modeset(igt_display_t *display)/* Force the next state to update all crtc's, to synchronize with the nonblocking modeset. */ for_each_pipe (display, pipe) - display->pipes[pipe].mode_changed = true; +igt_pipe_refresh (display, pipe, false);return false; }
@@ -971,8 +971,8 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, boolif (modeset) {/* wait for pending modeset and page flip to complete, to prevent -EBUSY */ - display->pipes[pipe].mode_changed = true; - display->pipes[pipe2].mode_changed = true; +igt_pipe_refresh (display, pipe, false); +igt_pipe_refresh (display, pipe2, false);igt_display_commit2 (display,COMMIT_ATOMIC ); } }
tests/kms_fbc_crc.c +1 -2
@@ -461,8 +461,7 @@ static void reset_display(data_t *data)igt_pipe_t *pipe = &display->pipes[pipe_id];igt_plane_t *plane =igt_pipe_get_plane_type (pipe,DRM_PLANE_TYPE_PRIMARY ); -if (plane->fb) -igt_plane_set_fb (plane,NULL ); +igt_plane_set_fb (plane,NULL ); }for_each_connected_output (display, data->output)
tests/kms_panel_fitting.c +1 -13
@@ -84,19 +84,7 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe, }igt_plane_set_fb (plane, &data->fb1); -if (s ==COMMIT_LEGACY ) { -int ret; - ret =drmModeSetCrtc (data->drm_fd, - plane->pipe->crtc_id, - data->fb_id1, - plane->src_x, plane->src_y, - &output->id, -1 , - mode); -igt_assert_eq (ret,0 ); - }else { -igt_display_commit2 (display, s); - } +igt_display_commit2 (display, s); }static void cleanup_crtc (data_t *data,igt_output_t *output,igt_plane_t *plane)
tests/kms_plane_scaling.c +1 -13
@@ -93,19 +93,7 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe, }igt_plane_set_fb (plane, &data->fb1); -if (s ==COMMIT_LEGACY ) { -int ret; - ret =drmModeSetCrtc (data->drm_fd, - plane->pipe->crtc_id, - data->fb_id1, - plane->src_x, plane->src_y, - &output->id, -1 , - mode); -igt_assert_eq (ret,0 ); - }else { -igt_display_commit2 (display, s); - } +igt_display_commit2 (display, s); }static void cleanup_crtc (data_t *data,igt_output_t *output,igt_plane_t *plane)
tests/kms_rmfb.c +1 -1
@@ -102,7 +102,7 @@ test_rmfb(struct rmfb_data *data, igt_output_t *output, enum pipe pipe, bool reodrmSetClientCap (data->drm_fd,DRM_CLIENT_CAP_UNIVERSAL_PLANES ,1 );drmSetClientCap (data->drm_fd,DRM_CLIENT_CAP_ATOMIC ,1 ); - data->display.pipes[pipe].mode_blob =0 ; +igt_pipe_refresh (&data->display, pipe, true); }else {igt_remove_fb (data->drm_fd, &fb);igt_remove_fb (data->drm_fd, &argb_fb);
tests/kms_rotation_crc.c +0 -10
@@ -465,12 +465,6 @@ static void test_plane_rotation_ytiled_obj(data_t *data,igt_plane_set_fb (plane, &data->fb);igt_plane_set_size (plane, h, w); -if (commit <COMMIT_ATOMIC ) -drmModeObjectSetProperty (fd, plane->drm_plane->plane_id, -DRM_MODE_OBJECT_PLANE , - plane->rotation_property, - plane->rotation); - ret =igt_display_try_commit2 (display, commit);igt_output_set_pipe (output,PIPE_NONE );
@@ -562,10 +556,6 @@ static void test_plane_rotation_exhaust_fences(data_t *data,igt_plane_set_rotation (plane,IGT_ROTATION_90 );igt_plane_set_size (plane, h, w); -drmModeObjectSetProperty (fd, plane->drm_plane->plane_id, -DRM_MODE_OBJECT_PLANE , - plane->rotation_property, - plane->rotation);igt_display_commit2 (display, commit);if (ret) {igt_warn ("failed to commit hardware rotated fb: %i\n" , ret);
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 2/8 lib/igt_kms: Change output->pending_crtc_idx_mask to output->pending_pipe
In reply to Maarten Lankhorstigt_output_set_pipe with PIPE_ANY used to mean that we bind the output to any pipe, but this is now a deprecated alias for PIPE_NONE, and means the output will be unbound.
Because of this it's better to change output->pending_crtc_idx_mask to an enum pipe, because only a single choice may be given for a pipe.
--- lib/igt_kms.c | 46 ++++++++++++++++++++----------------------- lib/igt_kms.h | 2 +- tests/kms_atomic_transition.c | 4 ++-- tests/kms_busy.c | 2 +- tests/kms_cursor_legacy.c | 2 +- 5 files changed, 26 insertions(+), 30 deletions(-)
lib/igt_kms.c +21 -25
@@ -1561,9 +1561,10 @@ static void igt_display_log_shift(igt_display_t *display, int shift)static void igt_output_refresh (igt_output_t *output) {igt_display_t *display = output->display; -unsigned long crtc_idx_mask; +unsigned long crtc_idx_mask =0 ; - crtc_idx_mask = output->pending_crtc_idx_mask; +if (output->pending_pipe !=PIPE_NONE ) + crtc_idx_mask =1 << output->pending_pipe;kmstest_free_connector_config (&output->config);
@@ -1587,11 +1588,8 @@ static void igt_output_refresh(igt_output_t *output) BROADCAST_RGB_FULL); } -if (output->config.pipe ==PIPE_NONE ) -return ; -LOG (display,"%s: Selecting pipe %s\n" , output->name, -kmstest_pipe_name (output->config.pipe)); +kmstest_pipe_name (output->pending_pipe)); } static bool
@@ -1830,7 +1828,7 @@ void igt_display_init(igt_display_t *display, int drm_fd)* a pipe is set with igt_output_set_pipe(). */ output->force_reprobe = true; - output->pending_crtc_idx_mask =0 ; + output->pending_pipe =PIPE_NONE ; output->id = resources->connectors[i]; output->display = display;
@@ -1960,10 +1958,12 @@ static void igt_display_refresh(igt_display_t *display)for (i =0 ; i < display->n_outputs; i++) { output = &display->outputs[i]; -if (pipes_in_use & output->pending_crtc_idx_mask) - goto report_dup; +if (output->pending_pipe !=PIPE_NONE ) { +if (pipes_in_use & (1 << output->pending_pipe)) + goto report_dup; - pipes_in_use |= output->pending_crtc_idx_mask; + pipes_in_use |=1 << output->pending_pipe; + }if (output->force_reprobe)igt_output_refresh (output);
@@ -1975,11 +1975,11 @@ report_dup:for (; i >0 ; i--) {igt_output_t *b = &display->outputs[i -1 ]; -igt_assert_f (output->pending_crtc_idx_mask != - b->pending_crtc_idx_mask, +igt_assert_f (output->pending_pipe != + b->pending_pipe,"%s and %s are both trying to use pipe %s\n" ,igt_output_name (output),igt_output_name (b), -kmstest_pipe_name (ffs (b->pending_crtc_idx_mask) -1 )); +kmstest_pipe_name (output->pending_pipe)); } }
@@ -1988,7 +1988,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)igt_display_t *display = output->display;enum pipe pipe; -if (!output->pending_crtc_idx_mask) { +if (output->pending_pipe ==PIPE_NONE ) {/* * The user hasn't specified a pipe to use, return none. */
@@ -1998,7 +1998,7 @@ static igt_pipe_t *igt_output_get_driving_pipe(igt_output_t *output)* Otherwise, return the pending pipe (ie the pipe that should * drive this output after the commit() */ - pipe =ffs (output->pending_crtc_idx_mask) -1 ; + pipe = output->pending_pipe; }igt_assert (pipe >=0 && pipe < display->n_pipes);
@@ -2051,7 +2051,7 @@ static igt_output_t *igt_pipe_get_output(igt_pipe_t *pipe)for (i =0 ; i < display->n_outputs; i++) {igt_output_t *output = &display->outputs[i]; -if (output->pending_crtc_idx_mask == (1 << pipe->pipe)) +if (output->pending_pipe == pipe->pipe)return output; }
@@ -2860,22 +2860,18 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)igt_assert (output->name); -if (output->pending_crtc_idx_mask) { +if (output->pending_pipe !=PIPE_NONE ) { old_pipe =igt_output_get_driving_pipe (output); old_pipe->mode_changed = true; } -if (pipe ==PIPE_NONE ) { -LOG (display,"%s: set_pipe(any)\n" ,igt_output_name (output)); - output->pending_crtc_idx_mask =0 ; - }else { -LOG (display,"%s: set_pipe(%s)\n" ,igt_output_name (output), -kmstest_pipe_name (pipe)); - output->pending_crtc_idx_mask =1 << pipe; +LOG (display,"%s: set_pipe(%s)\n" ,igt_output_name (output), +kmstest_pipe_name (pipe)); + output->pending_pipe = pipe; +if (pipe !=PIPE_NONE ) display->pipes[pipe].mode_changed = true; - } output->config.pipe_changed = true;
lib/igt_kms.h +1 -1
@@ -361,7 +361,7 @@ typedef struct {struct kmstest_connector_config config;char *name;bool force_reprobe; -unsigned long pending_crtc_idx_mask; +enum pipe pending_pipe;bool use_override_mode;drmModeModeInfo override_mode; } igt_output_t;
tests/kms_atomic_transition.c +2 -2
@@ -644,7 +644,7 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct i event_mask |=1 << pipe;for_each_valid_output_on_pipe (display, pipe, output) { -if (output->pending_crtc_idx_mask) +if (output->pending_pipe !=PIPE_NONE )continue ; mode =igt_output_get_mode (output);
@@ -726,7 +726,7 @@ static void run_modeset_tests(igt_display_t *display, int howmany, bool nonblock pipe_crcs[i] =igt_pipe_crc_new (display->drm_fd, i,INTEL_PIPE_CRC_SOURCE_AUTO );for_each_valid_output_on_pipe (display, i, output) { -if (output->pending_crtc_idx_mask) +if (output->pending_pipe !=PIPE_NONE )continue ;igt_output_set_pipe (output, i);
tests/kms_busy.c +1 -1
@@ -41,7 +41,7 @@ set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)drmModeModeInfoPtr mode;igt_plane_t *primary; -if (output->pending_crtc_idx_mask) +if (output->pending_pipe !=PIPE_NONE )continue ;igt_output_set_pipe (output, pipe);
tests/kms_cursor_legacy.c +1 -1
@@ -155,7 +155,7 @@ static igt_output_t *set_fb_on_crtc(igt_display_t *display, enum pipe pipe, strudrmModeModeInfoPtr mode;igt_plane_t *primary; -if (output->pending_crtc_idx_mask) +if (output->pending_pipe !=PIPE_NONE )continue ;igt_output_set_pipe (output, pipe);
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 3/8 lib/igt_kms: Commit primary plane when a modeset is forced on a pipe
In reply to Maarten LankhorstIn between tests, some tests can do the following sequence:
(pipe C configured with FB)igt_plane_set_fb(primary (pipe C), NULL);
/* Clear rotation property first */igt_display_commit2(display, COMMIT_UNIVERSAL);
/* disable pipe */igt_display_commit2(display, COMMIT_LEGACY);
This would result in PIPE_C not being properly disabled, which will cause an error on the next mode. This can be seen when running the full kms_rotation_crc testcase without --subtest, it will fail on exhaust-fences because the bad-tiling subtest wasn't able to disable pipe C correctly.
Testcase: kms_rotation_crc
--- lib/igt_kms.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
lib/igt_kms.c +1 -1
@@ -2332,7 +2332,7 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,igt_assert (!primary->rotation_changed);if (!primary->fb_changed && !primary->position_changed && - !primary->size_changed) + !primary->size_changed && !primary->pipe->mode_changed)return 0 ; crtc_id = pipe->crtc_id;
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 4/8 lib/igt_kms: Rework connector properties to be more atomic, v2.
In reply to Maarten LankhorstIn the future I want to allow tests to commit more properties, but for this to work I have to fix all properties to work better with atomic commit. Instead of special casing each property make a bitmask for all property changed flags, and try to commit all properties.
Changs since v1:
- Mention which properties we set to what.
- Assert the property to be set is valid.
--- lib/igt_kms.c | 44 +++++++++++++++++++--------------------- lib/igt_kms.h | 35 +++++++++++++++++++------------- tests/kms_atomic_interruptible.c | 4 ++-- tests/kms_panel_fitting.c | 2 +- 4 files changed, 45 insertions(+), 40 deletions(-)
lib/igt_kms.c +21 -23
@@ -248,7 +248,7 @@ igt_atomic_fill_connector_props(igt_display_t *display, igt_output_t *output,if (strcmp (prop->name, conn_prop_names[j]) !=0 )continue ; - output->config.atomic_props_connector[j] = props->props[i]; + output->props[j] = props->props[i];break ; }
@@ -1834,7 +1834,7 @@ void igt_display_init(igt_display_t *display, int drm_fd)igt_output_refresh (output); - output->config.pipe_changed = true; +igt_output_set_prop_changed (output,IGT_CONNECTOR_CRTC_ID ); }drmModeFreePlaneResources (plane_resources);
@@ -2514,23 +2514,24 @@ static void igt_atomic_prepare_crtc_commit(igt_pipe_t *pipe_obj, drmModeAtomicRestatic void igt_atomic_prepare_connector_commit (igt_output_t *output,drmModeAtomicReq *req) { -struct kmstest_connector_config *config = &output->config; +int i; -if (config->connector_scaling_mode_changed) -igt_atomic_populate_connector_req (req, output,IGT_CONNECTOR_SCALING_MODE , config->connector_scaling_mode); +for (i =0 ; i <IGT_NUM_CONNECTOR_PROPS ; i++) { +if (!igt_output_is_prop_changed (output, i)) +continue ; -if (config->pipe_changed) { -uint32_t crtc_id =0 ; +/* it's an error to try an unsupported feature */ +igt_assert (output->props[i]); -if (output->config.pipe !=PIPE_NONE ) - crtc_id = output->config.crtc->crtc_id; +igt_debug ("%s: Setting property \"%s\" to 0x%" PRIx64"/%" PRIi64"\n" , +igt_output_name (output), igt_connector_prop_names[i], + output->values[i], output->values[i]); -igt_atomic_populate_connector_req (req, output,IGT_CONNECTOR_CRTC_ID , crtc_id); +igt_assert_lt (0 ,drmModeAtomicAddProperty (req, + output->config.connector->connector_id, + output->props[i], + output->values[i])); } -/* -* TODO: Add all other connector level properties here -*/ - }/*
@@ -2625,11 +2626,10 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)for (i =0 ; i < display->n_outputs; i++) {igt_output_t *output = &display->outputs[i]; -if (s !=COMMIT_UNIVERSAL ) - output->config.pipe_changed = false; -if (s ==COMMIT_ATOMIC ) - output->config.connector_scaling_mode_changed = false; + output->changed =0 ; +else if (s !=COMMIT_UNIVERSAL ) +igt_output_clear_prop_changed (output,IGT_CONNECTOR_CRTC_ID ); } }
@@ -2873,18 +2873,16 @@ void igt_output_set_pipe(igt_output_t *output, enum pipe pipe)if (pipe !=PIPE_NONE ) display->pipes[pipe].mode_changed = true; - output->config.pipe_changed = true; +igt_output_set_prop_value (output,IGT_CONNECTOR_CRTC_ID , pipe ==PIPE_NONE ?0 : display->pipes[pipe].crtc_id);igt_output_refresh (output); }void igt_output_set_scaling_mode (igt_output_t *output,uint64_t scaling_mode) { - output->config.connector_scaling_mode_changed = true; - - output->config.connector_scaling_mode = scaling_mode; +igt_output_set_prop_value (output,IGT_CONNECTOR_SCALING_MODE , scaling_mode); -igt_require (output->config.atomic_props_connector[IGT_CONNECTOR_SCALING_MODE ]); +igt_require (output->props[IGT_CONNECTOR_SCALING_MODE ]); }igt_plane_t *igt_output_get_plane (igt_output_t *output,int plane_idx)
lib/igt_kms.h +21 -14
@@ -131,10 +131,7 @@ struct kmstest_connector_config {drmModeConnector *connector;drmModeEncoder *encoder;drmModeModeInfo default_mode; -uint64_t connector_scaling_mode; -bool connector_scaling_mode_changed; -bool pipe_changed; -uint32_t atomic_props_connector[IGT_NUM_CONNECTOR_PROPS ]; +int pipe;unsigned valid_crtc_idx_mask; };
@@ -364,6 +361,12 @@ typedef struct {enum pipe pending_pipe;bool use_override_mode;drmModeModeInfo override_mode; + +/* bitmask of changed properties */ +uint64_t changed; + +uint32_t props[IGT_NUM_CONNECTOR_PROPS ]; +uint64_t values[IGT_NUM_CONNECTOR_PROPS ]; } igt_output_t;struct igt_display {
@@ -545,16 +548,20 @@ static inline bool igt_output_is_connected(igt_output_t *output)#define igt_atomic_populate_crtc_req (req, pipe, prop, value) \ igt_assert_lt(0, drmModeAtomicAddProperty(req, pipe->crtc_id,\ pipe->atomic_props_crtc[prop], value)) -/** -* igt_atomic_populate_connector_req: -* @req: A pointer to drmModeAtomicReq -* @output: A pointer igt_output_t -* @prop: one of igt_atomic_connector_properties -* @value: the value to add -*/ -#define igt_atomic_populate_connector_req (req, output, prop, value) \ - igt_assert_lt(0, drmModeAtomicAddProperty(req, output->config.connector->connector_id,\ - output->config.atomic_props_connector[prop], value)) + +#define igt_output_is_prop_changed (output, prop) \ + (!!((output)->changed & (1 << (prop)))) +#define igt_output_set_prop_changed (output, prop) \ + (output)->changed |= 1 << (prop) + +#define igt_output_clear_prop_changed (output, prop) \ + (output)->changed &= ~(1 << (prop)) + +#define igt_output_set_prop_value (output, prop, value) \ + do { \ + (output)->values[prop] = (value); \ + igt_output_set_prop_changed(output, prop); \ + } while (0)/* * igt_pipe_refresh:
tests/kms_atomic_interruptible.c +2 -2
@@ -159,7 +159,7 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t plane->pipe->atomic_props_crtc[IGT_CRTC_MODE_ID ], plane->pipe->atomic_props_crtc[IGT_CRTC_ACTIVE ],/* connector: 1 prop */ - output->config.atomic_props_connector[IGT_CONNECTOR_CRTC_ID ], + output->props[IGT_CONNECTOR_CRTC_ID ],/* plane: remainder props */ plane->atomic_props_plane[IGT_PLANE_CRTC_ID ], plane->atomic_props_plane[IGT_PLANE_FB_ID],
@@ -204,7 +204,7 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_tcase test_legacy_dpms: {struct drm_mode_connector_set_property prop = { .value =DRM_MODE_DPMS_OFF , - .prop_id = output->config.atomic_props_connector[IGT_CONNECTOR_DPMS ], + .prop_id = output->props[IGT_CONNECTOR_DPMS ], .connector_id = output->id, };
tests/kms_panel_fitting.c +1 -1
@@ -275,7 +275,7 @@ static void test_atomic_fastset(igt_display_t *display)igt_require (intel_gen (intel_get_drm_devid (display->drm_fd)) >=5 );for_each_pipe_with_valid_output (display, pipe, output) { -if (!output->config.atomic_props_connector[IGT_CONNECTOR_SCALING_MODE ]) +if (!output->props[IGT_CONNECTOR_SCALING_MODE ])continue ;test_panel_fitting_fastset (display, pipe, output);
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 5/8 lib/igt_kms: Rework plane properties to be more atomic, v2.
In reply to Maarten LankhorstIn the future I want to allow tests to commit more properties, but for this to work I have to fix all properties to work better with atomic commit. Instead of special casing each property make a bitmask for all property changed flags, and try to commit all properties.
Changes since v1:
- Remove special dumping of src and crtc coordinates.
- Dump all modified coordinates.
--- lib/igt_kms.c | 292 +++++++++++++++++---------------------- lib/igt_kms.h | 59 ++++---- tests/kms_atomic_interruptible.c | 12 +- tests/kms_rotation_crc.c | 4 +- 4 files changed, 159 insertions(+), 208 deletions(-)
lib/igt_kms.c +127 -165
@@ -192,11 +192,11 @@ const char *igt_connector_prop_names[IGT_NUM_CONNECTOR_PROPS] = {/* * Retrieve all the properies specified in props_name and store them into -* plane->atomic_props_plane. +* plane->props. */ static void -igt_atomic_fill_plane_props (igt_display_t *display,igt_plane_t *plane, -int num_props,const char **prop_names) +igt_fill_plane_props (igt_display_t *display,igt_plane_t *plane, +int num_props,const char **prop_names) {drmModeObjectPropertiesPtr props;int i, j, fd;
@@ -214,7 +214,7 @@ igt_atomic_fill_plane_props(igt_display_t *display, igt_plane_t *plane,if (strcmp (prop->name, prop_names[j]) !=0 )continue ; - plane->atomic_props_plane[j] = props->props[i]; + plane->props[j] = props->props[i];break ; }
@@ -1659,7 +1659,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)drmModeRes *resources;drmModePlaneRes *plane_resources;int i; -int is_atomic =0 ;memset (display,0 ,sizeof (igt_display_t));
@@ -1679,7 +1678,9 @@ void igt_display_init(igt_display_t *display, int drm_fd)igt_assert_f (display->pipes,"Failed to allocate memory for %d pipes\n" , display->n_pipes);drmSetClientCap (drm_fd,DRM_CLIENT_CAP_UNIVERSAL_PLANES ,1 ); - is_atomic =drmSetClientCap (drm_fd,DRM_CLIENT_CAP_ATOMIC ,1 ); +if (drmSetClientCap (drm_fd,DRM_CLIENT_CAP_ATOMIC ,1 ) ==0 ) + display->is_atomic =1 ; + plane_resources =drmModeGetPlaneResources (display->drm_fd);igt_assert (plane_resources);
@@ -1776,19 +1777,15 @@ void igt_display_init(igt_display_t *display, int drm_fd) plane->type = type; plane->pipe = pipe; plane->drm_plane = drm_plane; - plane->fence_fd =-1 ; + plane->values[IGT_PLANE_IN_FENCE_FD ] = ~0ULL ; -if (is_atomic ==0 ) { - display->is_atomic =1 ; -igt_atomic_fill_plane_props (display, plane,IGT_NUM_PLANE_PROPS , igt_plane_prop_names); - } +igt_fill_plane_props (display, plane,IGT_NUM_PLANE_PROPS , igt_plane_prop_names);get_plane_property (display->drm_fd, drm_plane->plane_id,"rotation" , - &plane->rotation_property, - &prop_value, + &plane->props[IGT_PLANE_ROTATION ], + &plane->values[IGT_PLANE_ROTATION ],NULL ); - plane->rotation = (igt_rotation_t )prop_value; }/*
@@ -1805,8 +1802,10 @@ void igt_display_init(igt_display_t *display, int drm_fd) pipe->n_planes = n_planes; -for_each_plane_on_pipe (display, i, plane) - plane->fb_changed = true; +for_each_plane_on_pipe (display, i, plane) { +igt_plane_set_prop_changed (plane,IGT_PLANE_FB_ID ); +igt_plane_set_prop_changed (plane,IGT_PLANE_CRTC_ID ); + } pipe->mode_changed = true; }
@@ -2070,18 +2069,7 @@ bool igt_pipe_get_property(igt_pipe_t *pipe, const char *name,static uint32_t igt_plane_get_fb_id (igt_plane_t *plane) { -if (plane->fb) -return plane->fb->fb_id; -else -return 0 ; -} - -static uint32_t igt_plane_get_fb_gem_handle (igt_plane_t *plane) -{ -if (plane->fb) -return plane->fb->gem_handle; -else -return 0 ; +return plane->values[IGT_PLANE_FB_ID ]; }#define CHECK_RETURN (r, fail) { \
@@ -2090,9 +2078,6 @@ static uint32_t igt_plane_get_fb_gem_handle(igt_plane_t *plane)igt_assert_eq (r,0 ); \ } - - -/* * Add position and fb changes of a plane to the atomic property set */
@@ -2101,63 +2086,31 @@ igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_pipe_t *pipe, drmModeAtomicReq *req) {igt_display_t *display = pipe->display; -uint32_t fb_id, crtc_id; +int i;igt_assert (plane->drm_plane); -/* it's an error to try an unsupported feature */ -igt_assert (igt_plane_supports_rotation (plane) || - !plane->rotation_changed); - - fb_id =igt_plane_get_fb_id (plane); - crtc_id = pipe->crtc_id; -LOG (display,"populating plane data: %s.%d, fb %u\n" ,kmstest_pipe_name (pipe->pipe), plane->index, - fb_id); +igt_plane_get_fb_id (plane)); -if (plane->fence_fd >=0 ) { -uint64_t fence_fd = (int64_t ) plane->fence_fd; -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_IN_FENCE_FD , fence_fd); - } - -if (plane->fb_changed) { -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_ID , fb_id ? crtc_id :0 ); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_FB_ID , fb_id); - } - -if (plane->position_changed || plane->size_changed) { -uint32_t src_x =IGT_FIXED (plane->src_x,0 );/* src_x */ -uint32_t src_y =IGT_FIXED (plane->src_y,0 );/* src_y */ -uint32_t src_w =IGT_FIXED (plane->src_w,0 );/* src_w */ -uint32_t src_h =IGT_FIXED (plane->src_h,0 );/* src_h */ -int32_t crtc_x = plane->crtc_x; -int32_t crtc_y = plane->crtc_y; -uint32_t crtc_w = plane->crtc_w; -uint32_t crtc_h = plane->crtc_h; +for (i =0 ; i <IGT_NUM_PLANE_PROPS ; i++) { +if (!igt_plane_is_prop_changed (plane, i)) +continue ; -LOG (display, -"src = (%d, %d) %u x %u " -"dst = (%d, %d) %u x %u\n" , - src_x >>16 , src_y >>16 , src_w >>16 , src_h >>16 , - crtc_x, crtc_y, crtc_w, crtc_h); +/* it's an error to try an unsupported feature */ +igt_assert (plane->props[i]); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_X , src_x); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_Y , src_y); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_W , src_w); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_H , src_h); +igt_debug ("plane %s.%d: Setting property \"%s\" to 0x%" PRIx64"/%" PRIi64"\n" , +kmstest_pipe_name (pipe->pipe), plane->index, igt_plane_prop_names[i], + plane->values[i], plane->values[i]); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_X , crtc_x); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_Y , crtc_y); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_W , crtc_w); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_H , crtc_h); +igt_assert_lt (0 ,drmModeAtomicAddProperty (req, plane->drm_plane->plane_id, + plane->props[i], + plane->values[i])); } - -if (plane->rotation_changed) -igt_atomic_populate_plane_req (req, plane, -IGT_PLANE_ROTATION , plane->rotation); }
@@ -2183,17 +2136,20 @@ static int igt_drm_plane_commit(igt_plane_t *plane,int32_t crtc_y;uint32_t crtc_w;uint32_t crtc_h; +bool setplane = +igt_plane_is_prop_changed (plane,IGT_PLANE_FB_ID ) || + plane->changed &IGT_PLANE_COORD_CHANGED_MASK ;igt_assert (plane->drm_plane);/* it's an error to try an unsupported feature */ igt_assert (igt_plane_supports_rotation (plane) || - !plane->rotation_changed); + !igt_plane_is_prop_changed (plane,IGT_PLANE_ROTATION )); fb_id =igt_plane_get_fb_id (plane); crtc_id = pipe->crtc_id; -if ((plane->fb_changed || plane->size_changed) && fb_id ==0 ) { +if (setplane && fb_id ==0 ) { LOG(display, "SetPlane pipe %s, plane %d, disabling\n", kmstest_pipe_name(pipe->pipe),
@@ -2212,16 +2168,15 @@ static int igt_drm_plane_commit(igt_plane_t *plane, IGT_FIXED(0,0) /* src_h */);CHECK_RETURN (ret, fail_on_error); - }else if (plane->fb_changed || plane->position_changed || - plane->size_changed) { - src_x =IGT_FIXED (plane->src_x,0 );/* src_x */ - src_y =IGT_FIXED (plane->src_y,0 );/* src_y */ - src_w =IGT_FIXED (plane->src_w,0 );/* src_w */ - src_h =IGT_FIXED (plane->src_h,0 );/* src_h */ - crtc_x = plane->crtc_x; - crtc_y = plane->crtc_y; - crtc_w = plane->crtc_w; - crtc_h = plane->crtc_h; + }else if (setplane) { + src_x = plane->values[IGT_PLANE_SRC_X ]; + src_y = plane->values[IGT_PLANE_SRC_Y ]; + src_w = plane->values[IGT_PLANE_SRC_W ]; + src_h = plane->values[IGT_PLANE_SRC_H ]; + crtc_x = plane->values[IGT_PLANE_CRTC_X ]; + crtc_y = plane->values[IGT_PLANE_CRTC_Y ]; + crtc_w = plane->values[IGT_PLANE_CRTC_W ]; + crtc_h = plane->values[IGT_PLANE_CRTC_H ];LOG (display, "SetPlane %s.%d, fb %u, src = (%d, %d) "
@@ -2245,9 +2200,10 @@ static int igt_drm_plane_commit(igt_plane_t *plane,CHECK_RETURN (ret, fail_on_error); } -if (plane->rotation_changed) { - ret =igt_plane_set_property (plane, plane->rotation_property, - plane->rotation); +if (igt_plane_is_prop_changed (plane,IGT_PLANE_ROTATION )) { + ret =igt_plane_set_property (plane, + plane->props[IGT_PLANE_ROTATION ], + plane->values[IGT_PLANE_ROTATION ]);CHECK_RETURN (ret, fail_on_error); }
@@ -2269,35 +2225,30 @@ static int igt_cursor_commit_legacy(igt_plane_t *cursor,uint32_t crtc_id = pipe->crtc_id;int ret; -if (cursor->fb_changed) { -uint32_t gem_handle =igt_plane_get_fb_gem_handle (cursor); - -if (gem_handle) { +if (igt_plane_is_prop_changed (cursor,IGT_PLANE_FB_ID )) { +if (cursor->gem_handle)LOG (display,"SetCursor pipe %s, fb %u %dx%d\n" ,kmstest_pipe_name (pipe->pipe), - gem_handle, - cursor->crtc_w, cursor->crtc_h); - - ret =drmModeSetCursor (display->drm_fd, crtc_id, - gem_handle, - cursor->crtc_w, - cursor->crtc_h); - }else { + cursor->gem_handle, + (unsigned )cursor->values[IGT_PLANE_CRTC_W ], + (unsigned )cursor->values[IGT_PLANE_CRTC_H ]); +else LOG (display,"SetCursor pipe %s, disabling\n" ,kmstest_pipe_name (pipe->pipe)); - ret =drmModeSetCursor (display->drm_fd, crtc_id, -0 ,0 ,0 ); - } - + ret =drmModeSetCursor (display->drm_fd, crtc_id, + cursor->gem_handle, + cursor->values[IGT_PLANE_CRTC_W ], + cursor->values[IGT_PLANE_CRTC_H ]);CHECK_RETURN (ret, fail_on_error); } -if (cursor->position_changed) { -int x = cursor->crtc_x; -int y = cursor->crtc_y; +if (igt_plane_is_prop_changed (cursor,IGT_PLANE_CRTC_X ) || +igt_plane_is_prop_changed (cursor,IGT_PLANE_CRTC_Y )) { +int x = cursor->values[IGT_PLANE_CRTC_X ]; +int y = cursor->values[IGT_PLANE_CRTC_Y ]; LOG(display, "MoveCursor pipe %s, (%d, %d)\n",
@@ -2326,13 +2277,14 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,int ret;/* Primary planes can't be windowed when using a legacy commit */ -igt_assert ((primary->crtc_x ==0 && primary->crtc_y ==0 )); +igt_assert ((primary->values[IGT_PLANE_CRTC_X ] ==0 && primary->values[IGT_PLANE_CRTC_Y ] ==0 ));/* nor rotated */ -igt_assert (!primary->rotation_changed); +igt_assert (!igt_plane_is_prop_changed (primary,IGT_PLANE_ROTATION )); -if (!primary->fb_changed && !primary->position_changed && - !primary->size_changed && !primary->pipe->mode_changed) +if (!igt_plane_is_prop_changed (primary,IGT_PLANE_FB_ID ) && + !(primary->changed &IGT_PLANE_COORD_CHANGED_MASK ) && + !primary->pipe->mode_changed)return 0 ; crtc_id = pipe->crtc_id;
@@ -2343,19 +2295,22 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary, mode =NULL ;if (fb_id) { +uint32_t src_x = primary->values[IGT_PLANE_SRC_X ] >>16 ; +uint32_t src_y = primary->values[IGT_PLANE_SRC_Y ] >>16 ; +LOG (display,"%s: SetCrtc pipe %s, fb %u, src (%d, %d), " "mode %dx%d\n" ,igt_output_name (output),kmstest_pipe_name (pipe->pipe), fb_id, - primary->src_x, primary->src_y, + src_x, src_y, mode->hdisplay, mode->vdisplay); ret =drmModeSetCrtc (display->drm_fd, crtc_id, fb_id, - primary->src_x, primary->src_y, + src_x, src_y, &output->id,1 , mode);
@@ -2608,18 +2563,27 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s) }for_each_plane_on_pipe (display, pipe, plane) { - plane->fb_changed = false; - plane->position_changed = false; - plane->size_changed = false; +if (s ==COMMIT_ATOMIC ) { +int fd; + plane->changed =0 ; -if (s !=COMMIT_LEGACY || - !(plane->type ==DRM_PLANE_TYPE_PRIMARY || - plane->type ==DRM_PLANE_TYPE_CURSOR )) - plane->rotation_changed = false; + fd = plane->values[IGT_PLANE_IN_FENCE_FD ]; +if (fd !=-1 ) +close (fd); -if (s ==COMMIT_ATOMIC )/* reset fence_fd to prevent it from being set for the next commit */ -igt_plane_set_fence_fd (plane,-1 ); + plane->values[IGT_PLANE_IN_FENCE_FD ] =-1 ; + }else { + plane->changed &= ~IGT_PLANE_COORD_CHANGED_MASK ; + +igt_plane_clear_prop_changed (plane,IGT_PLANE_CRTC_ID ); +igt_plane_clear_prop_changed (plane,IGT_PLANE_FB_ID ); + +if (s !=COMMIT_LEGACY || + !(plane->type ==DRM_PLANE_TYPE_PRIMARY || + plane->type ==DRM_PLANE_TYPE_CURSOR )) +igt_plane_clear_prop_changed (plane,IGT_PLANE_ROTATION ); + } } }
@@ -2913,30 +2877,31 @@ void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb)LOG (display,"%s.%d: plane_set_fb(%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, fb ? fb->fb_id :0 ); - plane->fb = fb; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_ID , fb ? pipe->crtc_id :0 ); +igt_plane_set_prop_value (plane,IGT_PLANE_FB_ID , fb ? fb->fb_id :0 ); + +if (plane->type ==DRM_PLANE_TYPE_CURSOR && fb) + plane->gem_handle = fb->gem_handle; +else + plane->gem_handle =0 ; +/* hack to keep tests working that don't call igt_plane_set_size() */ if (fb) {/* set default plane size as fb size */ - plane->crtc_w = fb->width; - plane->crtc_h = fb->height; +igt_plane_set_position (plane,0 ,0 ); +igt_plane_set_size (plane, fb->width, fb->height);/* set default src pos/size as fb size */ - plane->src_x =0 ; - plane->src_y =0 ; - plane->src_w = fb->width; - plane->src_h = fb->height; +igt_fb_set_position (fb, plane,0 ,0 ); +igt_fb_set_size (fb, plane, fb->width, fb->height); }else { - plane->src_x =0 ; - plane->src_y =0 ; - plane->src_w =0 ; - plane->src_h =0 ; +igt_plane_set_position (plane,0 ,0 ); +igt_plane_set_size (plane,0 ,0 ); - plane->crtc_w =0 ; - plane->crtc_h =0 ; +/* set default src pos/size as fb size */ +igt_fb_set_position (fb, plane,0 ,0 ); +igt_fb_set_size (fb, plane,0 ,0 ); } - - plane->fb_changed = true; - plane->size_changed = true; }/**
@@ -2949,12 +2914,19 @@ void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb)*/ void igt_plane_set_fence_fd (igt_plane_t *plane,int fence_fd) { -close (plane->fence_fd); +int64_t fd; -if (fcntl (fence_fd,F_GETFD ) !=-1 ) - plane->fence_fd =dup (fence_fd); -else - plane->fence_fd =-1 ; + fd = plane->values[IGT_PLANE_IN_FENCE_FD ]; +if (fd !=-1 ) +close (fd); + +if (fence_fd !=-1 ) { + fd =dup (fence_fd); +igt_fail_on (fd ==-1 ); + }else + fd =-1 ; + +igt_plane_set_prop_value (plane,IGT_PLANE_IN_FENCE_FD , fd); }void igt_plane_set_position (igt_plane_t *plane,int x,int y)
@@ -2965,10 +2937,8 @@ void igt_plane_set_position(igt_plane_t *plane, int x, int y)LOG (display,"%s.%d: plane_set_position(%d,%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, x, y); - plane->crtc_x = x; - plane->crtc_y = y; - - plane->position_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_X , x); +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_Y , y); }/**
@@ -2989,10 +2959,8 @@ void igt_plane_set_size(igt_plane_t *plane, int w, int h)LOG (display,"%s.%d: plane_set_size (%dx%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, w, h); - plane->crtc_w = w; - plane->crtc_h = h; - - plane->size_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_W , w); +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_H , h); }/**
@@ -3014,10 +2982,8 @@ void igt_fb_set_position(struct igt_fb *fb, igt_plane_t *plane,LOG (display,"%s.%d: fb_set_position(%d,%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, x, y); - plane->src_x = x; - plane->src_y = y; - - plane->fb_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_X ,IGT_FIXED (x,0 )); +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_Y ,IGT_FIXED (y,0 )); }/**
@@ -3040,10 +3006,8 @@ void igt_fb_set_size(struct igt_fb *fb, igt_plane_t *plane,LOG (display,"%s.%d: fb_set_size(%dx%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, w, h); - plane->src_w = w; - plane->src_h = h; - - plane->fb_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_W ,IGT_FIXED (w,0 )); +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_H ,IGT_FIXED (h,0 )); }static const char *rotation_name (igt_rotation_t rotation)
@@ -3071,9 +3035,7 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)kmstest_pipe_name (pipe->pipe), plane->index, rotation_name(rotation)); - plane->rotation = rotation; - - plane->rotation_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_ROTATION , rotation); }/**
lib/igt_kms.h +24 -35
90 lines not on this page · raw message
tests/kms_atomic_interruptible.c +6 -6
@@ -161,12 +161,12 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t/* connector: 1 prop */ output->props[IGT_CONNECTOR_CRTC_ID ],/* plane: remainder props */ - plane->atomic_props_plane[IGT_PLANE_CRTC_ID ], - plane->atomic_props_plane[IGT_PLANE_FB_ID ], - plane->atomic_props_plane[IGT_PLANE_SRC_W ], - plane->atomic_props_plane[IGT_PLANE_SRC_H ], - plane->atomic_props_plane[IGT_PLANE_CRTC_W ], - plane->atomic_props_plane[IGT_PLANE_CRTC_H ] + plane->props[IGT_PLANE_CRTC_ID ], + plane->props[IGT_PLANE_FB_ID ], + plane->props[IGT_PLANE_SRC_W ], + plane->props[IGT_PLANE_SRC_H ], + plane->props[IGT_PLANE_CRTC_W ], + plane->props[IGT_PLANE_CRTC_H ] };uint64_t prop_vals[] = { /* crtc */
tests/kms_rotation_crc.c +2 -2
@@ -122,11 +122,11 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,igt_plane_set_fb (primary, &data->fb_modeset);if (commit <COMMIT_ATOMIC ) { - primary->rotation_changed = false; +igt_plane_clear_prop_changed (primary,IGT_PLANE_ROTATION );igt_display_commit (display);if (plane->type ==DRM_PLANE_TYPE_PRIMARY ) - primary->rotation_changed = true; +igt_plane_set_prop_changed (primary,IGT_PLANE_ROTATION ); }igt_plane_set_fb (plane,NULL );
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 5/8 lib/igt_kms: Rework plane properties to be more atomic, v3.
In the future I want to allow tests to commit more properties, but for this to work I have to fix all properties to work better with atomic commit. Instead of special casing each property make a bitmask for all property changed flags, and try to commit all properties.
Changes since v1:
- Remove special dumping of src and crtc coordinates.
- Dump all modified coordinates.
Changes since v2:
- Move igt_plane_set_prop_changed up slightly.
--- lib/igt_kms.c | 293 +++++++++++++++++---------------------- lib/igt_kms.h | 59 ++++---- tests/kms_atomic_interruptible.c | 12 +- tests/kms_rotation_crc.c | 4 +- 4 files changed, 159 insertions(+), 209 deletions(-)
lib/igt_kms.c +127 -166
@@ -192,11 +192,11 @@ const char *igt_connector_prop_names[IGT_NUM_CONNECTOR_PROPS] = {/* * Retrieve all the properies specified in props_name and store them into -* plane->atomic_props_plane. +* plane->props. */ static void -igt_atomic_fill_plane_props (igt_display_t *display,igt_plane_t *plane, -int num_props,const char **prop_names) +igt_fill_plane_props (igt_display_t *display,igt_plane_t *plane, +int num_props,const char **prop_names) {drmModeObjectPropertiesPtr props;int i, j, fd;
@@ -214,7 +214,7 @@ igt_atomic_fill_plane_props(igt_display_t *display, igt_plane_t *plane,if (strcmp (prop->name, prop_names[j]) !=0 )continue ; - plane->atomic_props_plane[j] = props->props[i]; + plane->props[j] = props->props[i];break ; }
@@ -1659,7 +1659,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)drmModeRes *resources;drmModePlaneRes *plane_resources;int i; -int is_atomic =0 ;memset (display,0 ,sizeof (igt_display_t));
@@ -1679,7 +1678,9 @@ void igt_display_init(igt_display_t *display, int drm_fd)igt_assert_f (display->pipes,"Failed to allocate memory for %d pipes\n" , display->n_pipes);drmSetClientCap (drm_fd,DRM_CLIENT_CAP_UNIVERSAL_PLANES ,1 ); - is_atomic =drmSetClientCap (drm_fd,DRM_CLIENT_CAP_ATOMIC ,1 ); +if (drmSetClientCap (drm_fd,DRM_CLIENT_CAP_ATOMIC ,1 ) ==0 ) + display->is_atomic =1 ; + plane_resources =drmModeGetPlaneResources (display->drm_fd);igt_assert (plane_resources);
@@ -1776,19 +1777,19 @@ void igt_display_init(igt_display_t *display, int drm_fd) plane->type = type; plane->pipe = pipe; plane->drm_plane = drm_plane; - plane->fence_fd =-1 ; + plane->values[IGT_PLANE_IN_FENCE_FD ] = ~0ULL ; -if (is_atomic ==0 ) { - display->is_atomic =1 ; -igt_atomic_fill_plane_props (display, plane,IGT_NUM_PLANE_PROPS , igt_plane_prop_names); - } +igt_fill_plane_props (display, plane,IGT_NUM_PLANE_PROPS , igt_plane_prop_names);get_plane_property (display->drm_fd, drm_plane->plane_id,"rotation" , - &plane->rotation_property, - &prop_value, + &plane->props[IGT_PLANE_ROTATION ], + &plane->values[IGT_PLANE_ROTATION ],NULL ); - plane->rotation = (igt_rotation_t )prop_value; + +/* Clear any residual framebuffer on first commit. */ +igt_plane_set_prop_changed (plane,IGT_PLANE_FB_ID ); +igt_plane_set_prop_changed (plane,IGT_PLANE_CRTC_ID ); }/*
@@ -1805,9 +1806,6 @@ void igt_display_init(igt_display_t *display, int drm_fd) pipe->n_planes = n_planes; -for_each_plane_on_pipe (display, i, plane) - plane->fb_changed = true; - pipe->mode_changed = true; }
@@ -2070,18 +2068,7 @@ bool igt_pipe_get_property(igt_pipe_t *pipe, const char *name,static uint32_t igt_plane_get_fb_id (igt_plane_t *plane) { -if (plane->fb) -return plane->fb->fb_id; -else -return 0 ; -} - -static uint32_t igt_plane_get_fb_gem_handle (igt_plane_t *plane) -{ -if (plane->fb) -return plane->fb->gem_handle; -else -return 0 ; +return plane->values[IGT_PLANE_FB_ID ]; }#define CHECK_RETURN (r, fail) { \
@@ -2090,9 +2077,6 @@ static uint32_t igt_plane_get_fb_gem_handle(igt_plane_t *plane)igt_assert_eq (r,0 ); \ } - - -/* * Add position and fb changes of a plane to the atomic property set */
@@ -2101,63 +2085,31 @@ igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_pipe_t *pipe, drmModeAtomicReq *req) {igt_display_t *display = pipe->display; -uint32_t fb_id, crtc_id; +int i;igt_assert (plane->drm_plane); -/* it's an error to try an unsupported feature */ -igt_assert (igt_plane_supports_rotation (plane) || - !plane->rotation_changed); - - fb_id =igt_plane_get_fb_id (plane); - crtc_id = pipe->crtc_id; -LOG (display,"populating plane data: %s.%d, fb %u\n" ,kmstest_pipe_name (pipe->pipe), plane->index, - fb_id); - -if (plane->fence_fd >=0 ) { -uint64_t fence_fd = (int64_t ) plane->fence_fd; -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_IN_FENCE_FD , fence_fd); - } +igt_plane_get_fb_id (plane)); -if (plane->fb_changed) { -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_ID , fb_id ? crtc_id :0 ); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_FB_ID , fb_id); - } - -if (plane->position_changed || plane->size_changed) { -uint32_t src_x =IGT_FIXED (plane->src_x,0 );/* src_x */ -uint32_t src_y =IGT_FIXED (plane->src_y,0 );/* src_y */ -uint32_t src_w =IGT_FIXED (plane->src_w,0 );/* src_w */ -uint32_t src_h =IGT_FIXED (plane->src_h,0 );/* src_h */ -int32_t crtc_x = plane->crtc_x; -int32_t crtc_y = plane->crtc_y; -uint32_t crtc_w = plane->crtc_w; -uint32_t crtc_h = plane->crtc_h; +for (i =0 ; i <IGT_NUM_PLANE_PROPS ; i++) { +if (!igt_plane_is_prop_changed (plane, i)) +continue ; -LOG (display, -"src = (%d, %d) %u x %u " -"dst = (%d, %d) %u x %u\n" , - src_x >>16 , src_y >>16 , src_w >>16 , src_h >>16 , - crtc_x, crtc_y, crtc_w, crtc_h); +/* it's an error to try an unsupported feature */ +igt_assert (plane->props[i]); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_X , src_x); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_Y , src_y); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_W , src_w); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_H , src_h); +igt_debug ("plane %s.%d: Setting property \"%s\" to 0x%" PRIx64"/%" PRIi64"\n" , +kmstest_pipe_name (pipe->pipe), plane->index, igt_plane_prop_names[i], + plane->values[i], plane->values[i]); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_X , crtc_x); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_Y , crtc_y); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_W , crtc_w); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_H , crtc_h); +igt_assert_lt (0 ,drmModeAtomicAddProperty (req, plane->drm_plane->plane_id, + plane->props[i], + plane->values[i])); } - -if (plane->rotation_changed) -igt_atomic_populate_plane_req (req, plane, -IGT_PLANE_ROTATION , plane->rotation); }
@@ -2183,17 +2135,20 @@ static int igt_drm_plane_commit(igt_plane_t *plane,int32_t crtc_y;uint32_t crtc_w;uint32_t crtc_h; +bool setplane = +igt_plane_is_prop_changed (plane,IGT_PLANE_FB_ID ) || + plane->changed &IGT_PLANE_COORD_CHANGED_MASK ;igt_assert (plane->drm_plane);/* it's an error to try an unsupported feature */ igt_assert (igt_plane_supports_rotation (plane) || - !plane->rotation_changed); + !igt_plane_is_prop_changed (plane,IGT_PLANE_ROTATION )); fb_id =igt_plane_get_fb_id (plane); crtc_id = pipe->crtc_id; -if ((plane->fb_changed || plane->size_changed) && fb_id ==0 ) { +if (setplane && fb_id ==0 ) { LOG(display, "SetPlane pipe %s, plane %d, disabling\n", kmstest_pipe_name(pipe->pipe),
@@ -2212,16 +2167,15 @@ static int igt_drm_plane_commit(igt_plane_t *plane, IGT_FIXED(0,0) /* src_h */);CHECK_RETURN (ret, fail_on_error); - }else if (plane->fb_changed || plane->position_changed || - plane->size_changed) { - src_x =IGT_FIXED (plane->src_x,0 );/* src_x */ - src_y =IGT_FIXED (plane->src_y,0 );/* src_y */ - src_w =IGT_FIXED (plane->src_w,0 );/* src_w */ - src_h =IGT_FIXED (plane->src_h,0 );/* src_h */ - crtc_x = plane->crtc_x; - crtc_y = plane->crtc_y; - crtc_w = plane->crtc_w; - crtc_h = plane->crtc_h; + }else if (setplane) { + src_x = plane->values[IGT_PLANE_SRC_X ]; + src_y = plane->values[IGT_PLANE_SRC_Y ]; + src_w = plane->values[IGT_PLANE_SRC_W ]; + src_h = plane->values[IGT_PLANE_SRC_H ]; + crtc_x = plane->values[IGT_PLANE_CRTC_X ]; + crtc_y = plane->values[IGT_PLANE_CRTC_Y ]; + crtc_w = plane->values[IGT_PLANE_CRTC_W ]; + crtc_h = plane->values[IGT_PLANE_CRTC_H ];LOG (display, "SetPlane %s.%d, fb %u, src = (%d, %d) "
@@ -2245,9 +2199,10 @@ static int igt_drm_plane_commit(igt_plane_t *plane,CHECK_RETURN (ret, fail_on_error); } -if (plane->rotation_changed) { - ret =igt_plane_set_property (plane, plane->rotation_property, - plane->rotation); +if (igt_plane_is_prop_changed (plane,IGT_PLANE_ROTATION )) { + ret =igt_plane_set_property (plane, + plane->props[IGT_PLANE_ROTATION ], + plane->values[IGT_PLANE_ROTATION ]);CHECK_RETURN (ret, fail_on_error); }
@@ -2269,35 +2224,30 @@ static int igt_cursor_commit_legacy(igt_plane_t *cursor,uint32_t crtc_id = pipe->crtc_id;int ret; -if (cursor->fb_changed) { -uint32_t gem_handle =igt_plane_get_fb_gem_handle (cursor); - -if (gem_handle) { +if (igt_plane_is_prop_changed (cursor,IGT_PLANE_FB_ID )) { +if (cursor->gem_handle)LOG (display,"SetCursor pipe %s, fb %u %dx%d\n" ,kmstest_pipe_name (pipe->pipe), - gem_handle, - cursor->crtc_w, cursor->crtc_h); - - ret =drmModeSetCursor (display->drm_fd, crtc_id, - gem_handle, - cursor->crtc_w, - cursor->crtc_h); - }else { + cursor->gem_handle, + (unsigned )cursor->values[IGT_PLANE_CRTC_W ], + (unsigned )cursor->values[IGT_PLANE_CRTC_H ]); +else LOG (display,"SetCursor pipe %s, disabling\n" ,kmstest_pipe_name (pipe->pipe)); - ret =drmModeSetCursor (display->drm_fd, crtc_id, -0 ,0 ,0 ); - } - + ret =drmModeSetCursor (display->drm_fd, crtc_id, + cursor->gem_handle, + cursor->values[IGT_PLANE_CRTC_W ], + cursor->values[IGT_PLANE_CRTC_H ]);CHECK_RETURN (ret, fail_on_error); } -if (cursor->position_changed) { -int x = cursor->crtc_x; -int y = cursor->crtc_y; +if (igt_plane_is_prop_changed (cursor,IGT_PLANE_CRTC_X ) || +igt_plane_is_prop_changed (cursor,IGT_PLANE_CRTC_Y )) { +int x = cursor->values[IGT_PLANE_CRTC_X ]; +int y = cursor->values[IGT_PLANE_CRTC_Y ]; LOG(display, "MoveCursor pipe %s, (%d, %d)\n",
@@ -2326,13 +2276,14 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,int ret;/* Primary planes can't be windowed when using a legacy commit */ -igt_assert ((primary->crtc_x ==0 && primary->crtc_y ==0 )); +igt_assert ((primary->values[IGT_PLANE_CRTC_X ] ==0 && primary->values[IGT_PLANE_CRTC_Y ] ==0 ));/* nor rotated */ -igt_assert (!primary->rotation_changed); +igt_assert (!igt_plane_is_prop_changed (primary,IGT_PLANE_ROTATION )); -if (!primary->fb_changed && !primary->position_changed && - !primary->size_changed && !primary->pipe->mode_changed) +if (!igt_plane_is_prop_changed (primary,IGT_PLANE_FB_ID ) && + !(primary->changed &IGT_PLANE_COORD_CHANGED_MASK ) && + !primary->pipe->mode_changed)return 0 ; crtc_id = pipe->crtc_id;
@@ -2343,19 +2294,22 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary, mode =NULL ;if (fb_id) { +uint32_t src_x = primary->values[IGT_PLANE_SRC_X ] >>16 ; +uint32_t src_y = primary->values[IGT_PLANE_SRC_Y ] >>16 ; +LOG (display,"%s: SetCrtc pipe %s, fb %u, src (%d, %d), " "mode %dx%d\n" ,igt_output_name (output),kmstest_pipe_name (pipe->pipe), fb_id, - primary->src_x, primary->src_y, + src_x, src_y, mode->hdisplay, mode->vdisplay); ret =drmModeSetCrtc (display->drm_fd, crtc_id, fb_id, - primary->src_x, primary->src_y, + src_x, src_y, &output->id,1 , mode);
@@ -2608,18 +2562,27 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s) }for_each_plane_on_pipe (display, pipe, plane) { - plane->fb_changed = false; - plane->position_changed = false; - plane->size_changed = false; +if (s ==COMMIT_ATOMIC ) { +int fd; + plane->changed =0 ; -if (s !=COMMIT_LEGACY || - !(plane->type ==DRM_PLANE_TYPE_PRIMARY || - plane->type ==DRM_PLANE_TYPE_CURSOR )) - plane->rotation_changed = false; + fd = plane->values[IGT_PLANE_IN_FENCE_FD ]; +if (fd !=-1 ) +close (fd); -if (s ==COMMIT_ATOMIC )/* reset fence_fd to prevent it from being set for the next commit */ -igt_plane_set_fence_fd (plane,-1 ); + plane->values[IGT_PLANE_IN_FENCE_FD ] =-1 ; + }else { + plane->changed &= ~IGT_PLANE_COORD_CHANGED_MASK ; + +igt_plane_clear_prop_changed (plane,IGT_PLANE_CRTC_ID ); +igt_plane_clear_prop_changed (plane,IGT_PLANE_FB_ID ); + +if (s !=COMMIT_LEGACY || + !(plane->type ==DRM_PLANE_TYPE_PRIMARY || + plane->type ==DRM_PLANE_TYPE_CURSOR )) +igt_plane_clear_prop_changed (plane,IGT_PLANE_ROTATION ); + } } }
@@ -2913,30 +2876,31 @@ void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb)LOG (display,"%s.%d: plane_set_fb(%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, fb ? fb->fb_id :0 ); - plane->fb = fb; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_ID , fb ? pipe->crtc_id :0 ); +igt_plane_set_prop_value (plane,IGT_PLANE_FB_ID , fb ? fb->fb_id :0 ); + +if (plane->type ==DRM_PLANE_TYPE_CURSOR && fb) + plane->gem_handle = fb->gem_handle; +else + plane->gem_handle =0 ; +/* hack to keep tests working that don't call igt_plane_set_size() */ if (fb) {/* set default plane size as fb size */ - plane->crtc_w = fb->width; - plane->crtc_h = fb->height; +igt_plane_set_position (plane,0 ,0 ); +igt_plane_set_size (plane, fb->width, fb->height);/* set default src pos/size as fb size */ - plane->src_x =0 ; - plane->src_y =0 ; - plane->src_w = fb->width; - plane->src_h = fb->height; +igt_fb_set_position (fb, plane,0 ,0 ); +igt_fb_set_size (fb, plane, fb->width, fb->height); }else { - plane->src_x =0 ; - plane->src_y =0 ; - plane->src_w =0 ; - plane->src_h =0 ; +igt_plane_set_position (plane,0 ,0 ); +igt_plane_set_size (plane,0 ,0 ); - plane->crtc_w =0 ; - plane->crtc_h =0 ; +/* set default src pos/size as fb size */ +igt_fb_set_position (fb, plane,0 ,0 ); +igt_fb_set_size (fb, plane,0 ,0 ); } - - plane->fb_changed = true; - plane->size_changed = true; }/**
@@ -2949,12 +2913,19 @@ void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb)*/ void igt_plane_set_fence_fd (igt_plane_t *plane,int fence_fd) { -close (plane->fence_fd); +int64_t fd; -if (fcntl (fence_fd,F_GETFD ) !=-1 ) - plane->fence_fd =dup (fence_fd); -else - plane->fence_fd =-1 ; + fd = plane->values[IGT_PLANE_IN_FENCE_FD ]; +if (fd !=-1 ) +close (fd); + +if (fence_fd !=-1 ) { + fd =dup (fence_fd); +igt_fail_on (fd ==-1 ); + }else + fd =-1 ; + +igt_plane_set_prop_value (plane,IGT_PLANE_IN_FENCE_FD , fd); }void igt_plane_set_position (igt_plane_t *plane,int x,int y)
@@ -2965,10 +2936,8 @@ void igt_plane_set_position(igt_plane_t *plane, int x, int y)LOG (display,"%s.%d: plane_set_position(%d,%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, x, y); - plane->crtc_x = x; - plane->crtc_y = y; - - plane->position_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_X , x); +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_Y , y); }/**
@@ -2989,10 +2958,8 @@ void igt_plane_set_size(igt_plane_t *plane, int w, int h)LOG (display,"%s.%d: plane_set_size (%dx%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, w, h); - plane->crtc_w = w; - plane->crtc_h = h; - - plane->size_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_W , w); +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_H , h); }/**
@@ -3014,10 +2981,8 @@ void igt_fb_set_position(struct igt_fb *fb, igt_plane_t *plane,LOG (display,"%s.%d: fb_set_position(%d,%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, x, y); - plane->src_x = x; - plane->src_y = y; - - plane->fb_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_X ,IGT_FIXED (x,0 )); +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_Y ,IGT_FIXED (y,0 )); }/**
@@ -3040,10 +3005,8 @@ void igt_fb_set_size(struct igt_fb *fb, igt_plane_t *plane,LOG (display,"%s.%d: fb_set_size(%dx%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, w, h); - plane->src_w = w; - plane->src_h = h; - - plane->fb_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_W ,IGT_FIXED (w,0 )); +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_H ,IGT_FIXED (h,0 )); }static const char *rotation_name (igt_rotation_t rotation)
@@ -3071,9 +3034,7 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)kmstest_pipe_name (pipe->pipe), plane->index, rotation_name(rotation)); - plane->rotation = rotation; - - plane->rotation_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_ROTATION , rotation); }/**
lib/igt_kms.h +24 -35
90 lines not on this page · raw message
tests/kms_atomic_interruptible.c +6 -6
@@ -161,12 +161,12 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t/* connector: 1 prop */ output->props[IGT_CONNECTOR_CRTC_ID ],/* plane: remainder props */ - plane->atomic_props_plane[IGT_PLANE_CRTC_ID ], - plane->atomic_props_plane[IGT_PLANE_FB_ID ], - plane->atomic_props_plane[IGT_PLANE_SRC_W ], - plane->atomic_props_plane[IGT_PLANE_SRC_H ], - plane->atomic_props_plane[IGT_PLANE_CRTC_W ], - plane->atomic_props_plane[IGT_PLANE_CRTC_H ] + plane->props[IGT_PLANE_CRTC_ID ], + plane->props[IGT_PLANE_FB_ID ], + plane->props[IGT_PLANE_SRC_W ], + plane->props[IGT_PLANE_SRC_H ], + plane->props[IGT_PLANE_CRTC_W ], + plane->props[IGT_PLANE_CRTC_H ] };uint64_t prop_vals[] = { /* crtc */
tests/kms_rotation_crc.c +2 -2
@@ -122,11 +122,11 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,igt_plane_set_fb (primary, &data->fb_modeset);if (commit <COMMIT_ATOMIC ) { - primary->rotation_changed = false; +igt_plane_clear_prop_changed (primary,IGT_PLANE_ROTATION );igt_display_commit (display);if (plane->type ==DRM_PLANE_TYPE_PRIMARY ) - primary->rotation_changed = true; +igt_plane_set_prop_changed (primary,IGT_PLANE_ROTATION ); }igt_plane_set_fb (plane,NULL );
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 5/8 lib/igt_kms: Rework plane properties to be more atomic, v4.
In the future I want to allow tests to commit more properties, but for this to work I have to fix all properties to work better with atomic commit. Instead of special casing each property make a bitmask for all property changed flags, and try to commit all properties.
Changes since v1:
- Remove special dumping of src and crtc coordinates.
- Dump all modified coordinates.
Changes since v2:
- Move igt_plane_set_prop_changed up slightly.
Changes since v3:
- Fix wrong ordering of set_position in kms_plane_lowres causing a test failure.
--- lib/igt_kms.c | 293 +++++++++++++++++---------------------- lib/igt_kms.h | 59 ++++---- tests/kms_atomic_interruptible.c | 12 +- tests/kms_plane_lowres.c | 2 +- tests/kms_rotation_crc.c | 4 +- 5 files changed, 160 insertions(+), 210 deletions(-)
lib/igt_kms.c +127 -166
@@ -192,11 +192,11 @@ const char *igt_connector_prop_names[IGT_NUM_CONNECTOR_PROPS] = {/* * Retrieve all the properies specified in props_name and store them into -* plane->atomic_props_plane. +* plane->props. */ static void -igt_atomic_fill_plane_props (igt_display_t *display,igt_plane_t *plane, -int num_props,const char **prop_names) +igt_fill_plane_props (igt_display_t *display,igt_plane_t *plane, +int num_props,const char **prop_names) {drmModeObjectPropertiesPtr props;int i, j, fd;
@@ -214,7 +214,7 @@ igt_atomic_fill_plane_props(igt_display_t *display, igt_plane_t *plane,if (strcmp (prop->name, prop_names[j]) !=0 )continue ; - plane->atomic_props_plane[j] = props->props[i]; + plane->props[j] = props->props[i];break ; }
@@ -1659,7 +1659,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)drmModeRes *resources;drmModePlaneRes *plane_resources;int i; -int is_atomic =0 ;memset (display,0 ,sizeof (igt_display_t));
@@ -1679,7 +1678,9 @@ void igt_display_init(igt_display_t *display, int drm_fd)igt_assert_f (display->pipes,"Failed to allocate memory for %d pipes\n" , display->n_pipes);drmSetClientCap (drm_fd,DRM_CLIENT_CAP_UNIVERSAL_PLANES ,1 ); - is_atomic =drmSetClientCap (drm_fd,DRM_CLIENT_CAP_ATOMIC ,1 ); +if (drmSetClientCap (drm_fd,DRM_CLIENT_CAP_ATOMIC ,1 ) ==0 ) + display->is_atomic =1 ; + plane_resources =drmModeGetPlaneResources (display->drm_fd);igt_assert (plane_resources);
@@ -1776,19 +1777,19 @@ void igt_display_init(igt_display_t *display, int drm_fd) plane->type = type; plane->pipe = pipe; plane->drm_plane = drm_plane; - plane->fence_fd =-1 ; + plane->values[IGT_PLANE_IN_FENCE_FD ] = ~0ULL ; -if (is_atomic ==0 ) { - display->is_atomic =1 ; -igt_atomic_fill_plane_props (display, plane,IGT_NUM_PLANE_PROPS , igt_plane_prop_names); - } +igt_fill_plane_props (display, plane,IGT_NUM_PLANE_PROPS , igt_plane_prop_names);get_plane_property (display->drm_fd, drm_plane->plane_id,"rotation" , - &plane->rotation_property, - &prop_value, + &plane->props[IGT_PLANE_ROTATION ], + &plane->values[IGT_PLANE_ROTATION ],NULL ); - plane->rotation = (igt_rotation_t )prop_value; + +/* Clear any residual framebuffer on first commit. */ +igt_plane_set_prop_changed (plane,IGT_PLANE_FB_ID ); +igt_plane_set_prop_changed (plane,IGT_PLANE_CRTC_ID ); }/*
@@ -1805,9 +1806,6 @@ void igt_display_init(igt_display_t *display, int drm_fd) pipe->n_planes = n_planes; -for_each_plane_on_pipe (display, i, plane) - plane->fb_changed = true; - pipe->mode_changed = true; }
@@ -2070,18 +2068,7 @@ bool igt_pipe_get_property(igt_pipe_t *pipe, const char *name,static uint32_t igt_plane_get_fb_id (igt_plane_t *plane) { -if (plane->fb) -return plane->fb->fb_id; -else -return 0 ; -} - -static uint32_t igt_plane_get_fb_gem_handle (igt_plane_t *plane) -{ -if (plane->fb) -return plane->fb->gem_handle; -else -return 0 ; +return plane->values[IGT_PLANE_FB_ID ]; }#define CHECK_RETURN (r, fail) { \
@@ -2090,9 +2077,6 @@ static uint32_t igt_plane_get_fb_gem_handle(igt_plane_t *plane)igt_assert_eq (r,0 ); \ } - - -/* * Add position and fb changes of a plane to the atomic property set */
@@ -2101,63 +2085,31 @@ igt_atomic_prepare_plane_commit(igt_plane_t *plane, igt_pipe_t *pipe, drmModeAtomicReq *req) {igt_display_t *display = pipe->display; -uint32_t fb_id, crtc_id; +int i;igt_assert (plane->drm_plane); -/* it's an error to try an unsupported feature */ -igt_assert (igt_plane_supports_rotation (plane) || - !plane->rotation_changed); - - fb_id =igt_plane_get_fb_id (plane); - crtc_id = pipe->crtc_id; -LOG (display,"populating plane data: %s.%d, fb %u\n" ,kmstest_pipe_name (pipe->pipe), plane->index, - fb_id); - -if (plane->fence_fd >=0 ) { -uint64_t fence_fd = (int64_t ) plane->fence_fd; -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_IN_FENCE_FD , fence_fd); - } +igt_plane_get_fb_id (plane)); -if (plane->fb_changed) { -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_ID , fb_id ? crtc_id :0 ); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_FB_ID , fb_id); - } - -if (plane->position_changed || plane->size_changed) { -uint32_t src_x =IGT_FIXED (plane->src_x,0 );/* src_x */ -uint32_t src_y =IGT_FIXED (plane->src_y,0 );/* src_y */ -uint32_t src_w =IGT_FIXED (plane->src_w,0 );/* src_w */ -uint32_t src_h =IGT_FIXED (plane->src_h,0 );/* src_h */ -int32_t crtc_x = plane->crtc_x; -int32_t crtc_y = plane->crtc_y; -uint32_t crtc_w = plane->crtc_w; -uint32_t crtc_h = plane->crtc_h; +for (i =0 ; i <IGT_NUM_PLANE_PROPS ; i++) { +if (!igt_plane_is_prop_changed (plane, i)) +continue ; -LOG (display, -"src = (%d, %d) %u x %u " -"dst = (%d, %d) %u x %u\n" , - src_x >>16 , src_y >>16 , src_w >>16 , src_h >>16 , - crtc_x, crtc_y, crtc_w, crtc_h); +/* it's an error to try an unsupported feature */ +igt_assert (plane->props[i]); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_X , src_x); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_Y , src_y); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_W , src_w); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_SRC_H , src_h); +igt_debug ("plane %s.%d: Setting property \"%s\" to 0x%" PRIx64"/%" PRIi64"\n" , +kmstest_pipe_name (pipe->pipe), plane->index, igt_plane_prop_names[i], + plane->values[i], plane->values[i]); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_X , crtc_x); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_Y , crtc_y); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_W , crtc_w); -igt_atomic_populate_plane_req (req, plane,IGT_PLANE_CRTC_H , crtc_h); +igt_assert_lt (0 ,drmModeAtomicAddProperty (req, plane->drm_plane->plane_id, + plane->props[i], + plane->values[i])); } - -if (plane->rotation_changed) -igt_atomic_populate_plane_req (req, plane, -IGT_PLANE_ROTATION , plane->rotation); }
@@ -2183,17 +2135,20 @@ static int igt_drm_plane_commit(igt_plane_t *plane,int32_t crtc_y;uint32_t crtc_w;uint32_t crtc_h; +bool setplane = +igt_plane_is_prop_changed (plane,IGT_PLANE_FB_ID ) || + plane->changed &IGT_PLANE_COORD_CHANGED_MASK ;igt_assert (plane->drm_plane);/* it's an error to try an unsupported feature */ igt_assert (igt_plane_supports_rotation (plane) || - !plane->rotation_changed); + !igt_plane_is_prop_changed (plane,IGT_PLANE_ROTATION )); fb_id =igt_plane_get_fb_id (plane); crtc_id = pipe->crtc_id; -if ((plane->fb_changed || plane->size_changed) && fb_id ==0 ) { +if (setplane && fb_id ==0 ) { LOG(display, "SetPlane pipe %s, plane %d, disabling\n", kmstest_pipe_name(pipe->pipe),
@@ -2212,16 +2167,15 @@ static int igt_drm_plane_commit(igt_plane_t *plane, IGT_FIXED(0,0) /* src_h */);CHECK_RETURN (ret, fail_on_error); - }else if (plane->fb_changed || plane->position_changed || - plane->size_changed) { - src_x =IGT_FIXED (plane->src_x,0 );/* src_x */ - src_y =IGT_FIXED (plane->src_y,0 );/* src_y */ - src_w =IGT_FIXED (plane->src_w,0 );/* src_w */ - src_h =IGT_FIXED (plane->src_h,0 );/* src_h */ - crtc_x = plane->crtc_x; - crtc_y = plane->crtc_y; - crtc_w = plane->crtc_w; - crtc_h = plane->crtc_h; + }else if (setplane) { + src_x = plane->values[IGT_PLANE_SRC_X ]; + src_y = plane->values[IGT_PLANE_SRC_Y ]; + src_w = plane->values[IGT_PLANE_SRC_W ]; + src_h = plane->values[IGT_PLANE_SRC_H ]; + crtc_x = plane->values[IGT_PLANE_CRTC_X ]; + crtc_y = plane->values[IGT_PLANE_CRTC_Y ]; + crtc_w = plane->values[IGT_PLANE_CRTC_W ]; + crtc_h = plane->values[IGT_PLANE_CRTC_H ];LOG (display, "SetPlane %s.%d, fb %u, src = (%d, %d) "
@@ -2245,9 +2199,10 @@ static int igt_drm_plane_commit(igt_plane_t *plane,CHECK_RETURN (ret, fail_on_error); } -if (plane->rotation_changed) { - ret =igt_plane_set_property (plane, plane->rotation_property, - plane->rotation); +if (igt_plane_is_prop_changed (plane,IGT_PLANE_ROTATION )) { + ret =igt_plane_set_property (plane, + plane->props[IGT_PLANE_ROTATION ], + plane->values[IGT_PLANE_ROTATION ]);CHECK_RETURN (ret, fail_on_error); }
@@ -2269,35 +2224,30 @@ static int igt_cursor_commit_legacy(igt_plane_t *cursor,uint32_t crtc_id = pipe->crtc_id;int ret; -if (cursor->fb_changed) { -uint32_t gem_handle =igt_plane_get_fb_gem_handle (cursor); - -if (gem_handle) { +if (igt_plane_is_prop_changed (cursor,IGT_PLANE_FB_ID )) { +if (cursor->gem_handle)LOG (display,"SetCursor pipe %s, fb %u %dx%d\n" ,kmstest_pipe_name (pipe->pipe), - gem_handle, - cursor->crtc_w, cursor->crtc_h); - - ret =drmModeSetCursor (display->drm_fd, crtc_id, - gem_handle, - cursor->crtc_w, - cursor->crtc_h); - }else { + cursor->gem_handle, + (unsigned )cursor->values[IGT_PLANE_CRTC_W ], + (unsigned )cursor->values[IGT_PLANE_CRTC_H ]); +else LOG (display,"SetCursor pipe %s, disabling\n" ,kmstest_pipe_name (pipe->pipe)); - ret =drmModeSetCursor (display->drm_fd, crtc_id, -0 ,0 ,0 ); - } - + ret =drmModeSetCursor (display->drm_fd, crtc_id, + cursor->gem_handle, + cursor->values[IGT_PLANE_CRTC_W ], + cursor->values[IGT_PLANE_CRTC_H ]);CHECK_RETURN (ret, fail_on_error); } -if (cursor->position_changed) { -int x = cursor->crtc_x; -int y = cursor->crtc_y; +if (igt_plane_is_prop_changed (cursor,IGT_PLANE_CRTC_X ) || +igt_plane_is_prop_changed (cursor,IGT_PLANE_CRTC_Y )) { +int x = cursor->values[IGT_PLANE_CRTC_X ]; +int y = cursor->values[IGT_PLANE_CRTC_Y ]; LOG(display, "MoveCursor pipe %s, (%d, %d)\n",
@@ -2326,13 +2276,14 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,int ret;/* Primary planes can't be windowed when using a legacy commit */ -igt_assert ((primary->crtc_x ==0 && primary->crtc_y ==0 )); +igt_assert ((primary->values[IGT_PLANE_CRTC_X ] ==0 && primary->values[IGT_PLANE_CRTC_Y ] ==0 ));/* nor rotated */ -igt_assert (!primary->rotation_changed); +igt_assert (!igt_plane_is_prop_changed (primary,IGT_PLANE_ROTATION )); -if (!primary->fb_changed && !primary->position_changed && - !primary->size_changed && !primary->pipe->mode_changed) +if (!igt_plane_is_prop_changed (primary,IGT_PLANE_FB_ID ) && + !(primary->changed &IGT_PLANE_COORD_CHANGED_MASK ) && + !primary->pipe->mode_changed)return 0 ; crtc_id = pipe->crtc_id;
@@ -2343,19 +2294,22 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary, mode =NULL ;if (fb_id) { +uint32_t src_x = primary->values[IGT_PLANE_SRC_X ] >>16 ; +uint32_t src_y = primary->values[IGT_PLANE_SRC_Y ] >>16 ; +LOG (display,"%s: SetCrtc pipe %s, fb %u, src (%d, %d), " "mode %dx%d\n" ,igt_output_name (output),kmstest_pipe_name (pipe->pipe), fb_id, - primary->src_x, primary->src_y, + src_x, src_y, mode->hdisplay, mode->vdisplay); ret =drmModeSetCrtc (display->drm_fd, crtc_id, fb_id, - primary->src_x, primary->src_y, + src_x, src_y, &output->id,1 , mode);
@@ -2608,18 +2562,27 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s) }for_each_plane_on_pipe (display, pipe, plane) { - plane->fb_changed = false; - plane->position_changed = false; - plane->size_changed = false; +if (s ==COMMIT_ATOMIC ) { +int fd; + plane->changed =0 ; -if (s !=COMMIT_LEGACY || - !(plane->type ==DRM_PLANE_TYPE_PRIMARY || - plane->type ==DRM_PLANE_TYPE_CURSOR )) - plane->rotation_changed = false; + fd = plane->values[IGT_PLANE_IN_FENCE_FD ]; +if (fd !=-1 ) +close (fd); -if (s ==COMMIT_ATOMIC )/* reset fence_fd to prevent it from being set for the next commit */ -igt_plane_set_fence_fd (plane,-1 ); + plane->values[IGT_PLANE_IN_FENCE_FD ] =-1 ; + }else { + plane->changed &= ~IGT_PLANE_COORD_CHANGED_MASK ; + +igt_plane_clear_prop_changed (plane,IGT_PLANE_CRTC_ID ); +igt_plane_clear_prop_changed (plane,IGT_PLANE_FB_ID ); + +if (s !=COMMIT_LEGACY || + !(plane->type ==DRM_PLANE_TYPE_PRIMARY || + plane->type ==DRM_PLANE_TYPE_CURSOR )) +igt_plane_clear_prop_changed (plane,IGT_PLANE_ROTATION ); + } } }
@@ -2913,30 +2876,31 @@ void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb)LOG (display,"%s.%d: plane_set_fb(%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, fb ? fb->fb_id :0 ); - plane->fb = fb; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_ID , fb ? pipe->crtc_id :0 ); +igt_plane_set_prop_value (plane,IGT_PLANE_FB_ID , fb ? fb->fb_id :0 ); + +if (plane->type ==DRM_PLANE_TYPE_CURSOR && fb) + plane->gem_handle = fb->gem_handle; +else + plane->gem_handle =0 ; +/* hack to keep tests working that don't call igt_plane_set_size() */ if (fb) {/* set default plane size as fb size */ - plane->crtc_w = fb->width; - plane->crtc_h = fb->height; +igt_plane_set_position (plane,0 ,0 ); +igt_plane_set_size (plane, fb->width, fb->height);/* set default src pos/size as fb size */ - plane->src_x =0 ; - plane->src_y =0 ; - plane->src_w = fb->width; - plane->src_h = fb->height; +igt_fb_set_position (fb, plane,0 ,0 ); +igt_fb_set_size (fb, plane, fb->width, fb->height); }else { - plane->src_x =0 ; - plane->src_y =0 ; - plane->src_w =0 ; - plane->src_h =0 ; +igt_plane_set_position (plane,0 ,0 ); +igt_plane_set_size (plane,0 ,0 ); - plane->crtc_w =0 ; - plane->crtc_h =0 ; +/* set default src pos/size as fb size */ +igt_fb_set_position (fb, plane,0 ,0 ); +igt_fb_set_size (fb, plane,0 ,0 ); } - - plane->fb_changed = true; - plane->size_changed = true; }/**
@@ -2949,12 +2913,19 @@ void igt_plane_set_fb(igt_plane_t *plane, struct igt_fb *fb)*/ void igt_plane_set_fence_fd (igt_plane_t *plane,int fence_fd) { -close (plane->fence_fd); +int64_t fd; -if (fcntl (fence_fd,F_GETFD ) !=-1 ) - plane->fence_fd =dup (fence_fd); -else - plane->fence_fd =-1 ; + fd = plane->values[IGT_PLANE_IN_FENCE_FD ]; +if (fd !=-1 ) +close (fd); + +if (fence_fd !=-1 ) { + fd =dup (fence_fd); +igt_fail_on (fd ==-1 ); + }else + fd =-1 ; + +igt_plane_set_prop_value (plane,IGT_PLANE_IN_FENCE_FD , fd); }void igt_plane_set_position (igt_plane_t *plane,int x,int y)
@@ -2965,10 +2936,8 @@ void igt_plane_set_position(igt_plane_t *plane, int x, int y)LOG (display,"%s.%d: plane_set_position(%d,%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, x, y); - plane->crtc_x = x; - plane->crtc_y = y; - - plane->position_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_X , x); +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_Y , y); }/**
@@ -2989,10 +2958,8 @@ void igt_plane_set_size(igt_plane_t *plane, int w, int h)LOG (display,"%s.%d: plane_set_size (%dx%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, w, h); - plane->crtc_w = w; - plane->crtc_h = h; - - plane->size_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_W , w); +igt_plane_set_prop_value (plane,IGT_PLANE_CRTC_H , h); }/**
@@ -3014,10 +2981,8 @@ void igt_fb_set_position(struct igt_fb *fb, igt_plane_t *plane,LOG (display,"%s.%d: fb_set_position(%d,%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, x, y); - plane->src_x = x; - plane->src_y = y; - - plane->fb_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_X ,IGT_FIXED (x,0 )); +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_Y ,IGT_FIXED (y,0 )); }/**
@@ -3040,10 +3005,8 @@ void igt_fb_set_size(struct igt_fb *fb, igt_plane_t *plane,LOG (display,"%s.%d: fb_set_size(%dx%d)\n" ,kmstest_pipe_name (pipe->pipe), plane->index, w, h); - plane->src_w = w; - plane->src_h = h; - - plane->fb_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_W ,IGT_FIXED (w,0 )); +igt_plane_set_prop_value (plane,IGT_PLANE_SRC_H ,IGT_FIXED (h,0 )); }static const char *rotation_name (igt_rotation_t rotation)
@@ -3071,9 +3034,7 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)kmstest_pipe_name (pipe->pipe), plane->index, rotation_name(rotation)); - plane->rotation = rotation; - - plane->rotation_changed = true; +igt_plane_set_prop_value (plane,IGT_PLANE_ROTATION , rotation); }/**
lib/igt_kms.h +24 -35
90 lines not on this page · raw message
tests/kms_atomic_interruptible.c +6 -6
@@ -161,12 +161,12 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t/* connector: 1 prop */ output->props[IGT_CONNECTOR_CRTC_ID ],/* plane: remainder props */ - plane->atomic_props_plane[IGT_PLANE_CRTC_ID ], - plane->atomic_props_plane[IGT_PLANE_FB_ID ], - plane->atomic_props_plane[IGT_PLANE_SRC_W ], - plane->atomic_props_plane[IGT_PLANE_SRC_H ], - plane->atomic_props_plane[IGT_PLANE_CRTC_W ], - plane->atomic_props_plane[IGT_PLANE_CRTC_H ] + plane->props[IGT_PLANE_CRTC_ID ], + plane->props[IGT_PLANE_FB_ID ], + plane->props[IGT_PLANE_SRC_W ], + plane->props[IGT_PLANE_SRC_H ], + plane->props[IGT_PLANE_CRTC_W ], + plane->props[IGT_PLANE_CRTC_H ] };uint64_t prop_vals[] = { /* crtc */
tests/kms_plane_lowres.c +1 -1
@@ -227,8 +227,8 @@ test_setup(data_t *data, enum pipe pipe, uint64_t modifier, int flags,1.0 ,1.0 ,0.0 , &data->fb[i]); -igt_plane_set_position (data->plane[i], x, y);igt_plane_set_fb (data->plane[i], &data->fb[i]); +igt_plane_set_position (data->plane[i], x, y); }return mode;
tests/kms_rotation_crc.c +2 -2
@@ -122,11 +122,11 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,igt_plane_set_fb (primary, &data->fb_modeset);if (commit <COMMIT_ATOMIC ) { - primary->rotation_changed = false; +igt_plane_clear_prop_changed (primary,IGT_PLANE_ROTATION );igt_display_commit (display);if (plane->type ==DRM_PLANE_TYPE_PRIMARY ) - primary->rotation_changed = true; +igt_plane_set_prop_changed (primary,IGT_PLANE_ROTATION ); }igt_plane_set_fb (plane,NULL );
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 1/1 lib/igt_kms: Rework pipe properties to be more atomic, v4.1.
In the future I want to allow tests to commit more properties, but for this to work I have to fix all properties to work better with atomic commit. Instead of special casing each property make a bitmask for all property changed flags, and try to commit all properties.
This has been the most involved one, since legacy pipe commit still handles a lot of the properties differently from the rest.
Changes since v1:
- Dump all changed properties on commit.
- Fix bug in igt_pipe_refresh().
Changes since v2:
- Set pipe ACTIVE property changed flag on init. Changes since v3:
- Add a missing igt_pipe_refresh() to kms_atomic_interruptible.
---
Actually compiling now!
lib/igt_kms.c | 217 ++++++++++++++++++++------------------ lib/igt_kms.h | 77 ++++++-------- tests/kms_atomic_interruptible.c | 8 +- tests/kms_atomic_transition.c | 2 +- tests/kms_crtc_background_color.c | 2 +- 5 files changed, 151 insertions(+), 155 deletions(-)
lib/igt_kms.c +113 -104
@@ -259,8 +259,8 @@ igt_atomic_fill_connector_props(igt_display_t *display, igt_output_t *output, }static void -igt_atomic_fill_pipe_props (igt_display_t *display,igt_pipe_t *pipe, -int num_crtc_props,const char **crtc_prop_names) +igt_fill_pipe_props (igt_display_t *display,igt_pipe_t *pipe, +int num_crtc_props,const char **crtc_prop_names) {drmModeObjectPropertiesPtr props;int i, j, fd;
@@ -278,7 +278,7 @@ igt_atomic_fill_pipe_props(igt_display_t *display, igt_pipe_t *pipe,if (strcmp (prop->name, crtc_prop_names[j]) !=0 )continue ; - pipe->atomic_props_crtc[j] = props->props[i]; + pipe->props[j] = props->props[i];break ; }
@@ -1690,7 +1690,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)int p =1 ;int j, type;uint8_t last_plane =0 , n_planes =0 ; -uint64_t prop_value; pipe->crtc_id = resources->crtcs[i]; pipe->display = display;
@@ -1700,29 +1699,16 @@ void igt_display_init(igt_display_t *display, int drm_fd) pipe->planes =NULL ; pipe->out_fence_fd =-1 ; +igt_fill_pipe_props (display, pipe,IGT_NUM_CRTC_PROPS , igt_crtc_prop_names); + +/* Force modeset disable on first commit */ +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_MODE_ID ); +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_ACTIVE ); +get_crtc_property (display->drm_fd, pipe->crtc_id, -"background_color" , - &pipe->background_property, - &prop_value, +"background_color" ,NULL , + &pipe->values[IGT_CRTC_BACKGROUND ],NULL ); - pipe->background = (uint32_t )prop_value; -get_crtc_property (display->drm_fd, pipe->crtc_id, -"DEGAMMA_LUT" , - &pipe->degamma_property, -NULL , -NULL ); -get_crtc_property (display->drm_fd, pipe->crtc_id, -"CTM" , - &pipe->ctm_property, -NULL , -NULL ); -get_crtc_property (display->drm_fd, pipe->crtc_id, -"GAMMA_LUT" , - &pipe->gamma_property, -NULL , -NULL ); - -igt_atomic_fill_pipe_props (display, pipe,IGT_NUM_CRTC_PROPS , igt_crtc_prop_names);/* count number of valid planes */ for (j =0 ; j < plane_resources->count_planes; j++) {
@@ -1805,8 +1791,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)igt_assert_eq (p, n_planes); pipe->n_planes = n_planes; - - pipe->mode_changed = true; }/*
@@ -2283,7 +2267,7 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,if (!igt_plane_is_prop_changed (primary,IGT_PLANE_FB_ID ) && !(primary->changed &IGT_PLANE_COORD_CHANGED_MASK ) && - !primary->pipe->mode_changed) + !igt_pipe_obj_is_prop_changed (primary->pipe,IGT_CRTC_MODE_ID ))return 0 ; crtc_id = pipe->crtc_id;
@@ -2352,6 +2336,16 @@ static int igt_plane_commit(igt_plane_t *plane, } } +static bool is_atomic_prop (enum igt_atomic_crtc_properties prop) +{ +if (prop ==IGT_CRTC_MODE_ID || + prop ==IGT_CRTC_ACTIVE || + prop ==IGT_CRTC_OUT_FENCE_PTR ) +return true; + +return false; +} +/* * Commit all plane changes to an output. Note that if @s is COMMIT_LEGACY, * enabling/disabling the primary plane will also enable/disable the CRTC.
@@ -2369,19 +2363,9 @@ static int igt_pipe_commit(igt_pipe_t *pipe,int i;int ret; -if (pipe->background_changed) { -igt_crtc_set_property (pipe, pipe->background_property, - pipe->background); - } - -if (pipe->color_mgmt_changed) { -igt_crtc_set_property (pipe, pipe->degamma_property, - pipe->degamma_blob); -igt_crtc_set_property (pipe, pipe->ctm_property, - pipe->ctm_blob); -igt_crtc_set_property (pipe, pipe->gamma_property, - pipe->gamma_blob); - } +for (i =0 ; i <IGT_NUM_CRTC_PROPS ; i++) +if (!is_atomic_prop (i)) +igt_crtc_set_property (pipe, pipe->props[i], pipe->values[i]);for (i =0 ; i < pipe->n_planes; i++) {igt_plane_t *plane = &pipe->planes[i];
@@ -2394,9 +2378,10 @@ static int igt_pipe_commit(igt_pipe_t *pipe, }static void -igt_pipe_replace_blob (igt_pipe_t *pipe,uint64_t *blob,void *ptr,size_t length) +igt_pipe_replace_blob (igt_pipe_t *pipe,enum igt_atomic_crtc_properties prop,void *ptr,size_t length) {igt_display_t *display = pipe->display; +uint64_t *blob = &pipe->values[prop];uint32_t blob_id =0 ;if (*blob !=0 )
@@ -2408,6 +2393,7 @@ igt_pipe_replace_blob(igt_pipe_t *pipe, uint64_t *blob, void *ptr, size_t length ptr, length, &blob_id) == 0); *blob = blob_id; +igt_pipe_obj_set_prop_changed (pipe, prop); }/*
@@ -2415,51 +2401,23 @@ igt_pipe_replace_blob(igt_pipe_t *pipe, uint64_t *blob, void *ptr, size_t length*/ static void igt_atomic_prepare_crtc_commit (igt_pipe_t *pipe_obj,drmModeAtomicReq *req) { -if (pipe_obj->background_changed) -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_BACKGROUND , pipe_obj->background); - -if (pipe_obj->color_mgmt_changed) { -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_DEGAMMA_LUT , pipe_obj->degamma_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_CTM , pipe_obj->ctm_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_GAMMA_LUT , pipe_obj->gamma_blob); - } - -if (pipe_obj->mode_changed) { -igt_output_t *output =igt_pipe_get_output (pipe_obj); - -if (!output) { -igt_pipe_replace_blob (pipe_obj, &pipe_obj->mode_blob,NULL ,0 ); - -LOG (pipe_obj->display,"%s: Setting NULL mode\n" , -kmstest_pipe_name (pipe_obj->pipe)); - }else { -drmModeModeInfo *mode =igt_output_get_mode (output); +int i; -igt_pipe_replace_blob (pipe_obj, &pipe_obj->mode_blob, mode,sizeof (*mode)); +for (i =0 ; i <IGT_NUM_CRTC_PROPS ; i++) { +if (!igt_pipe_obj_is_prop_changed (pipe_obj, i)) +continue ; -LOG (pipe_obj->display,"%s: Setting mode %s from %s\n" , -kmstest_pipe_name (pipe_obj->pipe), - mode->name,igt_output_name (output)); - } +igt_debug ("Pipe %s: Setting property \"%s\" to 0x%" PRIx64"/%" PRIi64"\n" , +kmstest_pipe_name (pipe_obj->pipe), igt_crtc_prop_names[i], + pipe_obj->values[i], pipe_obj->values[i]); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_MODE_ID , pipe_obj->mode_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_ACTIVE , !!output); +igt_assert_lt (0 ,drmModeAtomicAddProperty (req, pipe_obj->crtc_id, pipe_obj->props[i], pipe_obj->values[i])); }if (pipe_obj->out_fence_fd !=-1 ) {close (pipe_obj->out_fence_fd); pipe_obj->out_fence_fd =-1 ; } - -if (pipe_obj->out_fence_requested) - { -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_OUT_FENCE_PTR , - (uint64_t )(uintptr_t ) &pipe_obj->out_fence_fd); - } - -/* -* TODO: Add all crtc level properties here -*/ }/*
@@ -2550,15 +2508,21 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)igt_pipe_t *pipe_obj = &display->pipes[pipe];igt_plane_t *plane; - pipe_obj->color_mgmt_changed = false; - pipe_obj->background_changed = false; +if (s ==COMMIT_ATOMIC ) { +if (igt_pipe_obj_is_prop_changed (pipe_obj,IGT_CRTC_OUT_FENCE_PTR )) +igt_assert (pipe_obj->out_fence_fd >=0 ); -if (s !=COMMIT_UNIVERSAL ) - pipe_obj->mode_changed = false; - -if (s ==COMMIT_ATOMIC && pipe_obj->out_fence_requested) { - pipe_obj->out_fence_requested = false; -igt_assert (pipe_obj->out_fence_fd >=0 ); + pipe_obj->changed =0 ; + }else { +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_BACKGROUND ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_CTM ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_DEGAMMA_LUT ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_GAMMA_LUT ); + +if (s !=COMMIT_UNIVERSAL ) { +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_ACTIVE ); + } }for_each_plane_on_pipe (display, pipe, plane) {
@@ -2812,33 +2776,83 @@ void igt_output_override_mode(igt_output_t *output, drmModeModeInfo *mode) output->use_override_mode = !!mode; -if (pipe) - pipe->mode_changed = true; +if (pipe) { +if (output->display->is_atomic) +igt_pipe_replace_blob (pipe,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (*mode)); +else +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_MODE_ID ); + } }void igt_output_set_pipe (igt_output_t *output,enum pipe pipe) {igt_display_t *display = output->display; -igt_pipe_t *old_pipe; +igt_pipe_t *old_pipe =NULL , *pipe_obj =NULL ;;igt_assert (output->name); -if (output->pending_pipe !=PIPE_NONE ) { +if (output->pending_pipe !=PIPE_NONE ) old_pipe =igt_output_get_driving_pipe (output); - old_pipe->mode_changed = true; - } +if (pipe !=PIPE_NONE ) + pipe_obj = &display->pipes[pipe];LOG (display,"%s: set_pipe(%s)\n" ,igt_output_name (output),kmstest_pipe_name (pipe)); output->pending_pipe = pipe; -if (pipe !=PIPE_NONE ) - display->pipes[pipe].mode_changed = true; +if (old_pipe) { +igt_output_t *old_output; + + old_output =igt_pipe_get_output (old_pipe); +if (!old_output) { +if (display->is_atomic) +igt_pipe_replace_blob (old_pipe,IGT_CRTC_MODE_ID ,NULL ,0 ); +else +igt_pipe_obj_set_prop_changed (old_pipe,IGT_CRTC_MODE_ID ); + +igt_pipe_obj_set_prop_value (old_pipe,IGT_CRTC_ACTIVE ,0 ); + } + }igt_output_set_prop_value (output,IGT_CONNECTOR_CRTC_ID , pipe ==PIPE_NONE ?0 : display->pipes[pipe].crtc_id);igt_output_refresh (output); + +if (pipe_obj) { +if (display->is_atomic) +igt_pipe_replace_blob (pipe_obj,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (drmModeModeInfo)); +else +igt_pipe_obj_set_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); + +igt_pipe_obj_set_prop_value (pipe_obj,IGT_CRTC_ACTIVE ,1 ); + } +} + +/* +* igt_pipe_refresh: +* @display: a pointer to an #igt_display_t structure +* @pipe: Pipe to refresh +* @force: Should be set to true if mode_blob is no longer considered +* to be valid, for example after doing an atomic commit during fork or closing display fd. +* +* Requests the pipe to be part of the state on next update. +* This is useful when state may have been out of sync after +* a fork, or we just want to be sure the pipe is included +* in the next commit. +*/ +void igt_pipe_refresh (igt_display_t *display,enum pipe pipe,bool force) +{ +igt_pipe_t *pipe_obj = &display->pipes[pipe]; + +if (force && display->is_atomic) { +igt_output_t *output =igt_pipe_get_output (pipe_obj); + + pipe_obj->values[IGT_CRTC_MODE_ID ] =0 ; +if (output) +igt_pipe_replace_blob (pipe_obj,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (drmModeModeInfo)); + }else +igt_pipe_obj_set_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); }void igt_output_set_scaling_mode (igt_output_t *output,uint64_t scaling_mode)
@@ -3046,28 +3060,25 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)*/ void igt_pipe_request_out_fence (igt_pipe_t *pipe) { - pipe->out_fence_requested = true; +igt_pipe_obj_set_prop_value (pipe,IGT_CRTC_OUT_FENCE_PTR , (ptrdiff_t )&pipe->out_fence_fd); }void igt_pipe_set_degamma_lut (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->degamma_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_DEGAMMA_LUT , ptr, length); }void igt_pipe_set_ctm_matrix (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->ctm_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_CTM , ptr, length); }void igt_pipe_set_gamma_lut (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->gamma_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_GAMMA_LUT , ptr, length); }/**
@@ -3088,9 +3099,7 @@ void igt_crtc_set_background(igt_pipe_t *pipe, uint64_t background)kmstest_pipe_name (pipe->pipe), pipe->pipe, background); - pipe->background = background; - - pipe->background_changed = true; +igt_pipe_obj_set_prop_value (pipe,IGT_CRTC_BACKGROUND , background); }void igt_wait_for_vblank_count (int drm_fd,enum pipe pipe,int count)
lib/igt_kms.h +30 -47
100 lines not on this page · raw message
tests/kms_atomic_interruptible.c +6 -2
@@ -156,8 +156,8 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_tuint32_t count_props[3 ] = {2 ,1 ,6 };uint32_t props[] = {/* crtc: 2 props */ - plane->pipe->atomic_props_crtc[IGT_CRTC_MODE_ID ], - plane->pipe->atomic_props_crtc[IGT_CRTC_ACTIVE ], + plane->pipe->props[IGT_CRTC_MODE_ID ], + plane->pipe->props[IGT_CRTC_ACTIVE ],/* connector: 1 prop */ output->props[IGT_CONNECTOR_CRTC_ID ],/* plane: remainder props */
@@ -253,6 +253,10 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_tigt_waitchildren (); +/* The mode is unset by the forked helper, force a refresh here */ +if (test_type == test_legacy_modeset || test_type == test_atomic_modeset) +igt_pipe_refresh (display, pipe, true); +igt_plane_set_fb (plane,NULL );igt_plane_set_fb (primary,NULL );igt_output_set_pipe (output,PIPE_NONE );
tests/kms_atomic_transition.c +1 -1
@@ -633,7 +633,7 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct idrmModeModeInfo *mode =NULL ;if (!(mask & (1 << pipe))) { -if (display->pipes[pipe].mode_blob) { +if (igt_pipe_is_prop_changed (display, pipe,IGT_CRTC_ACTIVE )) { event_mask |=1 << pipe;igt_plane_set_fb (plane,NULL ); }
tests/kms_crtc_background_color.c +1 -1
@@ -137,7 +137,7 @@ static void test_crtc_background(data_t *data)igt_output_set_pipe (output, pipe); plane =igt_output_get_plane_type (output,DRM_PLANE_TYPE_PRIMARY ); -igt_require (plane->pipe->background_property); +igt_require (plane->pipe->props[IGT_CRTC_BACKGROUND ]);prepare_crtc (data, output, pipe, plane,1 ,PURPLE ,BLACK64 );
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 6/8 lib/igt_kms: Rework pipe properties to be more atomic, v2.
In reply to Maarten LankhorstIn the future I want to allow tests to commit more properties, but for this to work I have to fix all properties to work better with atomic commit. Instead of special casing each property make a bitmask for all property changed flags, and try to commit all properties.
This has been the most involved one, since legacy pipe commit still handles a lot of the properties differently from the rest.
Changes since v1:
- Dump all changed properties on commit.
- Fix bug in igt_pipe_refresh().
--- lib/igt_kms.c | 213 ++++++++++++++++++++------------------ lib/igt_kms.h | 77 ++++++-------- tests/kms_atomic_interruptible.c | 4 +- tests/kms_atomic_transition.c | 2 +- tests/kms_crtc_background_color.c | 2 +- 5 files changed, 144 insertions(+), 154 deletions(-)
lib/igt_kms.c +110 -103
@@ -259,8 +259,8 @@ igt_atomic_fill_connector_props(igt_display_t *display, igt_output_t *output, }static void -igt_atomic_fill_pipe_props (igt_display_t *display,igt_pipe_t *pipe, -int num_crtc_props,const char **crtc_prop_names) +igt_fill_pipe_props (igt_display_t *display,igt_pipe_t *pipe, +int num_crtc_props,const char **crtc_prop_names) {drmModeObjectPropertiesPtr props;int i, j, fd;
@@ -278,7 +278,7 @@ igt_atomic_fill_pipe_props(igt_display_t *display, igt_pipe_t *pipe,if (strcmp (prop->name, crtc_prop_names[j]) !=0 )continue ; - pipe->atomic_props_crtc[j] = props->props[i]; + pipe->props[j] = props->props[i];break ; }
@@ -1690,7 +1690,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)int p =1 ;int j, type;uint8_t last_plane =0 , n_planes =0 ; -uint64_t prop_value; pipe->crtc_id = resources->crtcs[i]; pipe->display = display;
@@ -1700,29 +1699,12 @@ void igt_display_init(igt_display_t *display, int drm_fd) pipe->planes =NULL ; pipe->out_fence_fd =-1 ; +igt_fill_pipe_props (display, pipe,IGT_NUM_CRTC_PROPS , igt_crtc_prop_names); +get_crtc_property (display->drm_fd, pipe->crtc_id, -"background_color" , - &pipe->background_property, - &prop_value, +"background_color" ,NULL , + &pipe->values[IGT_CRTC_BACKGROUND ],NULL ); - pipe->background = (uint32_t )prop_value; -get_crtc_property (display->drm_fd, pipe->crtc_id, -"DEGAMMA_LUT" , - &pipe->degamma_property, -NULL , -NULL ); -get_crtc_property (display->drm_fd, pipe->crtc_id, -"CTM" , - &pipe->ctm_property, -NULL , -NULL ); -get_crtc_property (display->drm_fd, pipe->crtc_id, -"GAMMA_LUT" , - &pipe->gamma_property, -NULL , -NULL ); - -igt_atomic_fill_pipe_props (display, pipe,IGT_NUM_CRTC_PROPS , igt_crtc_prop_names);/* count number of valid planes */ for (j =0 ; j < plane_resources->count_planes; j++) {
@@ -1807,7 +1789,7 @@ void igt_display_init(igt_display_t *display, int drm_fd)igt_plane_set_prop_changed (plane,IGT_PLANE_CRTC_ID ); } - pipe->mode_changed = true; +igt_pipe_refresh (display, i, false); }/*
@@ -2284,7 +2266,7 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,if (!igt_plane_is_prop_changed (primary,IGT_PLANE_FB_ID ) && !(primary->changed &IGT_PLANE_COORD_CHANGED_MASK ) && - !primary->pipe->mode_changed) + !igt_pipe_obj_is_prop_changed (primary->pipe,IGT_CRTC_MODE_ID ))return 0 ; crtc_id = pipe->crtc_id;
@@ -2353,6 +2335,16 @@ static int igt_plane_commit(igt_plane_t *plane, } } +static bool is_atomic_prop (enum igt_atomic_crtc_properties prop) +{ +if (prop ==IGT_CRTC_MODE_ID || + prop ==IGT_CRTC_ACTIVE || + prop ==IGT_CRTC_OUT_FENCE_PTR ) +return true; + +return false; +} +/* * Commit all plane changes to an output. Note that if @s is COMMIT_LEGACY, * enabling/disabling the primary plane will also enable/disable the CRTC.
@@ -2370,19 +2362,9 @@ static int igt_pipe_commit(igt_pipe_t *pipe,int i;int ret; -if (pipe->background_changed) { -igt_crtc_set_property (pipe, pipe->background_property, - pipe->background); - } - -if (pipe->color_mgmt_changed) { -igt_crtc_set_property (pipe, pipe->degamma_property, - pipe->degamma_blob); -igt_crtc_set_property (pipe, pipe->ctm_property, - pipe->ctm_blob); -igt_crtc_set_property (pipe, pipe->gamma_property, - pipe->gamma_blob); - } +for (i =0 ; i <IGT_NUM_CRTC_PROPS ; i++) +if (!is_atomic_prop (i)) +igt_crtc_set_property (pipe, pipe->props[i], pipe->values[i]);for (i =0 ; i < pipe->n_planes; i++) {igt_plane_t *plane = &pipe->planes[i];
@@ -2395,9 +2377,10 @@ static int igt_pipe_commit(igt_pipe_t *pipe, }static void -igt_pipe_replace_blob (igt_pipe_t *pipe,uint64_t *blob,void *ptr,size_t length) +igt_pipe_replace_blob (igt_pipe_t *pipe,enum igt_atomic_crtc_properties prop,void *ptr,size_t length) {igt_display_t *display = pipe->display; +uint64_t *blob = &pipe->values[prop];uint32_t blob_id =0 ;if (*blob !=0 )
@@ -2409,6 +2392,7 @@ igt_pipe_replace_blob(igt_pipe_t *pipe, uint64_t *blob, void *ptr, size_t length ptr, length, &blob_id) == 0); *blob = blob_id; +igt_pipe_obj_set_prop_changed (pipe, prop); }/*
@@ -2416,51 +2400,23 @@ igt_pipe_replace_blob(igt_pipe_t *pipe, uint64_t *blob, void *ptr, size_t length*/ static void igt_atomic_prepare_crtc_commit (igt_pipe_t *pipe_obj,drmModeAtomicReq *req) { -if (pipe_obj->background_changed) -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_BACKGROUND , pipe_obj->background); - -if (pipe_obj->color_mgmt_changed) { -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_DEGAMMA_LUT , pipe_obj->degamma_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_CTM , pipe_obj->ctm_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_GAMMA_LUT , pipe_obj->gamma_blob); - } - -if (pipe_obj->mode_changed) { -igt_output_t *output =igt_pipe_get_output (pipe_obj); - -if (!output) { -igt_pipe_replace_blob (pipe_obj, &pipe_obj->mode_blob,NULL ,0 ); - -LOG (pipe_obj->display,"%s: Setting NULL mode\n" , -kmstest_pipe_name (pipe_obj->pipe)); - }else { -drmModeModeInfo *mode =igt_output_get_mode (output); +int i; -igt_pipe_replace_blob (pipe_obj, &pipe_obj->mode_blob, mode,sizeof (*mode)); +for (i =0 ; i <IGT_NUM_CRTC_PROPS ; i++) { +if (!igt_pipe_obj_is_prop_changed (pipe_obj, i)) +continue ; -LOG (pipe_obj->display,"%s: Setting mode %s from %s\n" , -kmstest_pipe_name (pipe_obj->pipe), - mode->name,igt_output_name (output)); - } +igt_debug ("Pipe %s: Setting property \"%s\" to 0x%" PRIx64"/%" PRIi64"\n" , +kmstest_pipe_name (pipe_obj->pipe), igt_crtc_prop_names[i], + pipe_obj->values[i], pipe_obj->values[i]); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_MODE_ID , pipe_obj->mode_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_ACTIVE , !!output); +igt_assert_lt (0 ,drmModeAtomicAddProperty (req, pipe_obj->crtc_id, pipe_obj->props[i], pipe_obj->values[i])); }if (pipe_obj->out_fence_fd !=-1 ) {close (pipe_obj->out_fence_fd); pipe_obj->out_fence_fd =-1 ; } - -if (pipe_obj->out_fence_requested) - { -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_OUT_FENCE_PTR , - (uint64_t )(uintptr_t ) &pipe_obj->out_fence_fd); - } - -/* -* TODO: Add all crtc level properties here -*/ }/*
@@ -2551,15 +2507,21 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)igt_pipe_t *pipe_obj = &display->pipes[pipe];igt_plane_t *plane; - pipe_obj->color_mgmt_changed = false; - pipe_obj->background_changed = false; - -if (s !=COMMIT_UNIVERSAL ) - pipe_obj->mode_changed = false; +if (s ==COMMIT_ATOMIC ) { +if (igt_pipe_obj_is_prop_changed (pipe_obj,IGT_CRTC_OUT_FENCE_PTR )) +igt_assert (pipe_obj->out_fence_fd >=0 ); -if (s ==COMMIT_ATOMIC && pipe_obj->out_fence_requested) { - pipe_obj->out_fence_requested = false; -igt_assert (pipe_obj->out_fence_fd >=0 ); + pipe_obj->changed =0 ; + }else { +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_BACKGROUND ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_CTM ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_DEGAMMA_LUT ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_GAMMA_LUT ); + +if (s !=COMMIT_UNIVERSAL ) { +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_ACTIVE ); + } }for_each_plane_on_pipe (display, pipe, plane) {
@@ -2813,33 +2775,83 @@ void igt_output_override_mode(igt_output_t *output, drmModeModeInfo *mode) output->use_override_mode = !!mode; -if (pipe) - pipe->mode_changed = true; +if (pipe) { +if (output->display->is_atomic) +igt_pipe_replace_blob (pipe,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (*mode)); +else +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_MODE_ID ); + } }void igt_output_set_pipe (igt_output_t *output,enum pipe pipe) {igt_display_t *display = output->display; -igt_pipe_t *old_pipe; +igt_pipe_t *old_pipe =NULL , *pipe_obj =NULL ;;igt_assert (output->name); -if (output->pending_pipe !=PIPE_NONE ) { +if (output->pending_pipe !=PIPE_NONE ) old_pipe =igt_output_get_driving_pipe (output); - old_pipe->mode_changed = true; - } +if (pipe !=PIPE_NONE ) + pipe_obj = &display->pipes[pipe];LOG (display,"%s: set_pipe(%s)\n" ,igt_output_name (output),kmstest_pipe_name (pipe)); output->pending_pipe = pipe; -if (pipe !=PIPE_NONE ) - display->pipes[pipe].mode_changed = true; +if (old_pipe) { +igt_output_t *old_output; + + old_output =igt_pipe_get_output (old_pipe); +if (!old_output) { +if (display->is_atomic) +igt_pipe_replace_blob (old_pipe,IGT_CRTC_MODE_ID ,NULL ,0 ); +else +igt_pipe_obj_set_prop_changed (old_pipe,IGT_CRTC_MODE_ID ); + +igt_pipe_obj_set_prop_value (old_pipe,IGT_CRTC_ACTIVE ,0 ); + } + }igt_output_set_prop_value (output,IGT_CONNECTOR_CRTC_ID , pipe ==PIPE_NONE ?0 : display->pipes[pipe].crtc_id);igt_output_refresh (output); + +if (pipe_obj) { +if (display->is_atomic) +igt_pipe_replace_blob (pipe_obj,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (drmModeModeInfo)); +else +igt_pipe_obj_set_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); + +igt_pipe_obj_set_prop_value (pipe_obj,IGT_CRTC_ACTIVE ,1 ); + } +} + +/* +* igt_pipe_refresh: +* @display: a pointer to an #igt_display_t structure +* @pipe: Pipe to refresh +* @force: Should be set to true if mode_blob is no longer considered +* to be valid, for example after doing an atomic commit during fork or closing display fd. +* +* Requests the pipe to be part of the state on next update. +* This is useful when state may have been out of sync after +* a fork, or we just want to be sure the pipe is included +* in the next commit. +*/ +void igt_pipe_refresh (igt_display_t *display,enum pipe pipe,bool force) +{ +igt_pipe_t *pipe_obj = &display->pipes[pipe]; + +if (force && display->is_atomic) { +igt_output_t *output =igt_pipe_get_output (pipe_obj); + + pipe_obj->values[IGT_CRTC_MODE_ID ] =0 ; +if (output) +igt_pipe_replace_blob (pipe_obj,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (drmModeModeInfo)); + }else +igt_pipe_obj_set_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); }void igt_output_set_scaling_mode (igt_output_t *output,uint64_t scaling_mode)
@@ -3047,28 +3059,25 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)*/ void igt_pipe_request_out_fence (igt_pipe_t *pipe) { - pipe->out_fence_requested = true; +igt_pipe_obj_set_prop_value (pipe,IGT_CRTC_OUT_FENCE_PTR , (ptrdiff_t )&pipe->out_fence_fd); }void igt_pipe_set_degamma_lut (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->degamma_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_DEGAMMA_LUT , ptr, length); }void igt_pipe_set_ctm_matrix (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->ctm_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_CTM , ptr, length); }void igt_pipe_set_gamma_lut (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->gamma_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_GAMMA_LUT , ptr, length); }/**
@@ -3089,9 +3098,7 @@ void igt_crtc_set_background(igt_pipe_t *pipe, uint64_t background)kmstest_pipe_name (pipe->pipe), pipe->pipe, background); - pipe->background = background; - - pipe->background_changed = true; +igt_pipe_obj_set_prop_value (pipe,IGT_CRTC_BACKGROUND , background); }void igt_wait_for_vblank_count (int drm_fd,enum pipe pipe,int count)
lib/igt_kms.h +30 -47
100 lines not on this page · raw message
tests/kms_atomic_interruptible.c +2 -2
@@ -156,8 +156,8 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_tuint32_t count_props[3 ] = {2 ,1 ,6 };uint32_t props[] = {/* crtc: 2 props */ - plane->pipe->atomic_props_crtc[IGT_CRTC_MODE_ID ], - plane->pipe->atomic_props_crtc[IGT_CRTC_ACTIVE ], + plane->pipe->props[IGT_CRTC_MODE_ID ], + plane->pipe->props[IGT_CRTC_ACTIVE ],/* connector: 1 prop */ output->props[IGT_CONNECTOR_CRTC_ID ],/* plane: remainder props */
tests/kms_atomic_transition.c +1 -1
@@ -633,7 +633,7 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct idrmModeModeInfo *mode =NULL ;if (!(mask & (1 << pipe))) { -if (display->pipes[pipe].mode_blob) { +if (igt_pipe_is_prop_changed (display, pipe,IGT_CRTC_ACTIVE )) { event_mask |=1 << pipe;igt_plane_set_fb (plane,NULL ); }
tests/kms_crtc_background_color.c +1 -1
@@ -137,7 +137,7 @@ static void test_crtc_background(data_t *data)igt_output_set_pipe (output, pipe); plane =igt_output_get_plane_type (output,DRM_PLANE_TYPE_PRIMARY ); -igt_require (plane->pipe->background_property); +igt_require (plane->pipe->props[IGT_CRTC_BACKGROUND ]);prepare_crtc (data, output, pipe, plane,1 ,PURPLE ,BLACK64 );
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 6/8 lib/igt_kms: Rework pipe properties to be more atomic, v3.
In the future I want to allow tests to commit more properties, but for this to work I have to fix all properties to work better with atomic commit. Instead of special casing each property make a bitmask for all property changed flags, and try to commit all properties.
This has been the most involved one, since legacy pipe commit still handles a lot of the properties differently from the rest.
Changes since v1:
- Dump all changed properties on commit.
- Fix bug in igt_pipe_refresh().
Changes since v2:
- Set pipe ACTIVE property changed flag on init.
--- lib/igt_kms.c | 217 ++++++++++++++++++++------------------ lib/igt_kms.h | 77 ++++++-------- tests/kms_atomic_interruptible.c | 4 +- tests/kms_atomic_transition.c | 2 +- tests/kms_crtc_background_color.c | 2 +- 5 files changed, 147 insertions(+), 155 deletions(-)
lib/igt_kms.c +113 -104
@@ -259,8 +259,8 @@ igt_atomic_fill_connector_props(igt_display_t *display, igt_output_t *output, }static void -igt_atomic_fill_pipe_props (igt_display_t *display,igt_pipe_t *pipe, -int num_crtc_props,const char **crtc_prop_names) +igt_fill_pipe_props (igt_display_t *display,igt_pipe_t *pipe, +int num_crtc_props,const char **crtc_prop_names) {drmModeObjectPropertiesPtr props;int i, j, fd;
@@ -278,7 +278,7 @@ igt_atomic_fill_pipe_props(igt_display_t *display, igt_pipe_t *pipe,if (strcmp (prop->name, crtc_prop_names[j]) !=0 )continue ; - pipe->atomic_props_crtc[j] = props->props[i]; + pipe->props[j] = props->props[i];break ; }
@@ -1690,7 +1690,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)int p =1 ;int j, type;uint8_t last_plane =0 , n_planes =0 ; -uint64_t prop_value; pipe->crtc_id = resources->crtcs[i]; pipe->display = display;
@@ -1700,29 +1699,16 @@ void igt_display_init(igt_display_t *display, int drm_fd) pipe->planes =NULL ; pipe->out_fence_fd =-1 ; +igt_fill_pipe_props (display, pipe,IGT_NUM_CRTC_PROPS , igt_crtc_prop_names); + +/* Force modeset disable on first commit */ +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_MODE_ID ); +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_ACTIVE ); +get_crtc_property (display->drm_fd, pipe->crtc_id, -"background_color" , - &pipe->background_property, - &prop_value, +"background_color" ,NULL , + &pipe->values[IGT_CRTC_BACKGROUND ],NULL ); - pipe->background = (uint32_t )prop_value; -get_crtc_property (display->drm_fd, pipe->crtc_id, -"DEGAMMA_LUT" , - &pipe->degamma_property, -NULL , -NULL ); -get_crtc_property (display->drm_fd, pipe->crtc_id, -"CTM" , - &pipe->ctm_property, -NULL , -NULL ); -get_crtc_property (display->drm_fd, pipe->crtc_id, -"GAMMA_LUT" , - &pipe->gamma_property, -NULL , -NULL ); - -igt_atomic_fill_pipe_props (display, pipe,IGT_NUM_CRTC_PROPS , igt_crtc_prop_names);/* count number of valid planes */ for (j =0 ; j < plane_resources->count_planes; j++) {
@@ -1805,8 +1791,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)igt_assert_eq (p, n_planes); pipe->n_planes = n_planes; - - pipe->mode_changed = true; }/*
@@ -2283,7 +2267,7 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,if (!igt_plane_is_prop_changed (primary,IGT_PLANE_FB_ID ) && !(primary->changed &IGT_PLANE_COORD_CHANGED_MASK ) && - !primary->pipe->mode_changed) + !igt_pipe_obj_is_prop_changed (primary->pipe,IGT_CRTC_MODE_ID ))return 0 ; crtc_id = pipe->crtc_id;
@@ -2352,6 +2336,16 @@ static int igt_plane_commit(igt_plane_t *plane, } } +static bool is_atomic_prop (enum igt_atomic_crtc_properties prop) +{ +if (prop ==IGT_CRTC_MODE_ID || + prop ==IGT_CRTC_ACTIVE || + prop ==IGT_CRTC_OUT_FENCE_PTR ) +return true; + +return false; +} +/* * Commit all plane changes to an output. Note that if @s is COMMIT_LEGACY, * enabling/disabling the primary plane will also enable/disable the CRTC.
@@ -2369,19 +2363,9 @@ static int igt_pipe_commit(igt_pipe_t *pipe,int i;int ret; -if (pipe->background_changed) { -igt_crtc_set_property (pipe, pipe->background_property, - pipe->background); - } - -if (pipe->color_mgmt_changed) { -igt_crtc_set_property (pipe, pipe->degamma_property, - pipe->degamma_blob); -igt_crtc_set_property (pipe, pipe->ctm_property, - pipe->ctm_blob); -igt_crtc_set_property (pipe, pipe->gamma_property, - pipe->gamma_blob); - } +for (i =0 ; i <IGT_NUM_CRTC_PROPS ; i++) +if (!is_atomic_prop (i)) +igt_crtc_set_property (pipe, pipe->props[i], pipe->values[i]);for (i =0 ; i < pipe->n_planes; i++) {igt_plane_t *plane = &pipe->planes[i];
@@ -2394,9 +2378,10 @@ static int igt_pipe_commit(igt_pipe_t *pipe, }static void -igt_pipe_replace_blob (igt_pipe_t *pipe,uint64_t *blob,void *ptr,size_t length) +igt_pipe_replace_blob (igt_pipe_t *pipe,enum igt_atomic_crtc_properties prop,void *ptr,size_t length) {igt_display_t *display = pipe->display; +uint64_t *blob = &pipe->values[prop];uint32_t blob_id =0 ;if (*blob !=0 )
@@ -2408,6 +2393,7 @@ igt_pipe_replace_blob(igt_pipe_t *pipe, uint64_t *blob, void *ptr, size_t length ptr, length, &blob_id) == 0); *blob = blob_id; +igt_pipe_obj_set_prop_changed (pipe, prop); }/*
@@ -2415,51 +2401,23 @@ igt_pipe_replace_blob(igt_pipe_t *pipe, uint64_t *blob, void *ptr, size_t length*/ static void igt_atomic_prepare_crtc_commit (igt_pipe_t *pipe_obj,drmModeAtomicReq *req) { -if (pipe_obj->background_changed) -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_BACKGROUND , pipe_obj->background); - -if (pipe_obj->color_mgmt_changed) { -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_DEGAMMA_LUT , pipe_obj->degamma_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_CTM , pipe_obj->ctm_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_GAMMA_LUT , pipe_obj->gamma_blob); - } - -if (pipe_obj->mode_changed) { -igt_output_t *output =igt_pipe_get_output (pipe_obj); - -if (!output) { -igt_pipe_replace_blob (pipe_obj, &pipe_obj->mode_blob,NULL ,0 ); - -LOG (pipe_obj->display,"%s: Setting NULL mode\n" , -kmstest_pipe_name (pipe_obj->pipe)); - }else { -drmModeModeInfo *mode =igt_output_get_mode (output); +int i; -igt_pipe_replace_blob (pipe_obj, &pipe_obj->mode_blob, mode,sizeof (*mode)); +for (i =0 ; i <IGT_NUM_CRTC_PROPS ; i++) { +if (!igt_pipe_obj_is_prop_changed (pipe_obj, i)) +continue ; -LOG (pipe_obj->display,"%s: Setting mode %s from %s\n" , -kmstest_pipe_name (pipe_obj->pipe), - mode->name,igt_output_name (output)); - } +igt_debug ("Pipe %s: Setting property \"%s\" to 0x%" PRIx64"/%" PRIi64"\n" , +kmstest_pipe_name (pipe_obj->pipe), igt_crtc_prop_names[i], + pipe_obj->values[i], pipe_obj->values[i]); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_MODE_ID , pipe_obj->mode_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_ACTIVE , !!output); +igt_assert_lt (0 ,drmModeAtomicAddProperty (req, pipe_obj->crtc_id, pipe_obj->props[i], pipe_obj->values[i])); }if (pipe_obj->out_fence_fd !=-1 ) {close (pipe_obj->out_fence_fd); pipe_obj->out_fence_fd =-1 ; } - -if (pipe_obj->out_fence_requested) - { -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_OUT_FENCE_PTR , - (uint64_t )(uintptr_t ) &pipe_obj->out_fence_fd); - } - -/* -* TODO: Add all crtc level properties here -*/ }/*
@@ -2550,15 +2508,21 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)igt_pipe_t *pipe_obj = &display->pipes[pipe];igt_plane_t *plane; - pipe_obj->color_mgmt_changed = false; - pipe_obj->background_changed = false; +if (s ==COMMIT_ATOMIC ) { +if (igt_pipe_obj_is_prop_changed (pipe_obj,IGT_CRTC_OUT_FENCE_PTR )) +igt_assert (pipe_obj->out_fence_fd >=0 ); -if (s !=COMMIT_UNIVERSAL ) - pipe_obj->mode_changed = false; - -if (s ==COMMIT_ATOMIC && pipe_obj->out_fence_requested) { - pipe_obj->out_fence_requested = false; -igt_assert (pipe_obj->out_fence_fd >=0 ); + pipe_obj->changed =0 ; + }else { +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_BACKGROUND ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_CTM ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_DEGAMMA_LUT ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_GAMMA_LUT ); + +if (s !=COMMIT_UNIVERSAL ) { +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_ACTIVE ); + } }for_each_plane_on_pipe (display, pipe, plane) {
@@ -2812,33 +2776,83 @@ void igt_output_override_mode(igt_output_t *output, drmModeModeInfo *mode) output->use_override_mode = !!mode; -if (pipe) - pipe->mode_changed = true; +if (pipe) { +if (output->display->is_atomic) +igt_pipe_replace_blob (pipe,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (*mode)); +else +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_MODE_ID ); + } }void igt_output_set_pipe (igt_output_t *output,enum pipe pipe) {igt_display_t *display = output->display; -igt_pipe_t *old_pipe; +igt_pipe_t *old_pipe =NULL , *pipe_obj =NULL ;;igt_assert (output->name); -if (output->pending_pipe !=PIPE_NONE ) { +if (output->pending_pipe !=PIPE_NONE ) old_pipe =igt_output_get_driving_pipe (output); - old_pipe->mode_changed = true; - } +if (pipe !=PIPE_NONE ) + pipe_obj = &display->pipes[pipe];LOG (display,"%s: set_pipe(%s)\n" ,igt_output_name (output),kmstest_pipe_name (pipe)); output->pending_pipe = pipe; -if (pipe !=PIPE_NONE ) - display->pipes[pipe].mode_changed = true; +if (old_pipe) { +igt_output_t *old_output; + + old_output =igt_pipe_get_output (old_pipe); +if (!old_output) { +if (display->is_atomic) +igt_pipe_replace_blob (old_pipe,IGT_CRTC_MODE_ID ,NULL ,0 ); +else +igt_pipe_obj_set_prop_changed (old_pipe,IGT_CRTC_MODE_ID ); + +igt_pipe_obj_set_prop_value (old_pipe,IGT_CRTC_ACTIVE ,0 ); + } + }igt_output_set_prop_value (output,IGT_CONNECTOR_CRTC_ID , pipe ==PIPE_NONE ?0 : display->pipes[pipe].crtc_id);igt_output_refresh (output); + +if (pipe_obj) { +if (display->is_atomic) +igt_pipe_replace_blob (pipe_obj,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (drmModeModeInfo)); +else +igt_pipe_obj_set_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); + +igt_pipe_obj_set_prop_value (pipe_obj,IGT_CRTC_ACTIVE ,1 ); + } +} + +/* +* igt_pipe_refresh: +* @display: a pointer to an #igt_display_t structure +* @pipe: Pipe to refresh +* @force: Should be set to true if mode_blob is no longer considered +* to be valid, for example after doing an atomic commit during fork or closing display fd. +* +* Requests the pipe to be part of the state on next update. +* This is useful when state may have been out of sync after +* a fork, or we just want to be sure the pipe is included +* in the next commit. +*/ +void igt_pipe_refresh (igt_display_t *display,enum pipe pipe,bool force) +{ +igt_pipe_t *pipe_obj = &display->pipes[pipe]; + +if (force && display->is_atomic) { +igt_output_t *output =igt_pipe_get_output (pipe_obj); + + pipe_obj->values[IGT_CRTC_MODE_ID ] =0 ; +if (output) +igt_pipe_replace_blob (pipe_obj,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (drmModeModeInfo)); + }else +igt_pipe_obj_set_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); }void igt_output_set_scaling_mode (igt_output_t *output,uint64_t scaling_mode)
@@ -3046,28 +3060,25 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)*/ void igt_pipe_request_out_fence (igt_pipe_t *pipe) { - pipe->out_fence_requested = true; +igt_pipe_obj_set_prop_value (pipe,IGT_CRTC_OUT_FENCE_PTR , (ptrdiff_t )&pipe->out_fence_fd); }void igt_pipe_set_degamma_lut (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->degamma_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_DEGAMMA_LUT , ptr, length); }void igt_pipe_set_ctm_matrix (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->ctm_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_CTM , ptr, length); }void igt_pipe_set_gamma_lut (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->gamma_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_GAMMA_LUT , ptr, length); }/**
@@ -3088,9 +3099,7 @@ void igt_crtc_set_background(igt_pipe_t *pipe, uint64_t background)kmstest_pipe_name (pipe->pipe), pipe->pipe, background); - pipe->background = background; - - pipe->background_changed = true; +igt_pipe_obj_set_prop_value (pipe,IGT_CRTC_BACKGROUND , background); }void igt_wait_for_vblank_count (int drm_fd,enum pipe pipe,int count)
lib/igt_kms.h +30 -47
100 lines not on this page · raw message
tests/kms_atomic_interruptible.c +2 -2
@@ -156,8 +156,8 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_tuint32_t count_props[3 ] = {2 ,1 ,6 };uint32_t props[] = {/* crtc: 2 props */ - plane->pipe->atomic_props_crtc[IGT_CRTC_MODE_ID ], - plane->pipe->atomic_props_crtc[IGT_CRTC_ACTIVE ], + plane->pipe->props[IGT_CRTC_MODE_ID ], + plane->pipe->props[IGT_CRTC_ACTIVE ],/* connector: 1 prop */ output->props[IGT_CONNECTOR_CRTC_ID ],/* plane: remainder props */
tests/kms_atomic_transition.c +1 -1
@@ -633,7 +633,7 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct idrmModeModeInfo *mode =NULL ;if (!(mask & (1 << pipe))) { -if (display->pipes[pipe].mode_blob) { +if (igt_pipe_is_prop_changed (display, pipe,IGT_CRTC_ACTIVE )) { event_mask |=1 << pipe;igt_plane_set_fb (plane,NULL ); }
tests/kms_crtc_background_color.c +1 -1
@@ -137,7 +137,7 @@ static void test_crtc_background(data_t *data)igt_output_set_pipe (output, pipe); plane =igt_output_get_plane_type (output,DRM_PLANE_TYPE_PRIMARY ); -igt_require (plane->pipe->background_property); +igt_require (plane->pipe->props[IGT_CRTC_BACKGROUND ]);prepare_crtc (data, output, pipe, plane,1 ,PURPLE ,BLACK64 );
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 1/1 lib/igt_kms: Rework pipe properties to be more atomic, v4.
In the future I want to allow tests to commit more properties, but for this to work I have to fix all properties to work better with atomic commit. Instead of special casing each property make a bitmask for all property changed flags, and try to commit all properties.
This has been the most involved one, since legacy pipe commit still handles a lot of the properties differently from the rest.
Changes since v1:
- Dump all changed properties on commit.
- Fix bug in igt_pipe_refresh().
Changes since v2:
- Set pipe ACTIVE property changed flag on init. Changes since v3:
- Add a missing igt_pipe_refresh() to kms_atomic_interruptible.
--- lib/igt_kms.c | 217 ++++++++++++++++++++------------------ lib/igt_kms.h | 77 ++++++-------- tests/kms_atomic_interruptible.c | 8 +- tests/kms_atomic_transition.c | 2 +- tests/kms_crtc_background_color.c | 2 +- 5 files changed, 151 insertions(+), 155 deletions(-)
lib/igt_kms.c +113 -104
@@ -259,8 +259,8 @@ igt_atomic_fill_connector_props(igt_display_t *display, igt_output_t *output, }static void -igt_atomic_fill_pipe_props (igt_display_t *display,igt_pipe_t *pipe, -int num_crtc_props,const char **crtc_prop_names) +igt_fill_pipe_props (igt_display_t *display,igt_pipe_t *pipe, +int num_crtc_props,const char **crtc_prop_names) {drmModeObjectPropertiesPtr props;int i, j, fd;
@@ -278,7 +278,7 @@ igt_atomic_fill_pipe_props(igt_display_t *display, igt_pipe_t *pipe,if (strcmp (prop->name, crtc_prop_names[j]) !=0 )continue ; - pipe->atomic_props_crtc[j] = props->props[i]; + pipe->props[j] = props->props[i];break ; }
@@ -1690,7 +1690,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)int p =1 ;int j, type;uint8_t last_plane =0 , n_planes =0 ; -uint64_t prop_value; pipe->crtc_id = resources->crtcs[i]; pipe->display = display;
@@ -1700,29 +1699,16 @@ void igt_display_init(igt_display_t *display, int drm_fd) pipe->planes =NULL ; pipe->out_fence_fd =-1 ; +igt_fill_pipe_props (display, pipe,IGT_NUM_CRTC_PROPS , igt_crtc_prop_names); + +/* Force modeset disable on first commit */ +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_MODE_ID ); +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_ACTIVE ); +get_crtc_property (display->drm_fd, pipe->crtc_id, -"background_color" , - &pipe->background_property, - &prop_value, +"background_color" ,NULL , + &pipe->values[IGT_CRTC_BACKGROUND ],NULL ); - pipe->background = (uint32_t )prop_value; -get_crtc_property (display->drm_fd, pipe->crtc_id, -"DEGAMMA_LUT" , - &pipe->degamma_property, -NULL , -NULL ); -get_crtc_property (display->drm_fd, pipe->crtc_id, -"CTM" , - &pipe->ctm_property, -NULL , -NULL ); -get_crtc_property (display->drm_fd, pipe->crtc_id, -"GAMMA_LUT" , - &pipe->gamma_property, -NULL , -NULL ); - -igt_atomic_fill_pipe_props (display, pipe,IGT_NUM_CRTC_PROPS , igt_crtc_prop_names);/* count number of valid planes */ for (j =0 ; j < plane_resources->count_planes; j++) {
@@ -1805,8 +1791,6 @@ void igt_display_init(igt_display_t *display, int drm_fd)igt_assert_eq (p, n_planes); pipe->n_planes = n_planes; - - pipe->mode_changed = true; }/*
@@ -2283,7 +2267,7 @@ static int igt_primary_plane_commit_legacy(igt_plane_t *primary,if (!igt_plane_is_prop_changed (primary,IGT_PLANE_FB_ID ) && !(primary->changed &IGT_PLANE_COORD_CHANGED_MASK ) && - !primary->pipe->mode_changed) + !igt_pipe_obj_is_prop_changed (primary->pipe,IGT_CRTC_MODE_ID ))return 0 ; crtc_id = pipe->crtc_id;
@@ -2352,6 +2336,16 @@ static int igt_plane_commit(igt_plane_t *plane, } } +static bool is_atomic_prop (enum igt_atomic_crtc_properties prop) +{ +if (prop ==IGT_CRTC_MODE_ID || + prop ==IGT_CRTC_ACTIVE || + prop ==IGT_CRTC_OUT_FENCE_PTR ) +return true; + +return false; +} +/* * Commit all plane changes to an output. Note that if @s is COMMIT_LEGACY, * enabling/disabling the primary plane will also enable/disable the CRTC.
@@ -2369,19 +2363,9 @@ static int igt_pipe_commit(igt_pipe_t *pipe,int i;int ret; -if (pipe->background_changed) { -igt_crtc_set_property (pipe, pipe->background_property, - pipe->background); - } - -if (pipe->color_mgmt_changed) { -igt_crtc_set_property (pipe, pipe->degamma_property, - pipe->degamma_blob); -igt_crtc_set_property (pipe, pipe->ctm_property, - pipe->ctm_blob); -igt_crtc_set_property (pipe, pipe->gamma_property, - pipe->gamma_blob); - } +for (i =0 ; i <IGT_NUM_CRTC_PROPS ; i++) +if (!is_atomic_prop (i)) +igt_crtc_set_property (pipe, pipe->props[i], pipe->values[i]);for (i =0 ; i < pipe->n_planes; i++) {igt_plane_t *plane = &pipe->planes[i];
@@ -2394,9 +2378,10 @@ static int igt_pipe_commit(igt_pipe_t *pipe, }static void -igt_pipe_replace_blob (igt_pipe_t *pipe,uint64_t *blob,void *ptr,size_t length) +igt_pipe_replace_blob (igt_pipe_t *pipe,enum igt_atomic_crtc_properties prop,void *ptr,size_t length) {igt_display_t *display = pipe->display; +uint64_t *blob = &pipe->values[prop];uint32_t blob_id =0 ;if (*blob !=0 )
@@ -2408,6 +2393,7 @@ igt_pipe_replace_blob(igt_pipe_t *pipe, uint64_t *blob, void *ptr, size_t length ptr, length, &blob_id) == 0); *blob = blob_id; +igt_pipe_obj_set_prop_changed (pipe, prop); }/*
@@ -2415,51 +2401,23 @@ igt_pipe_replace_blob(igt_pipe_t *pipe, uint64_t *blob, void *ptr, size_t length*/ static void igt_atomic_prepare_crtc_commit (igt_pipe_t *pipe_obj,drmModeAtomicReq *req) { -if (pipe_obj->background_changed) -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_BACKGROUND , pipe_obj->background); - -if (pipe_obj->color_mgmt_changed) { -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_DEGAMMA_LUT , pipe_obj->degamma_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_CTM , pipe_obj->ctm_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_GAMMA_LUT , pipe_obj->gamma_blob); - } - -if (pipe_obj->mode_changed) { -igt_output_t *output =igt_pipe_get_output (pipe_obj); - -if (!output) { -igt_pipe_replace_blob (pipe_obj, &pipe_obj->mode_blob,NULL ,0 ); - -LOG (pipe_obj->display,"%s: Setting NULL mode\n" , -kmstest_pipe_name (pipe_obj->pipe)); - }else { -drmModeModeInfo *mode =igt_output_get_mode (output); +int i; -igt_pipe_replace_blob (pipe_obj, &pipe_obj->mode_blob, mode,sizeof (*mode)); +for (i =0 ; i <IGT_NUM_CRTC_PROPS ; i++) { +if (!igt_pipe_obj_is_prop_changed (pipe_obj, i)) +continue ; -LOG (pipe_obj->display,"%s: Setting mode %s from %s\n" , -kmstest_pipe_name (pipe_obj->pipe), - mode->name,igt_output_name (output)); - } +igt_debug ("Pipe %s: Setting property \"%s\" to 0x%" PRIx64"/%" PRIi64"\n" , +kmstest_pipe_name (pipe_obj->pipe), igt_crtc_prop_names[i], + pipe_obj->values[i], pipe_obj->values[i]); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_MODE_ID , pipe_obj->mode_blob); -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_ACTIVE , !!output); +igt_assert_lt (0 ,drmModeAtomicAddProperty (req, pipe_obj->crtc_id, pipe_obj->props[i], pipe_obj->values[i])); }if (pipe_obj->out_fence_fd !=-1 ) {close (pipe_obj->out_fence_fd); pipe_obj->out_fence_fd =-1 ; } - -if (pipe_obj->out_fence_requested) - { -igt_atomic_populate_crtc_req (req, pipe_obj,IGT_CRTC_OUT_FENCE_PTR , - (uint64_t )(uintptr_t ) &pipe_obj->out_fence_fd); - } - -/* -* TODO: Add all crtc level properties here -*/ }/*
@@ -2550,15 +2508,21 @@ display_commit_changed(igt_display_t *display, enum igt_commit_style s)igt_pipe_t *pipe_obj = &display->pipes[pipe];igt_plane_t *plane; - pipe_obj->color_mgmt_changed = false; - pipe_obj->background_changed = false; +if (s ==COMMIT_ATOMIC ) { +if (igt_pipe_obj_is_prop_changed (pipe_obj,IGT_CRTC_OUT_FENCE_PTR )) +igt_assert (pipe_obj->out_fence_fd >=0 ); -if (s !=COMMIT_UNIVERSAL ) - pipe_obj->mode_changed = false; - -if (s ==COMMIT_ATOMIC && pipe_obj->out_fence_requested) { - pipe_obj->out_fence_requested = false; -igt_assert (pipe_obj->out_fence_fd >=0 ); + pipe_obj->changed =0 ; + }else { +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_BACKGROUND ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_CTM ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_DEGAMMA_LUT ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_GAMMA_LUT ); + +if (s !=COMMIT_UNIVERSAL ) { +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); +igt_pipe_obj_clear_prop_changed (pipe_obj,IGT_CRTC_ACTIVE ); + } }for_each_plane_on_pipe (display, pipe, plane) {
@@ -2812,33 +2776,83 @@ void igt_output_override_mode(igt_output_t *output, drmModeModeInfo *mode) output->use_override_mode = !!mode; -if (pipe) - pipe->mode_changed = true; +if (pipe) { +if (output->display->is_atomic) +igt_pipe_replace_blob (pipe,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (*mode)); +else +igt_pipe_obj_set_prop_changed (pipe,IGT_CRTC_MODE_ID ); + } }void igt_output_set_pipe (igt_output_t *output,enum pipe pipe) {igt_display_t *display = output->display; -igt_pipe_t *old_pipe; +igt_pipe_t *old_pipe =NULL , *pipe_obj =NULL ;;igt_assert (output->name); -if (output->pending_pipe !=PIPE_NONE ) { +if (output->pending_pipe !=PIPE_NONE ) old_pipe =igt_output_get_driving_pipe (output); - old_pipe->mode_changed = true; - } +if (pipe !=PIPE_NONE ) + pipe_obj = &display->pipes[pipe];LOG (display,"%s: set_pipe(%s)\n" ,igt_output_name (output),kmstest_pipe_name (pipe)); output->pending_pipe = pipe; -if (pipe !=PIPE_NONE ) - display->pipes[pipe].mode_changed = true; +if (old_pipe) { +igt_output_t *old_output; + + old_output =igt_pipe_get_output (old_pipe); +if (!old_output) { +if (display->is_atomic) +igt_pipe_replace_blob (old_pipe,IGT_CRTC_MODE_ID ,NULL ,0 ); +else +igt_pipe_obj_set_prop_changed (old_pipe,IGT_CRTC_MODE_ID ); + +igt_pipe_obj_set_prop_value (old_pipe,IGT_CRTC_ACTIVE ,0 ); + } + }igt_output_set_prop_value (output,IGT_CONNECTOR_CRTC_ID , pipe ==PIPE_NONE ?0 : display->pipes[pipe].crtc_id);igt_output_refresh (output); + +if (pipe_obj) { +if (display->is_atomic) +igt_pipe_replace_blob (pipe_obj,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (drmModeModeInfo)); +else +igt_pipe_obj_set_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); + +igt_pipe_obj_set_prop_value (pipe_obj,IGT_CRTC_ACTIVE ,1 ); + } +} + +/* +* igt_pipe_refresh: +* @display: a pointer to an #igt_display_t structure +* @pipe: Pipe to refresh +* @force: Should be set to true if mode_blob is no longer considered +* to be valid, for example after doing an atomic commit during fork or closing display fd. +* +* Requests the pipe to be part of the state on next update. +* This is useful when state may have been out of sync after +* a fork, or we just want to be sure the pipe is included +* in the next commit. +*/ +void igt_pipe_refresh (igt_display_t *display,enum pipe pipe,bool force) +{ +igt_pipe_t *pipe_obj = &display->pipes[pipe]; + +if (force && display->is_atomic) { +igt_output_t *output =igt_pipe_get_output (pipe_obj); + + pipe_obj->values[IGT_CRTC_MODE_ID ] =0 ; +if (output) +igt_pipe_replace_blob (pipe_obj,IGT_CRTC_MODE_ID ,igt_output_get_mode (output),sizeof (drmModeModeInfo)); + }else +igt_pipe_obj_set_prop_changed (pipe_obj,IGT_CRTC_MODE_ID ); }void igt_output_set_scaling_mode (igt_output_t *output,uint64_t scaling_mode)
@@ -3046,28 +3060,25 @@ void igt_plane_set_rotation(igt_plane_t *plane, igt_rotation_t rotation)*/ void igt_pipe_request_out_fence (igt_pipe_t *pipe) { - pipe->out_fence_requested = true; +igt_pipe_obj_set_prop_value (pipe,IGT_CRTC_OUT_FENCE_PTR , (ptrdiff_t )&pipe->out_fence_fd); }void igt_pipe_set_degamma_lut (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->degamma_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_DEGAMMA_LUT , ptr, length); }void igt_pipe_set_ctm_matrix (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->ctm_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_CTM , ptr, length); }void igt_pipe_set_gamma_lut (igt_pipe_t *pipe,void *ptr,size_t length) { -igt_pipe_replace_blob (pipe, &pipe->gamma_blob, ptr, length); - pipe->color_mgmt_changed =1 ; +igt_pipe_replace_blob (pipe,IGT_CRTC_GAMMA_LUT , ptr, length); }/**
@@ -3088,9 +3099,7 @@ void igt_crtc_set_background(igt_pipe_t *pipe, uint64_t background)kmstest_pipe_name (pipe->pipe), pipe->pipe, background); - pipe->background = background; - - pipe->background_changed = true; +igt_pipe_obj_set_prop_value (pipe,IGT_CRTC_BACKGROUND , background); }void igt_wait_for_vblank_count (int drm_fd,enum pipe pipe,int count)
lib/igt_kms.h +30 -47
100 lines not on this page · raw message
tests/kms_atomic_interruptible.c +6 -2
@@ -156,8 +156,8 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_tuint32_t count_props[3 ] = {2 ,1 ,6 };uint32_t props[] = {/* crtc: 2 props */ - plane->pipe->atomic_props_crtc[IGT_CRTC_MODE_ID ], - plane->pipe->atomic_props_crtc[IGT_CRTC_ACTIVE ], + plane->pipe->props[IGT_CRTC_MODE_ID ], + plane->pipe->props[IGT_CRTC_ACTIVE ],/* connector: 1 prop */ output->props[IGT_CONNECTOR_CRTC_ID ],/* plane: remainder props */
@@ -253,6 +253,10 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_tigt_waitchildren (); +/* The mode is unset by the forked helper, force a refresh here */ +if (test == test_legacy_modeset || test_atomic_modeset) +igt_pipe_refresh (display, pipe, true); +igt_plane_set_fb (plane,NULL );igt_plane_set_fb (primary,NULL );igt_output_set_pipe (output,PIPE_NONE );
tests/kms_atomic_transition.c +1 -1
@@ -633,7 +633,7 @@ static unsigned set_combinations(igt_display_t *display, unsigned mask, struct idrmModeModeInfo *mode =NULL ;if (!(mask & (1 << pipe))) { -if (display->pipes[pipe].mode_blob) { +if (igt_pipe_is_prop_changed (display, pipe,IGT_CRTC_ACTIVE )) { event_mask |=1 << pipe;igt_plane_set_fb (plane,NULL ); }
tests/kms_crtc_background_color.c +1 -1
@@ -137,7 +137,7 @@ static void test_crtc_background(data_t *data)igt_output_set_pipe (output, pipe); plane =igt_output_get_plane_type (output,DRM_PLANE_TYPE_PRIMARY ); -igt_require (plane->pipe->background_property); +igt_require (plane->pipe->props[IGT_CRTC_BACKGROUND ]);prepare_crtc (data, output, pipe, plane,1 ,PURPLE ,BLACK64 );
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 7/8 igt/kms_rotation_crc : Fix flip tests for sprite plane
In reply to Maarten LankhorstThis test was flipping the primary plane instead of the sprite plane. Flip the correct plane to make the test pass properly.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102691
--- tests/kms_rotation_crc.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)
tests/kms_rotation_crc.c +17 -6
@@ -332,6 +332,9 @@ static void test_plane_rotation(data_t *data, int plane_type)enum igt_commit_style commit =COMMIT_LEGACY ;int ret; +if (data->flips && plane_type !=DRM_PLANE_TYPE_PRIMARY ) +igt_require (data->display.is_atomic); +if (plane_type ==DRM_PLANE_TYPE_PRIMARY || plane_type ==DRM_PLANE_TYPE_CURSOR ) commit =COMMIT_UNIVERSAL ;
@@ -390,12 +393,20 @@ static void test_plane_rotation(data_t *data, int plane_type)* check CRC against that one as well. */ if (data->flips) { - ret =drmModePageFlip (data->gfx_fd, - output->config.crtc->crtc_id, - data->fb_flip.fb_id, -DRM_MODE_PAGE_FLIP_EVENT , -NULL ); -igt_assert_eq (ret,0 ); +igt_plane_set_fb (plane, &data->fb_flip); +if (data->rotation ==IGT_ROTATION_90 || data->rotation ==IGT_ROTATION_270 ) +igt_plane_set_size (plane, data->fb.height, data->fb.width); + +if (plane_type !=DRM_PLANE_TYPE_PRIMARY ) { +igt_display_commit_atomic (display,DRM_MODE_PAGE_FLIP_EVENT |DRM_MODE_ATOMIC_NONBLOCK ,NULL ); + }else { + ret =drmModePageFlip (data->gfx_fd, + output->config.crtc->crtc_id, + data->fb_flip.fb_id, +DRM_MODE_PAGE_FLIP_EVENT , +NULL ); +igt_assert_eq (ret,0 ); + }wait_for_pageflip (data->gfx_fd);igt_pipe_crc_collect_crc (data->pipe_crc, &crc_output);
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v2 8/8 tests: Rename kms_pipe_color to kms_color
In reply to Maarten LankhorstRename kms_pipe_color to kms_color, and rename the invalid tests to pipe-invalid. To prepare for adding support for plane color management.
---
tests/Makefile.sources | 2 +-
tests/{kms_pipe_color.c => kms_color.c} | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
rename tests/{kms_pipe_color.c => kms_color.c} (99%)tests/Makefile.sources +1 -1
@@ -177,6 +177,7 @@ TESTS_progs = \ kms_busy \ kms_ccs \ kms_chv_cursor_fail \ + kms_color \ kms_concurrent \ kms_crtc_background_color \ kms_cursor_crc \
@@ -197,7 +198,6 @@ TESTS_progs = \ kms_mmio_vs_cs_flip \ kms_panel_fitting \ kms_pipe_b_c_ivb \ - kms_pipe_color \ kms_pipe_crc_basic \ kms_plane \ kms_plane_lowres \
tests/kms_color.c renamed from tests/kms_pipe_color.c +2 -2
@@ -1205,10 +1205,10 @@ igt_mainigt_subtest_group run_tests_for_pipe(&data, pipe); - igt_subtest_f("invalid-lut-sizes") + igt_subtest_f("pipe-invalid-lut-sizes")invalid_lut_sizes (&data); - igt_subtest_f("invalid-ctm-matrix-sizes") + igt_subtest_f("pipe-invalid-ctm-matrix-sizes")invalid_ctm_matrix_sizes (&data); igt_fixture {
Signature · 6 lines
2.14.1 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [PATCH i-g-t v2 8/8] tests: Rename kms_pipe_color to kms_color
Name change is ok to help the work in the future.
Quoted 5 lines · Maarten Lankhorst
Rename
kms_pipe_colortokms_color, and rename the invalid tests to pipe-invalid.
To prepare for adding support for plane color management.Signed-off-by Maarten Lankhorst <[email protected]>
Quoted 43 lines
---
tests/Makefile.sources | 2 +-
tests/{kms_pipe_color.c =>kms_color.c} | 4 ++--2 files changed, 3 insertions(+), 3 deletions(-)rename
tests/{kms_pipe_color.c=>kms_color.c} (99%)tests/Makefile.sources +1
-1@@ -177,6 +177,7 @@ TESTS_progs = \ kms_busy \ kms_ccs \ kms_chv_cursor_fail \ + kms_color \ kms_concurrent \ kms_crtc_background_color \ kms_cursor_crc \@@ -197,7 +198,6 @@ TESTS_progs = \ kms_mmio_vs_cs_flip \ kms_panel_fitting \ kms_pipe_b_c_ivb \ - kms_pipe_color \ kms_pipe_crc_basic \ kms_plane \ kms_plane_lowres \tests/kms_color.c renamed from tests/kms_pipe_color.c +0
-0@@ -1205,10 +1205,10 @@ igt_main
igt_subtest_grouprun_tests_for_pipe(&data, pipe);tests/kms_color.c renamed from tests/kms_pipe_color.c +1
-1-igt_subtest_f ("invalid-lut-sizes" ) +igt_subtest_f ("pipe-invalid-lut-sizes" )
invalid_lut_sizes(&data);tests/kms_color.c renamed from tests/kms_pipe_color.c +1
-1-igt_subtest_f ("invalid-ctm-matrix-sizes" ) +igt_subtest_f ("pipe-invalid-ctm-matrix-sizes" )
Quoted 3 lines
invalid_ctm_matrix_sizes(&data);
igt_fixture{
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✓ Fi.CI.BAT: success for lib/igt_kms: Convert properties to be more atomic-like. (rev2)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev2)
URL : https://patchwork.freedesktop.org/series/30903/
State : success
== Summary ==
IGT patchset tested on top of latest successful build 2885b10f99b4beeb046e75af8b8488c229f629d3 igt/gem_exec_schedule: Ignore set-priority failures on old kernels
with latest DRM-Tip kernel build CI_DRM_3146aa884e1abdf2 drm-tip: 2017y-09m-27d-15h-39m-07s UTC integration manifest
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:444s fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:476s fi-blb-e6850 total:289 pass:224 dwarn:1 dfail:0 fail:0 skip:64 time:425s fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:520s fi-bwr-2160 total:289 pass:184 dwarn:0 dfail:0 fail:0 skip:105 time:281s fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:499s fi-byt-j1900 total:289 pass:254 dwarn:1 dfail:0 fail:0 skip:34 time:511s fi-cfl-s total:289 pass:222 dwarn:27 dfail:0 fail:8 skip:32 time:523s fi-cnl-y total:289 pass:259 dwarn:0 dfail:0 fail:3 skip:27 time:653s fi-elk-e7500 total:289 pass:230 dwarn:0 dfail:0 fail:0 skip:59 time:421s fi-glk-1 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:563s fi-hsw-4770 total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:428s fi-hsw-4770r total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:407s fi-ilk-650 total:289 pass:221 dwarn:0 dfail:0 fail:8 skip:60 time:432s fi-ivb-3520m total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:493s fi-ivb-3770 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:467s fi-kbl-7500u total:289 pass:256 dwarn:1 dfail:0 fail:8 skip:24 time:462s fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:587s fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:591s fi-pnv-d510 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:544s fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:456s fi-skl-6700k total:289 pass:257 dwarn:0 dfail:0 fail:8 skip:24 time:740s fi-skl-6770hq total:289 pass:261 dwarn:0 dfail:0 fail:8 skip:20 time:487s fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:479s fi-snb-2520m total:289 pass:243 dwarn:0 dfail:0 fail:8 skip:38 time:557s fi-snb-2600 total:289 pass:250 dwarn:0 dfail:0 fail:0 skip:39 time:417s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_259/
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.IGT: failure for lib/igt_kms: Convert properties to be more atomic-like. (rev2)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev2)
URL : https://patchwork.freedesktop.org/series/30903/
State : failure
== Summary ==
Test pm_rpm:
Subgroup modeset-lpsp:
pass -> SKIP (shard-hsw)
Subgroup modeset-lpsp-stress-no-wait:
pass -> SKIP (shard-hsw)
Subgroup reg-read-ioctl:
skip -> PASS (shard-hsw)
Subgroup gem-idle:
skip -> PASS (shard-hsw)
Subgroup dpms-non-lpsp:
skip -> PASS (shard-hsw)
Subgroup modeset-pc8-residency-stress:
pass -> SKIP (shard-hsw)
Subgroup gem-execbuf-stress-pc8:
pass -> SKIP (shard-hsw)
Subgroup gem-mmap-gtt:
skip -> PASS (shard-hsw)
Subgroup pm-tiling:
skip -> PASS (shard-hsw)
Subgroup debugfs-read:
fail -> PASS (shard-hsw)
Subgroup system-suspend-modeset:
skip -> PASS (shard-hsw)
Subgroup modeset-lpsp-stress:
pass -> SKIP (shard-hsw)
Subgroup gem-evict-pwrite:
skip -> PASS (shard-hsw)
Subgroup dpms-lpsp:
pass -> SKIP (shard-hsw)
Subgroup system-suspend-execbuf:
skip -> PASS (shard-hsw)
Test prime_busy:
Subgroup after-vebox:
skip -> PASS (shard-hsw)
Subgroup before-vebox:
skip -> PASS (shard-hsw)
Subgroup after-bsd1:
pass -> SKIP (shard-hsw)
Subgroup before-bsd1:
pass -> SKIP (shard-hsw)
Subgroup before-render:
skip -> PASS (shard-hsw)
Subgroup basic-before-default:
skip -> PASS (shard-hsw)
Subgroup basic-after-default:
skip -> PASS (shard-hsw)
Subgroup hang-bsd:
skip -> PASS (shard-hsw)
Subgroup after-blt:
skip -> PASS (shard-hsw)
Subgroup hang-blt:
skip -> PASS (shard-hsw)
Subgroup wait-hang-bsd1:
pass -> SKIP (shard-hsw)
Subgroup wait-hang-render:
skip -> PASS (shard-hsw)
Subgroup wait-before-bsd2:
pass -> SKIP (shard-hsw)
Subgroup wait-after-bsd2:
pass -> SKIP (shard-hsw)
Subgroup hang-vebox:
skip -> PASS (shard-hsw)
Test kms_flip:
Subgroup 2x-flip-vs-wf_vblank:
pass -> SKIP (shard-hsw)
Subgroup vblank-vs-suspend:
skip -> PASS (shard-hsw)
Subgroup 2x-single-buffer-flip-vs-dpms-off-vs-modeset:
pass -> SKIP (shard-hsw)
Subgroup blt-wf_vblank-vs-modeset-interruptible:
skip -> PASS (shard-hsw)
Subgroup flip-vs-fences:
fail -> PASS (shard-hsw)
Subgroup plain-flip-fb-recreate-interruptible:
skip -> PASS (shard-hsw) fdo#100368 +1
Subgroup 2x-blt-flip-vs-panning:
pass -> SKIP (shard-hsw)
Subgroup flip-vs-panning:
skip -> PASS (shard-hsw)
Subgroup 2x-blt-wf_vblank-vs-modeset-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-render-flip-vs-panning:
pass -> SKIP (shard-hsw)
Subgroup 2x-vblank-vs-hang-interruptible:
pass -> SKIP (shard-hsw)
Subgroup wf_vblank-vs-modeset:
skip -> PASS (shard-hsw) fdo#102614 +2
Subgroup 2x-vblank-vs-suspend:
fail -> SKIP (shard-hsw)
Subgroup wf_vblank-vs-modeset-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-busy-flip:
pass -> SKIP (shard-hsw)
Subgroup 2x-absolute-wf_vblank-interruptible:
pass -> SKIP (shard-hsw)
Subgroup basic-flip-vs-wf_vblank:
skip -> PASS (shard-hsw)
Subgroup 2x-wf_vblank-vs-modeset-interruptible:
pass -> SKIP (shard-hsw)
Subgroup blocking-wf_vblank:
skip -> PASS (shard-hsw)
Subgroup 2x-flip-vs-expired-vblank-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-vblank-vs-suspend-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-wf_vblank-vs-dpms-interruptible:
pass -> SKIP (shard-hsw)
Subgroup nonblocking-read:
skip -> PASS (shard-hsw)
Subgroup wf_vblank-vs-dpms-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-plain-flip-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-wf_vblank-vs-modeset:
pass -> SKIP (shard-hsw)
Subgroup plain-flip-fb-recreate:
skip -> PASS (shard-hsw) fdo#102504
Subgroup vblank-vs-hang:
skip -> PASS (shard-hsw)
Subgroup flip-vs-absolute-wf_vblank-interruptible:
skip -> PASS (shard-hsw)
Subgroup wf_vblank-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-flip-vs-panning-vs-hang:
pass -> SKIP (shard-hsw)
Subgroup blt-wf_vblank-vs-dpms:
skip -> PASS (shard-hsw)
Subgroup flip-vs-panning-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-render-flip-vs-panning-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-dpms-vs-vblank-race:
pass -> SKIP (shard-hsw)
Subgroup 2x-flip-vs-fences-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-vblank-vs-dpms-suspend-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-flip-vs-panning-vs-hang-interruptible:
pass -> SKIP (shard-hsw)
Subgroup modeset-vs-vblank-race-interruptible:
skip -> PASS (shard-hsw)
Subgroup flip-vs-bad-tiling:
pass -> SKIP (shard-hsw)
Subgroup vblank-vs-dpms-suspend:
skip -> PASS (shard-hsw)
Subgroup blt-flip-vs-panning:
skip -> PASS (shard-hsw)
Subgroup 2x-blt-wf_vblank-vs-dpms-interruptible:
pass -> SKIP (shard-hsw)
Subgroup vblank-vs-dpms-suspend-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-flip-vs-bad-tiling:
pass -> SKIP (shard-hsw)
Subgroup flip-vs-dpms-off-vs-modeset-interruptible:
skip -> PASS (shard-hsw)
Subgroup vblank-vs-dpms-rpm:
skip -> PASS (shard-hsw)
Subgroup blt-wf_vblank-vs-dpms-interruptible:
skip -> PASS (shard-hsw)
Subgroup rcs-wf_vblank-vs-modeset-interruptible:
skip -> PASS (shard-hsw)
Subgroup vblank-vs-dpms-rpm-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-vblank-vs-modeset-suspend:
pass -> SKIP (shard-hsw)
Subgroup vblank-vs-modeset-rpm:
skip -> PASS (shard-hsw)
Subgroup 2x-blt-flip-vs-panning-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-flip-vs-fences:
pass -> SKIP (shard-hsw)
Subgroup 2x-flip-vs-rmfb-interruptible:
pass -> SKIP (shard-hsw)
Subgroup vblank-vs-modeset-rpm-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-rcs-wf_vblank-vs-dpms-interruptible:
pass -> SKIP (shard-hsw)
Subgroup flip-vs-expired-vblank-interruptible:
skip -> PASS (shard-hsw) fdo#102887
Subgroup blt-flip-vs-panning-interruptible:
skip -> PASS (shard-hsw)
Subgroup vblank-vs-suspend-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-flip-vs-modeset-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-blocking-absolute-wf_vblank-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-flip-vs-dpms-interruptible:
pass -> SKIP (shard-hsw)
Subgroup single-buffer-flip-vs-dpms-off-vs-modeset:
skip -> PASS (shard-hsw)
Subgroup dpms-vs-vblank-race:
skip -> PASS (shard-hsw)
Subgroup 2x-vblank-vs-hang:
pass -> SKIP (shard-hsw)
Subgroup 2x-blt-wf_vblank-vs-dpms:
pass -> SKIP (shard-hsw)
Subgroup flip-vs-modeset-vs-hang:
skip -> PASS (shard-hsw)
Subgroup flip-vs-wf_vblank-interruptible:
skip -> PASS (shard-hsw)
Subgroup plain-flip-ts-check-interruptible:
skip -> PASS (shard-hsw) fdo#103005
Subgroup 2x-blt-wf_vblank-vs-modeset:
pass -> SKIP (shard-hsw)
Subgroup 2x-plain-flip:
pass -> SKIP (shard-hsw)
Subgroup 2x-flip-vs-absolute-wf_vblank:
pass -> SKIP (shard-hsw)
Subgroup vblank-vs-modeset-suspend-interruptible:
skip -> PASS (shard-hsw)
Subgroup absolute-wf_vblank-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-nonexisting-fb-interruptible:
pass -> SKIP (shard-hsw)
Subgroup flip-vs-panning-vs-hang-interruptible:
skip -> PASS (shard-hsw)
Subgroup 2x-nonexisting-fb:
pass -> SKIP (shard-hsw)
Subgroup wf_vblank-ts-check:
skip -> PASS (shard-hsw)
Subgroup 2x-rcs-wf_vblank-vs-modeset-interruptible:
pass -> SKIP (shard-hsw)
Subgroup 2x-flip-vs-dpms-off-vs-modeset-interruptible:
pass -> SKIP (shard-hsw)
Test perf:
Subgroup oa-exponents:
skip -> FAIL (shard-hsw) fdo#102254
Subgroup invalid-oa-format-id:
skip -> PASS (shard-hsw)
Subgroup unprivileged-singled-ctx-counters:
skip -> PASS (shard-hsw)
Subgroup create-destroy-userspace-config:
skip -> PASS (shard-hsw)
Subgroup buffer-fill:
skip -> PASS (shard-hsw)
Subgroup invalid-create-userspace-config:
skip -> PASS (shard-hsw)
Subgroup per-context-mode-unprivileged:
skip -> PASS (shard-hsw)
Subgroup low-oa-exponent-permissions:
skip -> PASS (shard-hsw)
Subgroup whitelisted-registers-userspace-config:
skip -> PASS (shard-hsw)
Subgroup polling:
pass -> FAIL (shard-hsw) fdo#102252
Subgroup missing-sample-flags:
skip -> PASS (shard-hsw)
Test kms_frontbuffer_tracking:
Subgroup psr-2p-scndscrn-spr-indfb-draw-pwrite:
fail -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-spr-indfb-fullscreen:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-rgb565-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-shrfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-draw-mmap-wc:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-pri-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-indfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-slowdraw:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-cur-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-indfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-pri-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-indfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-cur-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-spr-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-badstride:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-spr-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-shrfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-spr-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
skip -> PASS (shard-hsw)
Subgroup fbc-1p-offscren-pri-indfb-draw-render:
skip -> PASS (shard-hsw)
Subgroup psr-2p-scndscrn-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-shrfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-indfb-scaledprimary:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-indfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-draw-pwrite:
skip -> PASS (shard-hsw)
Subgroup fbc-2p-scndscrn-spr-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-cur-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-spr-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-rgb565-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-pri-indfb-draw-mmap-cpu:
skip -> PASS (shard-hsw)
Subgroup fbc-2p-scndscrn-shrfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-cur-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbc-modesetfrombusy:
skip -> PASS (shard-hsw)
Subgroup fbc-badstride:
skip -> PASS (shard-hsw)
Subgroup psr-2p-scndscrn-pri-shrfb-draw-mmap-cpu:
fail -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-pri-indfb-draw-mmap-wc:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-rgb565-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-pri-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-fullscreen:
pass -> SKIP (shard-hsw)
Subgroup psr-shrfb-scaledprimary:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-cur-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-cur-indfb-move:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-indfb-msflip-blt:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-shrfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-shrfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-cur-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-cur-indfb-draw-pwrite:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-pri-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-cur-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-shrfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_259/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✓ Fi.CI.BAT: success for lib/igt_kms: Convert properties to be more atomic-like. (rev4)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev4)
URL : https://patchwork.freedesktop.org/series/30903/
State : success
== Summary ==
IGT patchset tested on top of latest successful build 2885b10f99b4beeb046e75af8b8488c229f629d3 igt/gem_exec_schedule: Ignore set-priority failures on old kernels
with latest DRM-Tip kernel build CI_DRM_3148c1ed50121778 drm-tip: 2017y-09m-28d-04h-52m-47s UTC integration manifest
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:447s fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:473s fi-blb-e6850 total:289 pass:224 dwarn:1 dfail:0 fail:0 skip:64 time:423s fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:517s fi-bwr-2160 total:289 pass:184 dwarn:0 dfail:0 fail:0 skip:105 time:282s fi-bxt-dsi total:289 pass:258 dwarn:1 dfail:0 fail:0 skip:30 time:498s fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:510s fi-byt-j1900 total:289 pass:254 dwarn:1 dfail:0 fail:0 skip:34 time:495s fi-cnl-y total:289 pass:259 dwarn:0 dfail:0 fail:3 skip:27 time:663s fi-elk-e7500 total:289 pass:230 dwarn:0 dfail:0 fail:0 skip:59 time:415s fi-glk-1 total:289 pass:259 dwarn:1 dfail:0 fail:0 skip:29 time:563s fi-hsw-4770 total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:433s fi-hsw-4770r total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:411s fi-ilk-650 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:434s fi-ivb-3520m total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:484s fi-ivb-3770 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:469s fi-kbl-7500u total:289 pass:264 dwarn:1 dfail:0 fail:0 skip:24 time:475s fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:583s fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:596s fi-pnv-d510 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:547s fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:454s fi-skl-6700k total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:756s fi-skl-6770hq total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:492s fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:479s fi-snb-2520m total:289 pass:251 dwarn:0 dfail:0 fail:0 skip:38 time:567s fi-snb-2600 total:289 pass:250 dwarn:0 dfail:0 fail:0 skip:39 time:418s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_264/
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✓ Fi.CI.BAT: success for lib/igt_kms: Convert properties to be more atomic-like. (rev5)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev5)
URL : https://patchwork.freedesktop.org/series/30903/
State : success
== Summary ==
IGT patchset tested on top of latest successful build 2885b10f99b4beeb046e75af8b8488c229f629d3 igt/gem_exec_schedule: Ignore set-priority failures on old kernels
with latest DRM-Tip kernel build CI_DRM_3148c1ed50121778 drm-tip: 2017y-09m-28d-04h-52m-47s UTC integration manifest
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:449s fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:481s fi-blb-e6850 total:289 pass:224 dwarn:1 dfail:0 fail:0 skip:64 time:424s fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:527s fi-bwr-2160 total:289 pass:184 dwarn:0 dfail:0 fail:0 skip:105 time:279s fi-bxt-dsi total:289 pass:259 dwarn:0 dfail:0 fail:0 skip:30 time:503s fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:505s fi-byt-j1900 total:289 pass:254 dwarn:1 dfail:0 fail:0 skip:34 time:498s fi-cnl-y total:289 pass:259 dwarn:0 dfail:0 fail:3 skip:27 time:657s fi-elk-e7500 total:289 pass:230 dwarn:0 dfail:0 fail:0 skip:59 time:418s fi-glk-1 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:568s fi-hsw-4770 total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:425s fi-hsw-4770r total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:406s fi-ilk-650 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:435s fi-ivb-3520m total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:493s fi-ivb-3770 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:468s fi-kbl-7500u total:289 pass:264 dwarn:1 dfail:0 fail:0 skip:24 time:476s fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:581s fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:589s fi-pnv-d510 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:545s fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:456s fi-skl-6700k total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:761s fi-skl-6770hq total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:492s fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:475s fi-snb-2520m total:289 pass:251 dwarn:0 dfail:0 fail:0 skip:38 time:569s fi-snb-2600 total:289 pass:250 dwarn:0 dfail:0 fail:0 skip:39 time:417s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_265/
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.IGT: failure for lib/igt_kms: Convert properties to be more atomic-like. (rev4)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev4)
URL : https://patchwork.freedesktop.org/series/30903/
State : failure
== Summary ==
Test gem_close_race:
Subgroup basic-process:
skip -> PASS (shard-hsw)
Test kms_frontbuffer_tracking:
Subgroup fbcpsr-2p-primscrn-cur-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-shrfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-cur-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-spr-indfb-fullscreen:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-cur-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-offscren-pri-indfb-draw-pwrite:
skip -> PASS (shard-hsw)
Subgroup psr-2p-primscrn-shrfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-spr-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-shrfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-indfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-cur-indfb-onoff:
skip -> PASS (shard-hsw)
Subgroup fbc-1p-rte:
skip -> PASS (shard-hsw)
Subgroup psr-rgb565-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-cur-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-offscren-pri-indfb-draw-mmap-wc:
dmesg-warn -> PASS (shard-hsw)
Subgroup psr-1p-offscren-pri-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-rgb565-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-indfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-modesetfrombusy:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-rte:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-shrfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-offscren-pri-shrfb-draw-mmap-gtt:
skip -> PASS (shard-hsw)
Subgroup psr-2p-primscrn-pri-shrfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
skip -> PASS (shard-hsw)
Subgroup fbc-1p-primscrn-cur-indfb-draw-mmap-wc:
skip -> PASS (shard-hsw)
Subgroup fbc-1p-primscrn-shrfb-pgflip-blt:
skip -> PASS (shard-hsw)
Subgroup psr-2p-primscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-spr-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-cur-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-rgb565-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-indfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-indfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-pri-indfb-draw-mmap-gtt:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-2p-primscrn-spr-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-indfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-shrfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup psr-rgb101010-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-farfromfence:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-draw-render:
skip -> PASS (shard-hsw)
Subgroup psr-1p-primscrn-cur-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-offscren-pri-indfb-draw-blt:
skip -> PASS (shard-hsw)
Subgroup psr-1p-primscrn-pri-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-indfb-scaledprimary:
pass -> SKIP (shard-hsw)
Subgroup psr-farfromfence:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-cur-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-move:
skip -> PASS (shard-hsw)
Subgroup fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-rgb565-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-cur-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbc-shrfb-scaledprimary:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-modesetfrombusy:
skip -> PASS (shard-hsw)
Subgroup psr-2p-scndscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-modesetfrombusy:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-rgb101010-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-cur-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-pri-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-shrfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup fbc-rgb101010-draw-render:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-offscren-pri-shrfb-draw-mmap-cpu:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-spr-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-indfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-shrfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-cur-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbc-rgb101010-draw-blt:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-spr-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-pri-indfb-multidraw:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-indfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-shrfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-spr-indfb-fullscreen:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-shrfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-cur-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-indfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-badstride:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-pri-indfb-draw-pwrite:
fail -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-rte:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-indfb-msflip-blt:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-tilingchange:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-shrfb-plflip-blt:
skip -> PASS (shard-hsw)
Subgroup fbc-2p-primscrn-pri-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-indfb-plflip-blt:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-shrfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-shrfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-indfb-draw-mmap-cpu:
dmesg-warn -> SKIP (shard-hsw)
Subgroup fbc-rgb101010-draw-pwrite:
skip -> PASS (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-pri-indfb-multidraw:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-cur-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-onoff:
skip -> PASS (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbc-rgb565-draw-mmap-gtt:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-1p-shrfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-cur-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-spr-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-spr-indfb-fullscreen:
skip -> PASS (shard-hsw)
Subgroup psr-2p-primscrn-pri-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-pri-indfb-draw-pwrite:
skip -> PASS (shard-hsw)
Subgroup psr-rgb101010-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-cur-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-cur-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-shrfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-rte:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-cur-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-pri-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-spr-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-shrfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-indfb-msflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-spr-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-shrfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-pri-indfb-draw-mmap-wc:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-rgb101010-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-cur-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-spr-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-shrfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-shrfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-spr-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup fbc-badstride:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-spr-indfb-fullscreen:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-spr-indfb-fullscreen:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-spr-indfb-draw-render:
pass -> SKIP (shard== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_264/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.IGT: failure for lib/igt_kms: Convert properties to be more atomic-like. (rev5)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev5)
URL : https://patchwork.freedesktop.org/series/30903/
State : failure
== Summary ==
Test gem_exec_schedule:
Subgroup pi-ringfull-blt:
pass -> SKIP (shard-hsw)
Subgroup fifo-bsd:
skip -> PASS (shard-hsw)
Subgroup preempt-bsd2:
pass -> SKIP (shard-hsw)
Subgroup in-order-bsd1:
pass -> SKIP (shard-hsw)
Subgroup promotion-bsd:
pass -> SKIP (shard-hsw)
Subgroup preempt-other-bsd1:
pass -> SKIP (shard-hsw)
Subgroup preempt-self-blt:
pass -> SKIP (shard-hsw)
Subgroup reorder-wide-vebox:
pass -> SKIP (shard-hsw)
Subgroup preempt-vebox:
pass -> SKIP (shard-hsw)
Subgroup promotion-bsd1:
pass -> SKIP (shard-hsw)
Subgroup deep-vebox:
pass -> SKIP (shard-hsw)
Subgroup reorder-wide-render:
pass -> SKIP (shard-hsw)
Subgroup in-order-vebox:
pass -> SKIP (shard-hsw)
Subgroup in-order-bsd:
pass -> SKIP (shard-hsw)
Subgroup fifo-bsd1:
pass -> SKIP (shard-hsw)
Subgroup pi-ringfull-bsd:
pass -> SKIP (shard-hsw)
Subgroup pi-ringfull-default:
pass -> SKIP (shard-hsw)
Subgroup out-order-blt:
pass -> SKIP (shard-hsw)
Subgroup preempt-blt:
pass -> SKIP (shard-hsw)
Subgroup reorder-wide-blt:
pass -> SKIP (shard-hsw)
Subgroup preempt-contexts-vebox:
pass -> SKIP (shard-hsw)
Subgroup preempt-other-vebox:
pass -> SKIP (shard-hsw)
Subgroup pi-ringfull-bsd2:
pass -> SKIP (shard-hsw)
Subgroup preempt-contexts-render:
pass -> SKIP (shard-hsw)
Subgroup preempt-self-bsd1:
pass -> SKIP (shard-hsw)
Subgroup deep-render:
pass -> SKIP (shard-hsw)
Subgroup preempt-contexts-bsd1:
pass -> SKIP (shard-hsw)
Subgroup promotion-blt:
pass -> SKIP (shard-hsw)
Subgroup out-order-render:
pass -> SKIP (shard-hsw)
Subgroup preempt-render:
pass -> SKIP (shard-hsw)
Subgroup preempt-other-blt:
pass -> SKIP (shard-hsw)
Subgroup in-order-bsd2:
pass -> SKIP (shard-hsw)
Subgroup deep-bsd1:
pass -> SKIP (shard-hsw)
Subgroup in-order-render:
pass -> SKIP (shard-hsw)
Subgroup out-order-vebox:
pass -> SKIP (shard-hsw)
Subgroup preempt-other-bsd2:
pass -> SKIP (shard-hsw)
Subgroup reorder-wide-bsd2:
pass -> SKIP (shard-hsw)
Subgroup wide-blt:
pass -> SKIP (shard-hsw)
Subgroup fifo-render:
fail -> PASS (shard-hsw)
Subgroup reorder-wide-bsd1:
pass -> SKIP (shard-hsw)
Subgroup out-order-bsd2:
pass -> SKIP (shard-hsw)
Subgroup pi-ringfull-bsd1:
pass -> SKIP (shard-hsw)
Subgroup deep-bsd:
pass -> SKIP (shard-hsw)
Subgroup wide-bsd1:
fail -> SKIP (shard-hsw)
Subgroup pi-ringfull-render:
pass -> SKIP (shard-hsw)
Subgroup deep-blt:
pass -> SKIP (shard-hsw)
Test kms_setmode:
Subgroup invalid-clone-exclusive-crtc:
skip -> PASS (shard-hsw)
Subgroup basic:
skip -> PASS (shard-hsw) fdo#99912
Subgroup invalid-clone-single-crtc:
skip -> PASS (shard-hsw)
Test kms_busy:
Subgroup basic-flip-D:
pass -> SKIP (shard-hsw)
Subgroup extended-pageflip-hang-oldfb-render-C:
skip -> PASS (shard-hsw)
Subgroup extended-modeset-hang-newfb-render-D:
pass -> SKIP (shard-hsw)
Subgroup basic-flip-A:
skip -> PASS (shard-hsw)
Subgroup extended-modeset-hang-oldfb-with-reset-render-B:
skip -> PASS (shard-hsw) fdo#102249 +1
Subgroup extended-pageflip-hang-oldfb-render-E:
pass -> SKIP (shard-hsw)
Subgroup extended-pageflip-hang-newfb-render-A:
skip -> PASS (shard-hsw)
Subgroup extended-pageflip-modeset-hang-oldfb-render-B:
skip -> PASS (shard-hsw)
Subgroup basic-modeset-F:
fail -> SKIP (shard-hsw)
Subgroup extended-pageflip-hang-oldfb-render-D:
pass -> SKIP (shard-hsw)
Subgroup extended-modeset-hang-oldfb-with-reset-render-D:
pass -> SKIP (shard-hsw)
Subgroup extended-pageflip-hang-newfb-render-B:
skip -> PASS (shard-hsw)
Subgroup extended-modeset-hang-oldfb-render-E:
pass -> SKIP (shard-hsw)
Subgroup extended-modeset-hang-oldfb-render-D:
pass -> SKIP (shard-hsw)
Subgroup basic-modeset-D:
pass -> SKIP (shard-hsw)
Subgroup extended-pageflip-hang-newfb-render-F:
pass -> SKIP (shard-hsw)
Subgroup basic-modeset-E:
pass -> SKIP (shard-hsw)
Subgroup extended-modeset-hang-oldfb-render-C:
skip -> PASS (shard-hsw)
Subgroup extended-modeset-hang-oldfb-with-reset-render-F:
pass -> SKIP (shard-hsw)
Subgroup extended-modeset-hang-oldfb-render-F:
pass -> SKIP (shard-hsw)
Subgroup basic-flip-E:
pass -> SKIP (shard-hsw)
Subgroup basic-modeset-B:
skip -> PASS (shard-hsw)
Subgroup basic-flip-B:
skip -> PASS (shard-hsw)
Subgroup extended-modeset-hang-newfb-render-C:
skip -> PASS (shard-hsw)
Subgroup basic-modeset-C:
skip -> PASS (shard-hsw)
Subgroup extended-pageflip-modeset-hang-oldfb-render-A:
skip -> PASS (shard-hsw)
Subgroup basic-flip-C:
skip -> PASS (shard-hsw)
Subgroup extended-pageflip-modeset-hang-oldfb-render-E:
pass -> SKIP (shard-hsw)
Subgroup extended-pageflip-modeset-hang-oldfb-render-F:
pass -> SKIP (shard-hsw)
Test gem_madvise:
Subgroup dontneed-before-exec:
skip -> PASS (shard-hsw)
Subgroup dontneed-before-mmap:
skip -> PASS (shard-hsw)
Test kms_color:
Subgroup degamma-pipe2:
pass -> SKIP (shard-hsw)
Subgroup ctm-blue-to-red-pipe5:
pass -> SKIP (shard-hsw)
Subgroup ctm-green-to-red-pipe3:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-75-pipe0:
pass -> SKIP (shard-hsw)
Subgroup pipe-invalid-lut-sizes:
skip -> PASS (shard-hsw)
Subgroup degamma-pipe4:
pass -> SKIP (shard-hsw)
Subgroup ctm-max-pipe0:
pass -> SKIP (shard-hsw)
Subgroup ctm-negative-pipe3:
pass -> SKIP (shard-hsw)
Subgroup legacy-gamma-pipe4:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-5-pipe1:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-75-pipe4:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-5-pipe5:
pass -> SKIP (shard-hsw)
Subgroup pipe-invalid-ctm-matrix-sizes:
skip -> PASS (shard-hsw)
Subgroup ctm-blue-to-red-pipe0:
pass -> SKIP (shard-hsw)
Subgroup gamma-pipe1:
pass -> SKIP (shard-hsw)
Subgroup ctm-max-pipe3:
pass -> SKIP (shard-hsw)
Subgroup degamma-pipe0:
pass -> SKIP (shard-hsw)
Subgroup gamma-pipe2:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-25-pipe3:
pass -> SKIP (shard-hsw)
Subgroup ctm-max-pipe2:
pass -> SKIP (shard-hsw)
Subgroup legacy-gamma-pipe0:
pass -> SKIP (shard-hsw)
Subgroup ctm-red-to-blue-pipe1:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-5-pipe0:
pass -> SKIP (shard-hsw)
Subgroup ctm-negative-pipe0:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-5-pipe2:
pass -> SKIP (shard-hsw)
Subgroup degamma-pipe3:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-25-pipe4:
pass -> SKIP (shard-hsw)
Subgroup legacy-gamma-reset-pipe2:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-5-pipe3:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-75-pipe1:
pass -> SKIP (shard-hsw)
Subgroup ctm-negative-pipe4:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-25-pipe5:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-75-pipe3:
pass -> SKIP (shard-hsw)
Subgroup legacy-gamma-reset-pipe4:
pass -> SKIP (shard-hsw)
Subgroup legacy-gamma-pipe3:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-25-pipe1:
pass -> SKIP (shard-hsw)
Subgroup legacy-gamma-pipe5:
pass -> SKIP (shard-hsw)
Subgroup legacy-gamma-reset-pipe5:
pass -> SKIP (shard-hsw)
Subgroup ctm-0-75-pipe5:
pass -> SKIP (shard-hsw)
Subgroup ctm-negative-pipe2:
pass -> SKIP (shard-hsw)
Test kms_frontbuffer_tracking:
Subgroup fbc-1p-primscrn-cur-indfb-draw-mmap-cpu:
skip -> PASS (shard-hsw)
Subgroup fbc-2p-scndscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-indfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-pri-shrfb-draw-mmap-wc:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-shrfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-shrfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-spr-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-rgb565-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-shrfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-pri-indfb-draw-blt:
skip -> PASS (shard-hsw)
Subgroup psr-2p-scndscrn-cur-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-slowdraw:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-shrfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-indfb-fliptrack:
skip -> PASS (shard-hsw)
Subgroup fbc-2p-shrfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-cur-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-shrfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-spr-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-cur-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-shrfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-cur-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-pri-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-shrfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-rgb565-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-indfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-move:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-spr-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-shrfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt:
dmesg-warn -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-indfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-primscrn-pri-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-primscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-indfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-shrfb-draw-pwrite:
fail -> SKIP (shard-hsw)
Subgroup fbc-2p-indfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup psr-rgb565-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-farfromfence:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-cur-indfb-onoff:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-pri-indfb-draw-pwrite:
fail -> PASS (shard-hsw)
Subgroup psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-spr-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-spr-indfb-fullscreen:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-indfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-indfb-draw-mmap-gtt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-shrfb-fliptrack:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-primscrn-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup psr-1p-offscren-pri-shrfb-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-shrfb-plflip-blt:
pass -> SKIP (shard-hsw)
Subgroup fbc-rgb565-draw-mmap-gtt:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-cur-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-pri-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-primscrn-pri-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-spr-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-2p-scndscrn-pri-indfb-draw-render:
pass -> SKIP (shard-hsw)
Subgroup fbc-2p-scndscrn-shrfb-pgflip-blt:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-spr-indfb-draw-pwrite:
pass -> SKIP (shard-hsw)
Subgroup psr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-spr-indfb-onoff:
pass -> SKIP (shard-hsw)
Subgroup fbc-1p-primscrn-indfb-pgflip-blt:
skip -> PASS (shard-hsw)
Subgroup fbcpsr-rgb101010-draw-mmap-wc:
pass -> SKIP (shard-hsw)
Subgroup psr-rgb565-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-rgb565-draw-blt:
pass -> SKIP (shard-hsw)
Subgroup fbcpsr-1p-primscrn-cur-indfb-draw-mmap-cpu:== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_265/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.IGT: failure for lib/igt_kms: Convert properties to be more atomic-like. (rev4)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev4)
URL : https://patchwork.freedesktop.org/series/30903/
State : failure
== Summary ==
Test kms_cursor_legacy:
Subgroup cursorA-vs-flipA-atomic-transitions:
fail -> PASS (shard-hsw) fdo#102723
Test prime_mmap:
Subgroup test_userptr:
pass -> DMESG-WARN (shard-hsw) fdo#102939
Test kms_atomic_interruptible:
Subgroup atomic-setmode:
pass -> FAIL (shard-hsw)
Subgroup legacy-setmode:
pass -> FAIL (shard-hsw)
Test kms_rotation_crc:
Subgroup sprite-rotation-180-flip:
fail -> PASS (shard-hsw) fdo#102691
Test kms_plane_lowres:
Subgroup pipe-A-tiling-x:
pass -> FAIL (shard-hsw)
Subgroup pipe-A-tiling-none:
pass -> FAIL (shard-hsw)
Test gem_exec_reloc:
Subgroup basic-write-read-noreloc:
incomplete -> PASS (shard-hsw) fdo#102332
Test gem_eio:
Subgroup in-flight:
pass -> DMESG-WARN (shard-hsw) fdo#102886 +2
Test perf:
Subgroup blocking:
pass -> FAIL (shard-hsw) fdo#102252fdo#102723 https://bugs.freedesktop.org/show_bug.cgi?id=102723
fdo#102939 https://bugs.freedesktop.org/show_bug.cgi?id=102939
fdo#102691 https://bugs.freedesktop.org/show_bug.cgi?id=102691
fdo#102332 https://bugs.freedesktop.org/show_bug.cgi?id=102332
fdo#102886 https://bugs.freedesktop.org/show_bug.cgi?id=102886
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
shard-hsw total:2429 pass:1327 dwarn:6 dfail:0 fail:13 skip:1083 time:9878s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_264/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.IGT: failure for lib/igt_kms: Convert properties to be more atomic-like. (rev5)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev5)
URL : https://patchwork.freedesktop.org/series/30903/
State : failure
== Summary ==
Test gem_eio:
Subgroup in-flight-contexts:
dmesg-warn -> PASS (shard-hsw) fdo#102886 +1
Test kms_atomic_interruptible:
Subgroup atomic-setmode:
pass -> FAIL (shard-hsw)
Subgroup legacy-setmode:
pass -> FAIL (shard-hsw)
Test kms_rotation_crc:
Subgroup sprite-rotation-180-flip:
fail -> PASS (shard-hsw) fdo#102691
Test kms_busy:
Subgroup extended-modeset-hang-oldfb-with-reset-render-A:
pass -> DMESG-WARN (shard-hsw) fdo#102249
Test gem_exec_reloc:
Subgroup basic-write-read-noreloc:
incomplete -> PASS (shard-hsw) fdo#102332
Test kms_cursor_legacy:
Subgroup cursorA-vs-flipA-atomic-transitions:
fail -> PASS (shard-hsw) fdo#102723fdo#102886 https://bugs.freedesktop.org/show_bug.cgi?id=102886
fdo#102691 https://bugs.freedesktop.org/show_bug.cgi?id=102691
fdo#102249 https://bugs.freedesktop.org/show_bug.cgi?id=102249
fdo#102332 https://bugs.freedesktop.org/show_bug.cgi?id=102332
fdo#102723 https://bugs.freedesktop.org/show_bug.cgi?id=102723
shard-hsw total:2429 pass:1331 dwarn:5 dfail:0 fail:10 skip:1083 time:9895s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_265/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.IGT: failure for lib/igt_kms: Convert properties to be more atomic-like. (rev2)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev2)
URL : https://patchwork.freedesktop.org/series/30903/
State : failure
== Summary ==
Test kms_atomic_interruptible:
Subgroup legacy-cursor:
pass -> FAIL (shard-hsw)
Subgroup atomic-setmode:
pass -> FAIL (shard-hsw)
Subgroup legacy-pageflip:
pass -> FAIL (shard-hsw)
Subgroup legacy-dpms:
pass -> FAIL (shard-hsw)
Subgroup legacy-setmode:
pass -> FAIL (shard-hsw)
Subgroup universal-setplane-primary:
pass -> FAIL (shard-hsw)
Subgroup universal-setplane-cursor:
pass -> FAIL (shard-hsw)
Test kms_plane_multiple:
Subgroup atomic-pipe-B-tiling-none:
pass -> SKIP (shard-hsw)
Subgroup atomic-pipe-C-tiling-none:
pass -> SKIP (shard-hsw)
Subgroup atomic-pipe-B-tiling-x:
pass -> SKIP (shard-hsw)
Subgroup atomic-pipe-C-tiling-x:
pass -> SKIP (shard-hsw)
Test kms_busy:
Subgroup extended-pageflip-hang-oldfb-render-B:
pass -> FAIL (shard-hsw)
Subgroup extended-pageflip-hang-oldfb-render-C:
pass -> FAIL (shard-hsw)
Subgroup extended-pageflip-hang-newfb-render-B:
pass -> FAIL (shard-hsw)
Subgroup extended-modeset-hang-oldfb-with-reset-render-C:
pass -> FAIL (shard-hsw)
Subgroup extended-pageflip-modeset-hang-oldfb-render-B:
pass -> FAIL (shard-hsw)
Subgroup extended-modeset-hang-oldfb-render-C:
pass -> FAIL (shard-hsw)
Subgroup extended-modeset-hang-oldfb-with-reset-render-B:
pass -> FAIL (shard-hsw) fdo#102249 +1
Subgroup extended-modeset-hang-newfb-with-reset-render-B:
pass -> FAIL (shard-hsw)
Subgroup extended-pageflip-hang-newfb-render-C:
pass -> FAIL (shard-hsw)
Subgroup extended-modeset-hang-newfb-render-C:
pass -> FAIL (shard-hsw)
Subgroup extended-modeset-hang-oldfb-render-B:
pass -> FAIL (shard-hsw)
Subgroup extended-modeset-hang-newfb-render-B:
pass -> FAIL (shard-hsw)
Subgroup extended-pageflip-modeset-hang-oldfb-render-C:
pass -> FAIL (shard-hsw)
Test prime_mmap:
Subgroup test_userptr:
pass -> DMESG-WARN (shard-hsw) fdo#102939
Test kms_plane_lowres:
Subgroup pipe-A-tiling-x:
pass -> FAIL (shard-hsw)
Subgroup pipe-A-tiling-none:
pass -> FAIL (shard-hsw)
Test gem_eio:
Subgroup wait:
dmesg-warn -> PASS (shard-hsw) fdo#102886 +1
Test kms_setmode:
Subgroup basic:
fail -> PASS (shard-hsw) fdo#99912
Test gem_sync:
Subgroup basic-store-all:
pass -> FAIL (shard-hsw)
Test kms_rotation_crc:
Subgroup sprite-rotation-180-flip:
fail -> PASS (shard-hsw) fdo#102691
Test perf:
Subgroup blocking:
fail -> PASS (shard-hsw) fdo#102252
Test kms_concurrent:
Subgroup pipe-C:
pass -> SKIP (shard-hsw)
Subgroup pipe-B:
pass -> SKIP (shard-hsw)
Test kms_flip:
Subgroup flip-vs-wf_vblank-interruptible:
fail -> PASS (shard-hsw) fdo#100368fdo#102249 https://bugs.freedesktop.org/show_bug.cgi?id=102249
fdo#102939 https://bugs.freedesktop.org/show_bug.cgi?id=102939
fdo#102886 https://bugs.freedesktop.org/show_bug.cgi?id=102886
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#102691 https://bugs.freedesktop.org/show_bug.cgi?id=102691
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
shard-hsw total:2429 pass:1305 dwarn:3 dfail:0 fail:32 skip:1089 time:9572s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_259/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.BAT: failure for lib/igt_kms: Convert properties to be more atomic-like. (rev6)
In reply to Maarten Lankhorst== Series Details ==
== Series Details ==
Series: lib/igt_kms: Convert properties to be more atomic-like. (rev6)
URL : https://patchwork.freedesktop.org/series/30903/
State : failure
== Summary ==
IGT patchset build failed on latest successful build 47ae1f8cfd2d4a826331e270b33440e0bf3a6aa9 tests/gem_workarounds: Skip write only registers
make all-recursive
Making all in lib
make all-recursive
Making all in .
Making all in tests
make[4]: Nothing to be done for 'all'.
Making all in man
make[2]: Nothing to be done for 'all'.
Making all in tools
Making all in null_state_gen
make[3]: Nothing to be done for 'all'.
Making all in registers
make[3]: Nothing to be done for 'all'.
make[3]: Nothing to be done for 'all-am'.
Making all in scripts
make[2]: Nothing to be done for 'all'.
Making all in benchmarks
make[2]: Nothing to be done for 'all'.
Making all in tests
Making all in intel-ci
make[3]: Nothing to be done for 'all'.
CCLD gem_bad_batch
CCLD gem_hang
CCLD gem_bad_blit
CCLD gem_bad_address
CCLD gem_non_secure_batch
CCLD gem_stress
CCLD core_auth
CCLD core_get_client_auth
CCLD core_getclient
CCLD core_getstats
CCLD core_getversion
CCLD core_prop_blob
CCLD core_setmaster_vs_auth
CCLD debugfs_test
CCLD drm_import_export
CCLD drm_mm
CCLD drm_read
CCLD drm_vma_limiter
CCLD drm_vma_limiter_cached
CCLD drm_vma_limiter_cpu
CCLD drm_vma_limiter_gtt
CCLD drv_getparams_basic
CCLD drv_hangman
CCLD drv_missed_irq
CCLD drv_module_reload
CCLD drv_selftest
CCLD drv_suspend
CCLD gem_bad_length
CCLD gem_bad_reloc
CCLD gem_basic
CCLD gem_busy
CCLD gem_caching
CCLD gem_close
CCLD gem_close_race
CCLD gem_concurrent_blit
CCLD gem_cpu_reloc
CCLD gem_create
CCLD gem_cs_prefetch
CCLD gem_cs_tlb
CCLD gem_ctx_bad_destroy
CCLD gem_ctx_bad_exec
CCLD gem_ctx_basic
CCLD gem_ctx_create
CCLD gem_ctx_exec
CCLD gem_ctx_param
CCLD gem_ctx_switch
CCLD gem_ctx_thrash
CCLD gem_double_irq_loop
CCLD gem_eio
CCLD gem_evict_alignment
CCLD gem_evict_everything
CCLD gem_exec_alignment
CCLD gem_exec_async
CCLD gem_exec_await
CCLD gem_exec_bad_domains
CCLD gem_exec_basic
CCLD gem_exec_big
CCLD gem_exec_blt
CCLD gem_exec_capture
CCLD gem_exec_create
CCLD gem_exec_faulting_reloc
CCLD gem_exec_fence
CCLD gem_exec_flush
CCLD gem_exec_gttfill
CCLD gem_exec_latency
CCLD gem_exec_lut_handle
CCLD gem_exec_nop
CCLD gem_exec_parallel
CCLD gem_exec_params
CCLD gem_exec_parse
CCLD gem_exec_reloc
CCLD gem_exec_reuse
CCLD gem_exec_schedule
CCLD gem_exec_store
CCLD gem_exec_suspend
CCLD gem_exec_whisper
CCLD gem_fd_exhaustion
CCLD gem_fence_thrash
CCLD gem_fence_upload
CCLD gem_fenced_exec_thrash
CCLD gem_flink_basic
CCLD gem_flink_race
CCLD gem_gpgpu_fill
CCLD gem_gtt_cpu_tlb
CCLD gem_gtt_hog
CCLD gem_gtt_speed
CCLD gem_hangcheck_forcewake
CCLD gem_largeobject
CCLD gem_linear_blits
CCLD gem_lut_handle
CCLD gem_madvise
CCLD gem_media_fill
CCLD gem_mmap
CCLD gem_mmap_gtt
CCLD gem_mmap_offset_exhaustion
CCLD gem_mmap_wc
CCLD gem_mocs_settings
CCLD gem_partial_pwrite_pread
CCLD gem_persistent_relocs
CCLD gem_pin
CCLD gem_pipe_control_store_loop
CCLD gem_ppgtt
CCLD gem_pread
CCLD gem_pread_after_blit
CCLD gem_pwrite
CCLD gem_pwrite_pread
CCLD gem_pwrite_snooped
CCLD gem_read_read_speed
CCLD gem_readwrite
CCLD gem_reg_read
CCLD gem_reloc_overflow
CCLD gem_reloc_vs_gpu
CCLD gem_render_copy
CCLD gem_render_copy_redux
CCLD gem_render_linear_blits
CCLD gem_render_tiled_blits
CCLD gem_request_retire
CCLD gem_reset_stats
CCLD gem_ring_sync_copy
CCLD gem_ring_sync_loop
CCLD gem_ringfill
CCLD gem_seqno_wrap
CCLD gem_set_tiling_vs_blt
CCLD gem_set_tiling_vs_gtt
CCLD gem_set_tiling_vs_pwrite
CCLD gem_shrink
CCLD gem_softpin
CCLD gem_spin_batch
CCLD gem_stolen
CCLD gem_storedw_batches_loop
CCLD gem_storedw_loop
CCLD gem_streaming_writes
CCLD gem_sync
CCLD gem_threaded_access_tiled
CCLD gem_tiled_blits
CCLD gem_tiled_fence_blits
CCLD gem_tiled_partial_pwrite_pread
CCLD gem_tiled_pread_basic
CCLD gem_tiled_pread_pwrite
CCLD gem_tiled_swapping
CCLD gem_tiled_wb
CCLD gem_tiled_wc
CCLD gem_tiling_max_stride
CCLD gem_unfence_active_buffers
CCLD gem_unref_active_buffers
CCLD gem_userptr_blits
CCLD gem_wait
CCLD gem_workarounds
CCLD gem_write_read_ring_switch
CCLD gen3_mixed_blits
CCLD gen3_render_linear_blits
CCLD gen3_render_mixed_blits
CCLD gen3_render_tiledx_blits
CCLD gen3_render_tiledy_blits
CCLD gen7_forcewake_mt
CCLD gvt_basic
CCLD kms_3d
CCLD kms_addfb_basic
CCLD kms_atomic
CC kms_atomic_interruptible.o
kms_atomic_interruptible.c: In function ‘run_plane_test’:
kms_atomic_interruptible.c:257:6: error: ‘test’ undeclared (first use in this function)
if (test == test_legacy_modeset || test_atomic_modeset)
^~~~kms_atomic_interruptible.c:257:6: note: each undeclared identifier is reported only once for each function it appears in Makefile:3952: recipe for target 'kms_atomic_interruptible.o' failed
make[3]: *** [kms_atomic_interruptible.o] Error 1
Makefile:4437: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
Makefile:528: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
Makefile:460: recipe for target 'all' failed
make: *** [all] Error 2
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx