[Piglit] [PATCH 2/2] copyteximage: Also allow filtering of format from an argument.
Chad Versace
chad.versace at linux.intel.com
Wed Jun 5 14:11:09 PDT 2013
On 06/04/2013 11:27 AM, Eric Anholt wrote:
> When you're debugging your driver, you certainly don't want every
> format in your run.
> ---
> tests/texturing/copyteximage.c | 43 ++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 39 insertions(+), 4 deletions(-)
>
> diff --git a/tests/texturing/copyteximage.c b/tests/texturing/copyteximage.c
> index 3a15098..896a042 100644
> --- a/tests/texturing/copyteximage.c
> +++ b/tests/texturing/copyteximage.c
> @@ -108,6 +108,7 @@ static const struct {
> };
>
> static int test_target = -1;
> +static int test_vector = -1;
>
> PIGLIT_GL_TEST_CONFIG_BEGIN
>
> @@ -654,6 +655,12 @@ piglit_display(void)
> for (i = 0; i < ARRAY_SIZE(test_vectors); i++) {
> GLint x = IMAGE_SIZE * (i + 1);
> GLint y = 0;
> +
> + if (test_vector != -1 &&
> + test_vector != i) {
> + continue;
> + }
> +
> expected = (const float*)test_vectors[i].expected;
>
> if (!test_target_and_format(x, y, target[j].target,
> @@ -673,11 +680,17 @@ piglit_display(void)
> void
> piglit_init(int argc, char **argv)
> {
> - if (argc == 2) {
> + int c;
> +
> + for (c = 1; c < argc; c++) {
> + const char *arg = argv[c];
> + bool found = false;
> +
> unsigned i;
> for (i = 0; i < ARRAY_SIZE(target); i++) {
> - if (strcmp(target[i].name, argv[1]) == 0) {
> + if (strcmp(target[i].name, arg) == 0) {
> test_target = i;
> + found = true;
>
> if (!supported_target(i)) {
> printf("Test requires OpenGL %1.1f", target[i].gl_version * 0.1);
> @@ -690,13 +703,35 @@ piglit_init(int argc, char **argv)
> }
> }
>
> - if (test_target == -1) {
> - printf("usage: %s <target>\n", argv[0]);
> + for (i = 0; i < ARRAY_SIZE(test_vectors); i++) {
> + GLenum format = test_vectors[i].format;
> + const char *name = piglit_get_gl_enum_name(format);
> + if (strcmp(name, arg) != 0)
> + continue;
> +
> + test_vector = i;
> + found = true;
> +
> + if (!supported_format(format)) {
> + printf("Test requires a missing extension\n");
> + piglit_report_result(PIGLIT_SKIP);
> + }
> + break;
> + }
> +
> + if (!found) {
> + printf("usage: %s [target] [format]\n", argv[0]);
> printf("\n");
> printf("target is one of:\n");
> for (i = 0; i < ARRAY_SIZE(target); i++)
> printf(" %s\n", target[i].name);
>
> + printf("format is one of:\n");
> + for (i = 0; i < ARRAY_SIZE(test_vectors); i++) {
> + GLenum format = test_vectors[i].format;
> + printf(" %s\n", piglit_get_gl_enum_name(format));
> + }
> +
> piglit_report_result(PIGLIT_FAIL);
> }
> }
I agree with the intent, but not the arg parsing here.
It looks like the new arg parsing allows [by allow, I mean the final
!found block does not get triggered] the following malformed arg lists.
./app format format // Last format wins.
./app target target // Last target wins.
./app target target target target format target // Last target wins.
More information about the Piglit
mailing list