Re: [Intel-gfx] [PATCH i-g-t v2 06/15] igt_kms: Change PIPE_ANY behavior to mean unassigned

2016-07-21 Thread Ander Conselvan De Oliveira
On Wed, 2016-07-06 at 11:55 +0200, Maarten Lankhorst wrote:
> None of the tests requires that a output bound to PIPE_ANY is assigned,
> so don't do it. Fix the display commit to iterate over crtc's instead
> of outputs to properly disable pipes without outputs.
> 
> This also means that output->valid is only set after connecting a
> output to a pipe, so no longer depend on it in for_each_connected_output
> and similar macros.
> 
> Signed-off-by: Maarten Lankhorst 
> ---
>  lib/igt_kms.c | 246 -
> -
>  lib/igt_kms.h |  18 -
>  2 files changed, 135 insertions(+), 129 deletions(-)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index ce8aa2455348..88cae7d51787 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -869,18 +869,20 @@ static bool _kmstest_connector_config(int drm_fd,
> uint32_t connector_id,
>    */
>   _kmstest_connector_config_crtc_mask(drm_fd, connector, config);
>  
> + if (!kmstest_get_connector_default_mode(drm_fd, connector,
> + &config->default_mode))
> + goto err3;
> +
> + config->connector = connector;
> +
>   crtc_idx_mask &= config->valid_crtc_idx_mask;
>   if (!crtc_idx_mask)
> - goto err3;
> + /* Keep config->connector */
> + goto err2;
>  
>   config->pipe = ffs(crtc_idx_mask) - 1;
>  
> - if (!kmstest_get_connector_default_mode(drm_fd, connector,
> - &config->default_mode))
> - goto err3;
> -
>   config->encoder = _kmstest_connector_config_find_encoder(drm_fd,
> connector, config->pipe);
> - config->connector = connector;
>   config->crtc = drmModeGetCrtc(drm_fd, resources->crtcs[config-
> >pipe]);
>  
>   drmModeFreeResources(resources);
> @@ -940,8 +942,13 @@ bool kmstest_probe_connector_config(int drm_fd, uint32_t
> connector_id,
>  void kmstest_free_connector_config(struct kmstest_connector_config *config)
>  {
>   drmModeFreeCrtc(config->crtc);
> + config->crtc = NULL;
> +
>   drmModeFreeEncoder(config->encoder);
> + config->encoder = NULL;
> +
>   drmModeFreeConnector(config->connector);
> + config->connector = NULL;
>  }
>  
>  /**
> @@ -1197,8 +1204,7 @@ static void igt_output_refresh(igt_output_t *output)
>   /* we mask out the pipes already in use */
>   crtc_idx_mask = output->pending_crtc_idx_mask & ~display-
> >pipes_in_use;
>  
> - if (output->valid)
> - kmstest_free_connector_config(&output->config);
> + kmstest_free_connector_config(&output->config);
>  
>   ret = kmstest_get_connector_config(display->drm_fd,
>      output->id,
> @@ -1209,19 +1215,19 @@ static void igt_output_refresh(igt_output_t *output)
>   else
>   output->valid = false;
>  
> - if (!output->valid)
> - return;
> -
> - if (output->use_override_mode)
> - output->config.default_mode = output->override_mode;
> -
> - if (!output->name) {
> + if (!output->name && output->config.connector) {
>   drmModeConnector *c = output->config.connector;
>  
>   igt_assert_neq(asprintf(&output->name, "%s-%d",
> kmstest_connector_type_str(c->connector_type), c->connector_type_id),
>      -1);
>   }
>  
> + if (!output->valid)
> + return;
> +
> + if (output->use_override_mode)
> + output->config.default_mode = output->override_mode;
> +
>   LOG(display, "%s: Selecting pipe %s\n", output->name,
>   kmstest_pipe_name(output->config.pipe));
>  
> @@ -1259,10 +1265,10 @@ get_crtc_property(int drm_fd, uint32_t crtc_id, const
> char *name,
>  }
>  
>  static void
> -igt_crtc_set_property(igt_output_t *output, uint32_t prop_id, uint64_t value)
> +igt_crtc_set_property(igt_pipe_t *pipe, uint32_t prop_id, uint64_t value)
>  {
> - drmModeObjectSetProperty(output->display->drm_fd,
> - output->config.crtc->crtc_id, DRM_MODE_OBJECT_CRTC, prop_id,
> value);
> + drmModeObjectSetProperty(pipe->display->drm_fd,
> + pipe->crtc_id, DRM_MODE_OBJECT_CRTC, prop_id, value);
>  }
>  
>  /*
> @@ -1325,15 +1331,37 @@ void igt_display_init(igt_display_t *display, int
> drm_fd)
>   int p = IGT_PLANE_2;
>   int j, type;
>   uint8_t n_planes = 0;
> + uint64_t prop_value;
>  
>   pipe->crtc_id = resources->crtcs[i];
>   pipe->display = display;
>   pipe->pipe = i;
>  
> + get_crtc_property(display->drm_fd, pipe->crtc_id,
> + "background_color",
> + &pipe->background_property,
> + &prop_value,
> + NULL);
> + pipe->background = (uint32_t)prop_value;
> + get_crtc_property(display

[Intel-gfx] [PATCH i-g-t v2 06/15] igt_kms: Change PIPE_ANY behavior to mean unassigned

2016-07-06 Thread Maarten Lankhorst
None of the tests requires that a output bound to PIPE_ANY is assigned,
so don't do it. Fix the display commit to iterate over crtc's instead
of outputs to properly disable pipes without outputs.

This also means that output->valid is only set after connecting a
output to a pipe, so no longer depend on it in for_each_connected_output
and similar macros.

Signed-off-by: Maarten Lankhorst 
---
 lib/igt_kms.c | 246 --
 lib/igt_kms.h |  18 -
 2 files changed, 135 insertions(+), 129 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index ce8aa2455348..88cae7d51787 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -869,18 +869,20 @@ static bool _kmstest_connector_config(int drm_fd, 
uint32_t connector_id,
 */
_kmstest_connector_config_crtc_mask(drm_fd, connector, config);
 
+   if (!kmstest_get_connector_default_mode(drm_fd, connector,
+   &config->default_mode))
+   goto err3;
+
+   config->connector = connector;
+
crtc_idx_mask &= config->valid_crtc_idx_mask;
if (!crtc_idx_mask)
-   goto err3;
+   /* Keep config->connector */
+   goto err2;
 
config->pipe = ffs(crtc_idx_mask) - 1;
 
-   if (!kmstest_get_connector_default_mode(drm_fd, connector,
-   &config->default_mode))
-   goto err3;
-
config->encoder = _kmstest_connector_config_find_encoder(drm_fd, 
connector, config->pipe);
-   config->connector = connector;
config->crtc = drmModeGetCrtc(drm_fd, resources->crtcs[config->pipe]);
 
drmModeFreeResources(resources);
@@ -940,8 +942,13 @@ bool kmstest_probe_connector_config(int drm_fd, uint32_t 
connector_id,
 void kmstest_free_connector_config(struct kmstest_connector_config *config)
 {
drmModeFreeCrtc(config->crtc);
+   config->crtc = NULL;
+
drmModeFreeEncoder(config->encoder);
+   config->encoder = NULL;
+
drmModeFreeConnector(config->connector);
+   config->connector = NULL;
 }
 
 /**
@@ -1197,8 +1204,7 @@ static void igt_output_refresh(igt_output_t *output)
/* we mask out the pipes already in use */
crtc_idx_mask = output->pending_crtc_idx_mask & ~display->pipes_in_use;
 
-   if (output->valid)
-   kmstest_free_connector_config(&output->config);
+   kmstest_free_connector_config(&output->config);
 
ret = kmstest_get_connector_config(display->drm_fd,
   output->id,
@@ -1209,19 +1215,19 @@ static void igt_output_refresh(igt_output_t *output)
else
output->valid = false;
 
-   if (!output->valid)
-   return;
-
-   if (output->use_override_mode)
-   output->config.default_mode = output->override_mode;
-
-   if (!output->name) {
+   if (!output->name && output->config.connector) {
drmModeConnector *c = output->config.connector;
 
igt_assert_neq(asprintf(&output->name, "%s-%d", 
kmstest_connector_type_str(c->connector_type), c->connector_type_id),
   -1);
}
 
+   if (!output->valid)
+   return;
+
+   if (output->use_override_mode)
+   output->config.default_mode = output->override_mode;
+
LOG(display, "%s: Selecting pipe %s\n", output->name,
kmstest_pipe_name(output->config.pipe));
 
@@ -1259,10 +1265,10 @@ get_crtc_property(int drm_fd, uint32_t crtc_id, const 
char *name,
 }
 
 static void
-igt_crtc_set_property(igt_output_t *output, uint32_t prop_id, uint64_t value)
+igt_crtc_set_property(igt_pipe_t *pipe, uint32_t prop_id, uint64_t value)
 {
-   drmModeObjectSetProperty(output->display->drm_fd,
-   output->config.crtc->crtc_id, DRM_MODE_OBJECT_CRTC, prop_id, 
value);
+   drmModeObjectSetProperty(pipe->display->drm_fd,
+   pipe->crtc_id, DRM_MODE_OBJECT_CRTC, prop_id, value);
 }
 
 /*
@@ -1325,15 +1331,37 @@ void igt_display_init(igt_display_t *display, int 
drm_fd)
int p = IGT_PLANE_2;
int j, type;
uint8_t n_planes = 0;
+   uint64_t prop_value;
 
pipe->crtc_id = resources->crtcs[i];
pipe->display = display;
pipe->pipe = i;
 
+   get_crtc_property(display->drm_fd, pipe->crtc_id,
+   "background_color",
+   &pipe->background_property,
+   &prop_value,
+   NULL);
+   pipe->background = (uint32_t)prop_value;
+   get_crtc_property(display->drm_fd, pipe->crtc_id,
+ "DEGAMMA_LUT",
+ &pipe->degamma_property,
+ NULL,
+