浏览代码

xdemos/glsync: Add swap interval support to glsync test

tags/7.8-rc1
Jesse Barnes 16 年前
父节点
当前提交
f35f666f81
共有 1 个文件被更改,包括 17 次插入3 次删除
  1. 17
    3
      progs/xdemos/glsync.c

+ 17
- 3
progs/xdemos/glsync.c 查看文件

@@ -59,6 +59,7 @@

void (*video_sync_get)();
void (*video_sync)();
void (*swap_interval)();

static int GLXExtensionSupported(Display *dpy, const char *extension)
{
@@ -84,7 +85,7 @@ static int GLXExtensionSupported(Display *dpy, const char *extension)

extern char *optarg;
extern int optind, opterr, optopt;
static char optstr[] = "w:h:s:v";
static char optstr[] = "w:h:s:vi:";

enum sync_type {
none = 0,
@@ -100,6 +101,7 @@ static void usage(char *name)
printf("\t\tn: none\n");
printf("\t\ts: SGI video sync extension\n");
printf("\t\tb: buffer swap\n");
printf("\t-i<swap interval>\n");
printf("\t-v: verbose (print count)\n");
exit(-1);
}
@@ -117,7 +119,7 @@ int main(int argc, char *argv[])
Atom wmDelete;
enum sync_type waitforsync = none;
int width = 500, height = 500, verbose = 0,
countonly = 0;
countonly = 0, interval = 1;
int c, i = 1;

opterr = 0;
@@ -148,6 +150,9 @@ int main(int argc, char *argv[])
case 'v':
verbose = 1;
break;
case 'i':
interval = atoi(optarg);
break;
default:
usage(argv[0]);
break;
@@ -227,11 +232,15 @@ int main(int argc, char *argv[])
video_sync_get = glXGetProcAddress((unsigned char *)"glXGetVideoSyncSGI");
video_sync = glXGetProcAddress((unsigned char *)"glXWaitVideoSyncSGI");

if (!video_sync_get || !video_sync) {
swap_interval = glXGetProcAddress((unsigned char *)"glXSwapIntervalSGI");

if (!video_sync_get || !video_sync || !swap_interval) {
fprintf(stderr, "failed to get sync functions\n");
return -1;
}

swap_interval(interval);
fprintf(stderr, "set swap interval to %d\n", interval);
video_sync_get(&count);
count++;
while (i++) {
@@ -256,6 +265,11 @@ int main(int argc, char *argv[])
continue;
}

if (verbose) {
video_sync_get(&count);
fprintf(stderr, "current count: %d\n", count);
}

/* Alternate colors to make tearing obvious */
if (i & 1)
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);

正在加载...
取消
保存