diff options
author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2017-09-21 12:01:41 +0200 |
---|---|---|
committer | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2017-10-20 11:17:31 +0200 |
commit | 13ead623602b6f60033a2258d17f34094f1418be (patch) | |
tree | dda0ac1088fa38f74503ab05e51be504f9112636 /lib/igt_kms.h | |
parent | abc08cba366a64a07f7f4deb167ae7d6ae059958 (diff) |
lib/igt_kms: Rework connector properties to be more atomic, v2.
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.
Changs since v1:
- Mention which properties we set to what.
- Assert the property to be set is valid.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Diffstat (limited to 'lib/igt_kms.h')
-rw-r--r-- | lib/igt_kms.h | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/lib/igt_kms.h b/lib/igt_kms.h index 8dc118c9..1ef10e7d 100644 --- a/lib/igt_kms.h +++ b/lib/igt_kms.h @@ -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: |