• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

hardware/intel/libva


Commit MetaInfo

Revision7e31f1283285258198bd1b276b6195badc3c7e4e (tree)
Zeit2012-09-26 18:40:50
AutorGwenole Beauchesne <gwenole.beauchesne@inte...>
CommiterGwenole Beauchesne

Log Message

tests: allow selection of display.

Make it possible to select display for test applications that need
to render the decoded surfaces. Usage: --display <name> args.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>

Ändern Zusammenfassung

Diff

--- a/test/common/va_display.c
+++ b/test/common/va_display.c
@@ -25,7 +25,10 @@
2525 #ifdef HAVE_CONFIG_H
2626 # include "config.h"
2727 #endif
28+#include <stdio.h>
29+#include <stdlib.h>
2830 #include <stddef.h>
31+#include <string.h>
2932 #include <va/va.h>
3033 #include "va_display.h"
3134
@@ -42,6 +45,66 @@ static const VADisplayHooks *g_display_hooks_available[] = {
4245 NULL
4346 };
4447
48+static const char *g_display_name;
49+
50+static const char *
51+get_display_name(int argc, char *argv[])
52+{
53+ const char *display_name = NULL;
54+ int i;
55+
56+ for (i = 1; i < argc; i++) {
57+ if (strcmp(argv[i], "--display") != 0)
58+ continue;
59+ argv[i] = NULL;
60+
61+ if (++i < argc) {
62+ display_name = argv[i];
63+ argv[i] = NULL;
64+ }
65+ }
66+ return display_name;
67+}
68+
69+static void
70+print_display_names(void)
71+{
72+ const VADisplayHooks **h;
73+
74+ printf("Available displays:\n");
75+ for (h = g_display_hooks_available; *h != NULL; h++)
76+ printf(" %s\n", (*h)->name);
77+}
78+
79+static void
80+sanitize_args(int *argc, char *argv[])
81+{
82+ char **out_args = argv;
83+ int i, n = *argc;
84+
85+ for (i = 0; i < n; i++) {
86+ if (argv[i])
87+ *out_args++ = argv[i];
88+ }
89+ *out_args = NULL;
90+ *argc = out_args - argv;
91+}
92+
93+void
94+va_init_display_args(int *argc, char *argv[])
95+{
96+ const char *display_name;
97+
98+ display_name = get_display_name(*argc, argv);
99+ if (display_name && strcmp(display_name, "help") == 0) {
100+ print_display_names();
101+ exit(0);
102+ }
103+ g_display_name = display_name;
104+
105+ sanitize_args(argc, argv);
106+}
107+
45108 VADisplay
46109 va_open_display(void)
47110 {
@@ -50,10 +113,21 @@ va_open_display(void)
50113
51114 for (i = 0; !va_dpy && g_display_hooks_available[i]; i++) {
52115 g_display_hooks = g_display_hooks_available[i];
116+ if (g_display_name &&
117+ strcmp(g_display_name, g_display_hooks->name) != 0)
118+ continue;
53119 if (!g_display_hooks->open_display)
54120 continue;
55121 va_dpy = g_display_hooks->open_display();
56122 }
123+
124+ if (!va_dpy) {
125+ fprintf(stderr, "error: failed to initialize display");
126+ if (g_display_name)
127+ fprintf(stderr, " '%s'", g_display_name);
128+ fprintf(stderr, "\n");
129+ abort();
130+ }
57131 return va_dpy;
58132 }
59133
--- a/test/common/va_display.h
+++ b/test/common/va_display.h
@@ -32,6 +32,7 @@ extern "C" {
3232 #endif
3333
3434 typedef struct {
35+ const char *name;
3536 VADisplay (*open_display) (void);
3637 void (*close_display) (VADisplay va_dpy);
3738 VAStatus (*put_surface) (VADisplay va_dpy, VASurfaceID surface,
@@ -39,6 +40,9 @@ typedef struct {
3940 const VARectangle *dst_rect);
4041 } VADisplayHooks;
4142
43+void
44+va_init_display_args(int *argc, char *argv[]);
45+
4246 VADisplay
4347 va_open_display(void);
4448
--- a/test/common/va_display_android.cpp
+++ b/test/common/va_display_android.cpp
@@ -85,6 +85,7 @@ va_put_surface_android(
8585
8686 extern "C"
8787 const VADisplayHooks va_display_hooks_android = {
88+ "android",
8889 va_open_display_android,
8990 va_close_display_android,
9091 va_put_surface_android
--- a/test/common/va_display_x11.c
+++ b/test/common/va_display_x11.c
@@ -132,6 +132,7 @@ va_put_surface_x11(
132132 }
133133
134134 const VADisplayHooks va_display_hooks_x11 = {
135+ "x11",
135136 va_open_display_x11,
136137 va_close_display_x11,
137138 va_put_surface_x11,
--- a/test/decode/loadjpeg.c
+++ b/test/decode/loadjpeg.c
@@ -37,6 +37,7 @@
3737 #include <stdlib.h>
3838 #include <string.h>
3939 #include <time.h>
40+#include "va_display.h"
4041
4142 static void exitmessage(const char *message) __attribute__((noreturn));
4243 static void exitmessage(const char *message)
@@ -114,6 +115,8 @@ int main(int argc, char *argv[])
114115 unsigned int duration;
115116 int current_argument;
116117
118+ va_init_display_args(&argc, argv);
119+
117120 if (argc < 2)
118121 usage();
119122
--- a/test/decode/mpeg2vldemo.cpp
+++ b/test/decode/mpeg2vldemo.cpp
@@ -150,6 +150,8 @@ int main(int argc,char **argv)
150150 VAStatus va_status;
151151 int putsurface=0;
152152
153+ va_init_display_args(&argc, argv);
154+
153155 if (argc > 1)
154156 putsurface=1;
155157