[Piglit] [PATCH 3/8] util/wfl: Refactor make_context_current_singlepass()
Chad Versace
chad.versace at linux.intel.com
Thu Dec 19 18:12:34 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