[Piglit] [PATCH 4/9] util/wfl: Refactor make_context_current_singlepass()

Chad Versace chad.versace at linux.intel.com
Mon Dec 30 16:08:31 PST 2013


Let make_context_current_singlepass() directly call
waffle_config_choose(). Add helper function make_config_attrib_list()
that makes the attribute list passed to waffle_config_choose(). This
refactor will make possible better error messages.

Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
---
 .../piglit-framework-gl/piglit_wfl_framework.c     | 47 ++++++++++++----------
 1 file changed, 25 insertions(+), 22 deletions(-)

diff --git a/tests/util/piglit-framework-gl/piglit_wfl_framework.c b/tests/util/piglit-framework-gl/piglit_wfl_framework.c
index 534c1ff..2dbfa2f 100644
--- a/tests/util/piglit-framework-gl/piglit_wfl_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_wfl_framework.c
@@ -142,16 +142,22 @@ concat_attrib_lists(const int32_t a[], const int32_t b[])
 	return r;
 }
 
-static struct waffle_config*
-choose_config(struct piglit_wfl_framework *wfl_fw,
-              enum context_flavor flavor,
-              const int32_t partial_attrib_list[])
+/**
+ * \brief Return a attribute list suitable for waffle_config_choose().
+ *
+ * The funcion deduces the values of WAFFLE_CONTEXT_API,
+ * WAFFLE_CONTEXT_PROFILE, WAFFLE_CONTEXT_MAJOR_VERSION, and
+ * WAFFLE_CONTEXT_MINOR_VERSION from the given context \a flavor and \a
+ * test_config. The \a partial_attrib_list must not contain any of those
+ * attributes. Any attributes in \a partial_attrib_list are added to the
+ * returned attribute list.
+ */
+static int32_t*
+make_config_attrib_list(const struct piglit_gl_test_config *test_config,
+              	        enum context_flavor flavor,
+              	        const int32_t partial_attrib_list[])
 {
-	const struct piglit_gl_test_config *test_config = wfl_fw->gl_fw.test_config;
-
-	struct waffle_config *config;
 	int32_t head_attrib_list[64];
-	int32_t *full_attrib_list;
 	int32_t junk;
 	int i;
 
@@ -240,17 +246,7 @@ choose_config(struct piglit_wfl_framework *wfl_fw,
 			break;
 	}
 
-	full_attrib_list = concat_attrib_lists(head_attrib_list,
-	                                       partial_attrib_list);
-
-	config = waffle_config_choose(wfl_fw->display,
-	                              full_attrib_list);
-	if (!config) {
-		wfl_log_error("waffle_config_choose");
-	}
-
-	free(full_attrib_list);
-	return config;
+	return concat_attrib_lists(head_attrib_list, partial_attrib_list);
 }
 
 /**
@@ -337,15 +333,22 @@ make_context_current_singlepass(struct piglit_wfl_framework *wfl_fw,
                                 const int32_t partial_config_attrib_list[])
 {
 	bool ok;
+	int32_t *attrib_list = NULL;
 
 	assert(wfl_fw->config == NULL);
 	assert(wfl_fw->context == NULL);
 	assert(wfl_fw->window == NULL);
 
-	wfl_fw->config = choose_config(wfl_fw, flavor,
-	                               partial_config_attrib_list);
-	if (!wfl_fw->config)
+	attrib_list = make_config_attrib_list(test_config, flavor,
+					      partial_config_attrib_list);
+	assert(attrib_list);
+
+	wfl_fw->config = waffle_config_choose(wfl_fw->display, attrib_list);
+	free(attrib_list);
+	if (!wfl_fw->config) {
+		wfl_log_error("waffle_config_choose");
 		goto fail;
+	}
 
 	wfl_fw->context = waffle_context_create(wfl_fw->config, NULL);
 	if (!wfl_fw->context) {
-- 
1.8.4



More information about the Piglit mailing list