From 1af804d55482d6a245dfa9eaeba4a8722d7930e9 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 29 Sep 2022 23:00:41 -0400 Subject: [PATCH] delete graw tests MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit These seem abandoned and they make interfaces changes less easy. Acked-by: Marek Olšák Acked-by: Alyssa Rosenzweig Part-of: --- src/gallium/tests/graw/clear.c | 121 ---- src/gallium/tests/graw/disasm.c | 90 --- .../tests/graw/fragment-shader/frag-abs.txt | 13 - .../tests/graw/fragment-shader/frag-add.txt | 8 - .../tests/graw/fragment-shader/frag-cb-1d.txt | 13 - .../tests/graw/fragment-shader/frag-cb-2d.txt | 9 - .../tests/graw/fragment-shader/frag-dp3.txt | 8 - .../tests/graw/fragment-shader/frag-dp4.txt | 8 - .../tests/graw/fragment-shader/frag-dst.txt | 8 - .../tests/graw/fragment-shader/frag-ex2.txt | 11 - .../tests/graw/fragment-shader/frag-face.txt | 14 - .../tests/graw/fragment-shader/frag-flr.txt | 15 - .../tests/graw/fragment-shader/frag-frc.txt | 13 - .../tests/graw/fragment-shader/frag-kil.txt | 18 - .../tests/graw/fragment-shader/frag-lg2.txt | 15 - .../tests/graw/fragment-shader/frag-lit.txt | 8 - .../tests/graw/fragment-shader/frag-lrp.txt | 11 - .../tests/graw/fragment-shader/frag-mad-immx.txt | 10 - .../tests/graw/fragment-shader/frag-mad.txt | 11 - .../tests/graw/fragment-shader/frag-max.txt | 10 - .../tests/graw/fragment-shader/frag-min.txt | 10 - .../tests/graw/fragment-shader/frag-mov.txt | 8 - .../tests/graw/fragment-shader/frag-mul.txt | 10 - .../tests/graw/fragment-shader/frag-rcp.txt | 15 - .../tests/graw/fragment-shader/frag-rsq.txt | 15 - .../tests/graw/fragment-shader/frag-sge.txt | 13 - .../tests/graw/fragment-shader/frag-slt.txt | 13 - .../tests/graw/fragment-shader/frag-srcmod-abs.txt | 13 - .../graw/fragment-shader/frag-srcmod-absneg.txt | 15 - .../tests/graw/fragment-shader/frag-srcmod-neg.txt | 11 - .../tests/graw/fragment-shader/frag-srcmod-swz.txt | 8 - .../tests/graw/fragment-shader/frag-sub.txt | 8 - .../tests/graw/fragment-shader/frag-tempx.txt | 14 - .../tests/graw/fragment-shader/frag-ucmp.txt | 11 - .../tests/graw/fragment-shader/frag-xpd.txt | 8 - src/gallium/tests/graw/fs-fragcoord.c | 264 --------- src/gallium/tests/graw/fs-frontface.c | 211 ------- src/gallium/tests/graw/fs-test.c | 518 ----------------- src/gallium/tests/graw/fs-write-z.c | 227 -------- src/gallium/tests/graw/geometry-shader/add-mix.txt | 24 - src/gallium/tests/graw/geometry-shader/add.txt | 24 - src/gallium/tests/graw/geometry-shader/line.txt | 28 - .../tests/graw/geometry-shader/mov-cb-2d.txt | 25 - src/gallium/tests/graw/geometry-shader/mov.txt | 24 - .../tests/graw/geometry-shader/multi-line.txt | 42 -- src/gallium/tests/graw/graw_util.h | 329 ----------- src/gallium/tests/graw/gs-test.c | 613 --------------------- src/gallium/tests/graw/meson.build | 36 -- src/gallium/tests/graw/occlusion-query.c | 245 -------- src/gallium/tests/graw/quad-sample.c | 417 -------------- src/gallium/tests/graw/quad-tex.c | 231 -------- src/gallium/tests/graw/shader-leak.c | 282 ---------- src/gallium/tests/graw/tex-srgb.c | 228 -------- src/gallium/tests/graw/tex-swizzle.c | 230 -------- src/gallium/tests/graw/tgsi_dump.gdb | 6 - src/gallium/tests/graw/tri-gs.c | 284 ---------- src/gallium/tests/graw/tri-instanced.c | 361 ------------ src/gallium/tests/graw/tri-large.c | 175 ------ src/gallium/tests/graw/tri.c | 172 ------ src/gallium/tests/graw/vertex-shader/vert-abs.txt | 15 - src/gallium/tests/graw/vertex-shader/vert-add.txt | 13 - src/gallium/tests/graw/vertex-shader/vert-arl.txt | 23 - src/gallium/tests/graw/vertex-shader/vert-arr.txt | 23 - .../tests/graw/vertex-shader/vert-cb-1d.txt | 16 - .../tests/graw/vertex-shader/vert-cb-2d.txt | 12 - src/gallium/tests/graw/vertex-shader/vert-dp3.txt | 16 - src/gallium/tests/graw/vertex-shader/vert-dp4.txt | 16 - src/gallium/tests/graw/vertex-shader/vert-dst.txt | 11 - src/gallium/tests/graw/vertex-shader/vert-ex2.txt | 18 - src/gallium/tests/graw/vertex-shader/vert-flr.txt | 23 - src/gallium/tests/graw/vertex-shader/vert-frc.txt | 15 - .../tests/graw/vertex-shader/vert-imul_hi.txt | 13 - src/gallium/tests/graw/vertex-shader/vert-lg2.txt | 18 - src/gallium/tests/graw/vertex-shader/vert-lit.txt | 11 - src/gallium/tests/graw/vertex-shader/vert-lrp.txt | 14 - src/gallium/tests/graw/vertex-shader/vert-mad.txt | 14 - src/gallium/tests/graw/vertex-shader/vert-max.txt | 13 - src/gallium/tests/graw/vertex-shader/vert-min.txt | 13 - src/gallium/tests/graw/vertex-shader/vert-mov.txt | 11 - src/gallium/tests/graw/vertex-shader/vert-mul.txt | 13 - src/gallium/tests/graw/vertex-shader/vert-rcp.txt | 18 - src/gallium/tests/graw/vertex-shader/vert-rsq.txt | 18 - src/gallium/tests/graw/vertex-shader/vert-sge.txt | 16 - src/gallium/tests/graw/vertex-shader/vert-slt.txt | 16 - .../tests/graw/vertex-shader/vert-srcmod-abs.txt | 15 - .../graw/vertex-shader/vert-srcmod-absneg.txt | 16 - .../tests/graw/vertex-shader/vert-srcmod-neg.txt | 12 - .../tests/graw/vertex-shader/vert-srcmod-swz.txt | 11 - src/gallium/tests/graw/vertex-shader/vert-sub.txt | 13 - src/gallium/tests/graw/vertex-shader/vert-uadd.txt | 9 - .../tests/graw/vertex-shader/vert-umul_hi.txt | 11 - src/gallium/tests/graw/vertex-shader/vert-xpd.txt | 11 - src/gallium/tests/graw/vs-test.c | 507 ----------------- src/gallium/tests/meson.build | 2 - 94 files changed, 6578 deletions(-) delete mode 100644 src/gallium/tests/graw/clear.c delete mode 100644 src/gallium/tests/graw/disasm.c delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-abs.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-add.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-cb-1d.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-cb-2d.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-dp3.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-dp4.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-dst.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-ex2.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-face.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-flr.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-frc.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-kil.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-lg2.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-lit.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-lrp.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-mad-immx.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-mad.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-max.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-min.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-mov.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-mul.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-rcp.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-rsq.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-sge.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-slt.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-srcmod-abs.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-srcmod-absneg.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-srcmod-neg.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-srcmod-swz.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-sub.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-tempx.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-ucmp.txt delete mode 100644 src/gallium/tests/graw/fragment-shader/frag-xpd.txt delete mode 100644 src/gallium/tests/graw/fs-fragcoord.c delete mode 100644 src/gallium/tests/graw/fs-frontface.c delete mode 100644 src/gallium/tests/graw/fs-test.c delete mode 100644 src/gallium/tests/graw/fs-write-z.c delete mode 100644 src/gallium/tests/graw/geometry-shader/add-mix.txt delete mode 100644 src/gallium/tests/graw/geometry-shader/add.txt delete mode 100644 src/gallium/tests/graw/geometry-shader/line.txt delete mode 100644 src/gallium/tests/graw/geometry-shader/mov-cb-2d.txt delete mode 100644 src/gallium/tests/graw/geometry-shader/mov.txt delete mode 100644 src/gallium/tests/graw/geometry-shader/multi-line.txt delete mode 100644 src/gallium/tests/graw/graw_util.h delete mode 100644 src/gallium/tests/graw/gs-test.c delete mode 100644 src/gallium/tests/graw/meson.build delete mode 100644 src/gallium/tests/graw/occlusion-query.c delete mode 100644 src/gallium/tests/graw/quad-sample.c delete mode 100644 src/gallium/tests/graw/quad-tex.c delete mode 100644 src/gallium/tests/graw/shader-leak.c delete mode 100644 src/gallium/tests/graw/tex-srgb.c delete mode 100644 src/gallium/tests/graw/tex-swizzle.c delete mode 100644 src/gallium/tests/graw/tgsi_dump.gdb delete mode 100644 src/gallium/tests/graw/tri-gs.c delete mode 100644 src/gallium/tests/graw/tri-instanced.c delete mode 100644 src/gallium/tests/graw/tri-large.c delete mode 100644 src/gallium/tests/graw/tri.c delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-abs.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-add.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-arl.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-arr.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-cb-1d.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-cb-2d.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-dp3.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-dp4.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-dst.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-ex2.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-flr.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-frc.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-imul_hi.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-lg2.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-lit.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-lrp.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-mad.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-max.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-min.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-mov.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-mul.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-rcp.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-rsq.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-sge.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-slt.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-srcmod-abs.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-srcmod-absneg.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-srcmod-neg.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-srcmod-swz.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-sub.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-uadd.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-umul_hi.txt delete mode 100644 src/gallium/tests/graw/vertex-shader/vert-xpd.txt delete mode 100644 src/gallium/tests/graw/vs-test.c diff --git a/src/gallium/tests/graw/clear.c b/src/gallium/tests/graw/clear.c deleted file mode 100644 index d46b9c9..0000000 --- a/src/gallium/tests/graw/clear.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Display a cleared blue window. This demo has no dependencies on - * any utility code, just the graw interface and gallium. - */ - -#include -#include "frontend/graw.h" -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_state.h" -#include "pipe/p_defines.h" - -enum pipe_format formats[] = { - PIPE_FORMAT_RGBA8888_UNORM, - PIPE_FORMAT_BGRA8888_UNORM, - PIPE_FORMAT_NONE -}; - -static const int WIDTH = 300; -static const int HEIGHT = 300; - -struct pipe_screen *screen; -struct pipe_context *ctx; -struct pipe_surface *surf; -struct pipe_resource *tex; -static void *window = NULL; - -static void draw( void ) -{ - union pipe_color_union clear_color = { {1, 0, 1, 1} }; - - ctx->clear(ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - ctx->flush(ctx, NULL, 0); - - graw_save_surface_to_file(ctx, surf, NULL); - - screen->flush_frontbuffer(screen, ctx, tex, 0, 0, window, NULL); -} - -static void init( void ) -{ - struct pipe_framebuffer_state fb; - struct pipe_resource templat; - struct pipe_surface surf_tmpl; - int i; - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; formats[i] != PIPE_FORMAT_NONE; i++) { - screen = graw_create_window_and_screen(0, 0, 300, 300, - formats[i], - &window); - if (window && screen) - break; - } - if (!screen || !window) { - fprintf(stderr, "Unable to create window\n"); - exit(1); - } - - ctx = screen->context_create(screen, NULL, 0); - if (ctx == NULL) - exit(3); - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = formats[i]; - templat.width0 = WIDTH; - templat.height0 = HEIGHT; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - - tex = screen->resource_create(screen, - &templat); - if (tex == NULL) - exit(4); - - surf_tmpl.format = templat.format; - surf_tmpl.u.tex.level = 0; - surf_tmpl.u.tex.first_layer = 0; - surf_tmpl.u.tex.last_layer = 0; - surf = ctx->create_surface(ctx, tex, &surf_tmpl); - if (surf == NULL) - exit(5); - - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = 1; - fb.width = WIDTH; - fb.height = HEIGHT; - fb.cbufs[0] = surf; - - ctx->set_framebuffer_state(ctx, &fb); -} - -static void args(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc;) { - if (graw_parse_args(&i, argc, argv)) { - continue; - } - exit(1); - } -} - -int main( int argc, char *argv[] ) -{ - args(argc, argv); - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/disasm.c b/src/gallium/tests/graw/disasm.c deleted file mode 100644 index 0eef8cf..0000000 --- a/src/gallium/tests/graw/disasm.c +++ /dev/null @@ -1,90 +0,0 @@ -/************************************************************************** - * - * Copyright 2013 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL THE AUTHOR AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - - -/* - * Small utility to disassemble a memory dump of TGSI tokens. - * - * Dump can be easily obtained from gdb through the tgsi_dump.gdb helper: - * - * (gdb) source tgsi_dump.gdb - * (gdb) tgsi_dump state->tokens - * - * which will generate a tgsi_dump.bin file in the current directory. - */ - - -#include -#include - -#include "pipe/p_shader_tokens.h" -#include "tgsi/tgsi_dump.h" - - -static void -usage(const char *arg0) -{ - fprintf(stderr, "usage: %s [ options ] ...\n", arg0); -} - - -static void -disasm(const char *filename) -{ - FILE *fp; - const size_t max_tokens = 1024*1024; - struct tgsi_token *tokens; - - fp = fopen(filename, "rb"); - if (!fp) { - exit(1); - } - tokens = malloc(max_tokens * sizeof *tokens); - fread(tokens, sizeof *tokens, max_tokens, fp); - - tgsi_dump(tokens, 0); - - free(tokens); - fclose(fp); -} - - -int main( int argc, char *argv[] ) -{ - int i; - - if (argc < 2) { - usage(argv[0]); - return 0; - } - - for (i = 1; i < argc; ++i) { - disasm(argv[i]); - } - - return 0; -} diff --git a/src/gallium/tests/graw/fragment-shader/frag-abs.txt b/src/gallium/tests/graw/fragment-shader/frag-abs.txt deleted file mode 100644 index 103d749..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-abs.txt +++ /dev/null @@ -1,13 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { -0.5, -0.4, -0.6, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -ABS OUT[0], TEMP[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-add.txt b/src/gallium/tests/graw/fragment-shader/frag-add.txt deleted file mode 100644 index bcb9420..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-add.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -ADD OUT[0], IN[0], IN[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-cb-1d.txt b/src/gallium/tests/graw/fragment-shader/frag-cb-1d.txt deleted file mode 100644 index 0977743..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-cb-1d.txt +++ /dev/null @@ -1,13 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR -DCL CONST[0][1] -DCL CONST[0][3] -DCL TEMP[0..1] - -ADD TEMP[0], IN[0], CONST[0][1] -RCP TEMP[1], CONST[0][3].xxxx -MUL OUT[0], TEMP[0], TEMP[1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-cb-2d.txt b/src/gallium/tests/graw/fragment-shader/frag-cb-2d.txt deleted file mode 100644 index bbc3a10..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-cb-2d.txt +++ /dev/null @@ -1,9 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR -DCL CONST[1][6] - -MOV OUT[0], CONST[1][6] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-dp3.txt b/src/gallium/tests/graw/fragment-shader/frag-dp3.txt deleted file mode 100644 index b528197..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-dp3.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DP3 OUT[0], IN[0], IN[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-dp4.txt b/src/gallium/tests/graw/fragment-shader/frag-dp4.txt deleted file mode 100644 index d59df76..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-dp4.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DP4 OUT[0], IN[0].xyzx, IN[0].xyzx - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-dst.txt b/src/gallium/tests/graw/fragment-shader/frag-dst.txt deleted file mode 100644 index fbb20fa..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-dst.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DST OUT[0], IN[0], IN[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-ex2.txt b/src/gallium/tests/graw/fragment-shader/frag-ex2.txt deleted file mode 100644 index b511288..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-ex2.txt +++ /dev/null @@ -1,11 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -EX2 TEMP[0], IN[0].xxxx -MUL OUT[0], TEMP[0], IN[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-face.txt b/src/gallium/tests/graw/fragment-shader/frag-face.txt deleted file mode 100644 index 5745b6a..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-face.txt +++ /dev/null @@ -1,14 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL IN[1], FACE, CONSTANT -DCL OUT[0], COLOR -DCL TEMP[0] -IMM FLT32 { 0.5, 1.0, 0.0, 0.0 } - -MUL TEMP[0], IN[1].xxxx, IMM[0].xxxx -ADD TEMP[0], TEMP[0], IMM[0].yyyy - -MOV OUT[0], TEMP[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-flr.txt b/src/gallium/tests/graw/fragment-shader/frag-flr.txt deleted file mode 100644 index 99a2f96..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-flr.txt +++ /dev/null @@ -1,15 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { 2.5, 4.0, 2.0, 1.0 } -IMM FLT32 { 0.4, 0.25, 0.5, 1.0 } - -MUL TEMP[0], IN[0], IMM[0] -FLR TEMP[0], TEMP[0] -MUL OUT[0], TEMP[0], IMM[1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-frc.txt b/src/gallium/tests/graw/fragment-shader/frag-frc.txt deleted file mode 100644 index a54c262..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-frc.txt +++ /dev/null @@ -1,13 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { 2.7, 3.1, 4.5, 1.0 } - -MUL TEMP[0], IN[0], IMM[0] -FRC OUT[0], TEMP[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-kil.txt b/src/gallium/tests/graw/fragment-shader/frag-kil.txt deleted file mode 100644 index 583b0ca..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-kil.txt +++ /dev/null @@ -1,18 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { 0.6, 0.6, 0.6, 0.0 } -IMM FLT32 { 0.01, 0.0, 0.0, 0.0 } -IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } - -SLT TEMP[0], IN[0], IMM[0] -MUL OUT[0], IN[0], TEMP[0] -MOV OUT[0].w, IMM[2].xxxx -SUB TEMP[0], TEMP[0], IMM[1].xxxy -KIL TEMP[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-lg2.txt b/src/gallium/tests/graw/fragment-shader/frag-lg2.txt deleted file mode 100644 index 5f5b4be..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-lg2.txt +++ /dev/null @@ -1,15 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } -IMM FLT32 { 0.5, 0.0, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -LG2 TEMP[0].x, TEMP[0].xxxx -ADD OUT[0], TEMP[0], IMM[1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-lit.txt b/src/gallium/tests/graw/fragment-shader/frag-lit.txt deleted file mode 100644 index 6323c47..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-lit.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -LIT OUT[0], IN[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-lrp.txt b/src/gallium/tests/graw/fragment-shader/frag-lrp.txt deleted file mode 100644 index 740809d..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-lrp.txt +++ /dev/null @@ -1,11 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -ABS TEMP[0], IN[0] -LRP OUT[0], TEMP[0], IN[0].xxxx, IN[0].yyyy - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-mad-immx.txt b/src/gallium/tests/graw/fragment-shader/frag-mad-immx.txt deleted file mode 100644 index 6b03491..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-mad-immx.txt +++ /dev/null @@ -1,10 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR -DCL IMMX[0..1] {{ 0.5, 0.4, 0.6, 1.0 }, - { 0.5, 0.4, 0.6, 0.0 }} - -MAD OUT[0], IN[0], IMMX[0], IMMX[1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-mad.txt b/src/gallium/tests/graw/fragment-shader/frag-mad.txt deleted file mode 100644 index 413b9dc..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-mad.txt +++ /dev/null @@ -1,11 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -IMM FLT32 { 0.5, 0.4, 0.6, 1.0 } -IMM FLT32 { 0.5, 0.4, 0.6, 0.0 } - -MAD OUT[0], IN[0], IMM[0], IMM[1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-max.txt b/src/gallium/tests/graw/fragment-shader/frag-max.txt deleted file mode 100644 index b69f213..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-max.txt +++ /dev/null @@ -1,10 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -IMM FLT32 { 0.4, 0.4, 0.4, 0.0 } - -MAX OUT[0], IN[0], IMM[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-min.txt b/src/gallium/tests/graw/fragment-shader/frag-min.txt deleted file mode 100644 index df284f4..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-min.txt +++ /dev/null @@ -1,10 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -IMM FLT32 { 0.6, 0.6, 0.6, 1.0 } - -MIN OUT[0], IN[0], IMM[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-mov.txt b/src/gallium/tests/graw/fragment-shader/frag-mov.txt deleted file mode 100644 index 64af72f..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-mov.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -MOV OUT[0], IN[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-mul.txt b/src/gallium/tests/graw/fragment-shader/frag-mul.txt deleted file mode 100644 index bdd0b00..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-mul.txt +++ /dev/null @@ -1,10 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -IMM FLT32 { 0.5, 0.6, 0.7, 1.0 } - -MUL OUT[0], IN[0], IMM[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-rcp.txt b/src/gallium/tests/graw/fragment-shader/frag-rcp.txt deleted file mode 100644 index f4b611b..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-rcp.txt +++ /dev/null @@ -1,15 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } -IMM FLT32 { 1.5, 0.0, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -RCP TEMP[0].x, TEMP[0].xxxx -SUB OUT[0], TEMP[0], IMM[1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-rsq.txt b/src/gallium/tests/graw/fragment-shader/frag-rsq.txt deleted file mode 100644 index d1e9b0b..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-rsq.txt +++ /dev/null @@ -1,15 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } -IMM FLT32 { 1.5, 0.0, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -RSQ TEMP[0].x, TEMP[0].xxxx -SUB OUT[0], TEMP[0], IMM[1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-sge.txt b/src/gallium/tests/graw/fragment-shader/frag-sge.txt deleted file mode 100644 index 1f33fac..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-sge.txt +++ /dev/null @@ -1,13 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { 0.6, 0.6, 0.6, 0.0 } - -SGE TEMP[0], IN[0], IMM[0] -MUL OUT[0], IN[0], TEMP[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-slt.txt b/src/gallium/tests/graw/fragment-shader/frag-slt.txt deleted file mode 100644 index d58b788..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-slt.txt +++ /dev/null @@ -1,13 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { 0.6, 0.6, 0.6, 0.0 } - -SLT TEMP[0], IN[0], IMM[0] -MUL OUT[0], IN[0], TEMP[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-srcmod-abs.txt b/src/gallium/tests/graw/fragment-shader/frag-srcmod-abs.txt deleted file mode 100644 index ecd1924..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-srcmod-abs.txt +++ /dev/null @@ -1,13 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { -0.3, -0.5, -0.4, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -MOV OUT[0], |TEMP[0]| - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-srcmod-absneg.txt b/src/gallium/tests/graw/fragment-shader/frag-srcmod-absneg.txt deleted file mode 100644 index c2d99dd..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-srcmod-absneg.txt +++ /dev/null @@ -1,15 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -IMM FLT32 { -0.2, -0.3, -0.4, 0.0 } -IMM FLT32 { -1.0, -1.0, -1.0, -1.0 } - -ADD TEMP[0], IN[0], IMM[0] -MOV TEMP[0], -|TEMP[0]| -MUL OUT[0], TEMP[0], IMM[1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-srcmod-neg.txt b/src/gallium/tests/graw/fragment-shader/frag-srcmod-neg.txt deleted file mode 100644 index a08ab6d..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-srcmod-neg.txt +++ /dev/null @@ -1,11 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMP[0] - -SUB TEMP[0], IN[0], IN[0].yzxw -MOV OUT[0], -TEMP[0] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-srcmod-swz.txt b/src/gallium/tests/graw/fragment-shader/frag-srcmod-swz.txt deleted file mode 100644 index 6110647..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-srcmod-swz.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -MOV OUT[0], IN[0].yxzw - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-sub.txt b/src/gallium/tests/graw/fragment-shader/frag-sub.txt deleted file mode 100644 index 673fca1..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-sub.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -SUB OUT[0], IN[0], IN[0].yzxw - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-tempx.txt b/src/gallium/tests/graw/fragment-shader/frag-tempx.txt deleted file mode 100644 index 81bcad2..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-tempx.txt +++ /dev/null @@ -1,14 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -DCL TEMPX[0][0..1] - -IMM FLT32 { -0.5, -0.4, -0.6, 0.0 } - -ADD TEMPX[0][0], IN[0], IMM[0] -ADD TEMPX[0][1], IN[0], IMM[0] -ABS OUT[0], TEMPX[0][1] - -END diff --git a/src/gallium/tests/graw/fragment-shader/frag-ucmp.txt b/src/gallium/tests/graw/fragment-shader/frag-ucmp.txt deleted file mode 100644 index fa4ea25..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-ucmp.txt +++ /dev/null @@ -1,11 +0,0 @@ -FRAG -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR -DCL TEMP[0] -IMM[0] FLT32 { 10.0000, 1.0000, 0.0000, 0.0000} -IMM[1] UINT32 {1, 0, 0, 0} -0: MUL TEMP[0].x, IN[0].xxxx, IMM[0].xxxx -1: F2U TEMP[0].x, TEMP[0].xxxx -2: AND TEMP[0].x, TEMP[0].xxxx, IMM[1].xxxx -3: UCMP OUT[0], TEMP[0].xxxx, IMM[0].yzzz, IMM[0].yyyz -4: END diff --git a/src/gallium/tests/graw/fragment-shader/frag-xpd.txt b/src/gallium/tests/graw/fragment-shader/frag-xpd.txt deleted file mode 100644 index 6ec8b11..0000000 --- a/src/gallium/tests/graw/fragment-shader/frag-xpd.txt +++ /dev/null @@ -1,8 +0,0 @@ -FRAG - -DCL IN[0], COLOR, LINEAR -DCL OUT[0], COLOR - -XPD OUT[0], IN[0], IN[0].yzxw - -END diff --git a/src/gallium/tests/graw/fs-fragcoord.c b/src/gallium/tests/graw/fs-fragcoord.c deleted file mode 100644 index 8be8c6f..0000000 --- a/src/gallium/tests/graw/fs-fragcoord.c +++ /dev/null @@ -1,264 +0,0 @@ -/* Test the TGSI_SEMANTIC_POSITION fragment shader input. - * Plus properties for upper-left vs. lower-left origin and - * center integer vs. half-integer; - */ - -#include - -#include "graw_util.h" - -#include "util/macros.h" - - -static int width = 300; -static int height = 300; - -static struct graw_info info; - -struct vertex { - float position[4]; - float color[4]; -}; - -/* Note: the upper-left vertex is pushed to the left a bit to - * make sure we can spot upside-down rendering. - */ -static struct vertex vertices[] = -{ - { - {-0.95, -0.95, 0.5, 1.0 }, - { 0, 0, 0, 1 } - }, - - { - { 0.85, -0.95, 0.5, 1.0 }, - { 0, 0, 0, 1 } - }, - - { - { 0.95, 0.95, 0.5, 1.0 }, - { 0, 0, 0, 1 } - }, - - { - {-0.95, 0.95, 0.5, 1.0 }, - { 0, 0, 0, 1 } - } -}; - -#define NUM_VERTS ARRAY_SIZE(vertices) - - -static void -set_vertices(void) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof(struct vertex); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - - -static void -set_vertex_shader(void) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], GENERIC[0]\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: MOV OUT[1], IN[1]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info.ctx, text); - info.ctx->bind_vs_state(info.ctx, handle); -} - - -static void -set_fragment_shader(int mode) -{ - void *handle; - - const char *origin_upper_left_text = - "FRAG\n" - "PROPERTY FS_COORD_ORIGIN UPPER_LEFT\n" /* upper-left = black corner */ - "DCL IN[0], POSITION, LINEAR\n" - "DCL OUT[0], COLOR\n" - "DCL TEMP[0]\n" - "IMM FLT32 { 0.003333, 0.003333, 1.0, 1.0 }\n" - "IMM FLT32 { 0.0, 300.0, 0.0, 0.0 }\n" - " 0: MOV TEMP[0], IN[0] \n" - " 1: MOV TEMP[0].zw, IMM[1].xxxx \n" - " 2: MUL OUT[0], TEMP[0], IMM[0] \n" - " 3: END\n"; - - const char *origin_lower_left_text = - "FRAG\n" - "PROPERTY FS_COORD_ORIGIN LOWER_LEFT\n" /* lower-left = black corner */ - "DCL IN[0], POSITION, LINEAR\n" - "DCL OUT[0], COLOR\n" - "DCL TEMP[0]\n" - "IMM FLT32 { 0.003333, 0.003333, 1.0, 1.0 }\n" - "IMM FLT32 { 0.0, 300.0, 0.0, 0.0 }\n" - " 0: MOV TEMP[0], IN[0] \n" - " 1: MOV TEMP[0].zw, IMM[1].xxxx \n" - " 2: MUL OUT[0], TEMP[0], IMM[0] \n" - " 3: END\n"; - - /* Test fragcoord center integer vs. half integer */ - const char *center_integer_text = - "FRAG\n" - "PROPERTY FS_COORD_PIXEL_CENTER INTEGER \n" /* pixels are black */ - "DCL IN[0], POSITION, LINEAR \n" - "DCL OUT[0], COLOR \n" - "DCL TEMP[0] \n" - "IMM FLT32 { 0.003333, 0.003333, 1.0, 1.0 } \n" - "IMM FLT32 { 0.0, 300.0, 0.0, 0.0 } \n" - "0: FRC TEMP[0], IN[0] \n" - "1: MOV TEMP[0].zw, IMM[1].xxxx \n" - "2: MOV OUT[0], TEMP[0] \n" - "3: END \n"; - - const char *center_half_integer_text = - "FRAG\n" - "PROPERTY FS_COORD_PIXEL_CENTER HALF_INTEGER \n" /* pixels are olive colored */ - "DCL IN[0], POSITION, LINEAR \n" - "DCL OUT[0], COLOR \n" - "DCL TEMP[0] \n" - "IMM FLT32 { 0.003333, 0.003333, 1.0, 1.0 } \n" - "IMM FLT32 { 0.0, 300.0, 0.0, 0.0 } \n" - "0: FRC TEMP[0], IN[0] \n" - "1: MOV TEMP[0].zw, IMM[1].xxxx \n" - "2: MOV OUT[0], TEMP[0] \n" - "3: END \n"; - - const char *text; - - if (mode == 0) - text = origin_upper_left_text; - else if (mode == 1) - text = origin_lower_left_text; - else if (mode == 2) - text = center_integer_text; - else - text = center_half_integer_text; - - handle = graw_parse_fragment_shader(info.ctx, text); - info.ctx->bind_fs_state(info.ctx, handle); -} - - -static void -draw(void) -{ - union pipe_color_union clear_color; - - clear_color.f[0] = 0.25; - clear_color.f[1] = 0.25; - clear_color.f[2] = 0.25; - clear_color.f[3] = 1.0; - - info.ctx->clear(info.ctx, - PIPE_CLEAR_COLOR | PIPE_CLEAR_DEPTHSTENCIL, - NULL, - &clear_color, 1.0, 0); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, NUM_VERTS); - info.ctx->flush(info.ctx, NULL, 0); - -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(info.ctx, "result.bmp", surf); -#endif - - graw_util_flush_front(&info); -} - - -#if 0 -static void -resize(int w, int h) -{ - width = w; - height = h; - - set_viewport(0, 0, width, height, 30, 1000); -} -#endif - - -static void -init(int mode) -{ - if (!graw_util_create_window(&info, width, height, 1, TRUE)) - exit(1); - - graw_util_default_state(&info, TRUE); - - graw_util_viewport(&info, 0, 0, width, height, -1.0, 1.0); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(mode); -} - - -int -main(int argc, char *argv[]) -{ - int mode = argc > 1 ? atoi(argv[1]) : 0; - - switch (mode) { - default: - case 0: - printf("frag coord origin upper-left (lower-left = black)\n"); - break; - case 1: - printf("frag coord origin lower-left (upper-left = black)\n"); - break; - case 2: - printf("frag coord center integer (all pixels black)\n"); - break; - case 3: - printf("frag coord center half-integer (all pixels olive color)\n"); - break; - } - - init(mode); - - graw_set_display_func(draw); - /*graw_set_reshape_func(resize);*/ - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/fs-frontface.c b/src/gallium/tests/graw/fs-frontface.c deleted file mode 100644 index d740144..0000000 --- a/src/gallium/tests/graw/fs-frontface.c +++ /dev/null @@ -1,211 +0,0 @@ -/* Test the TGSI_SEMANTIC_FACE fragment shader input. - */ - -#include - -#include "graw_util.h" - -#include "util/macros.h" - - -static int width = 300; -static int height = 300; - -static struct graw_info info; - -struct vertex { - float position[4]; - float color[4]; -}; - -#define z0 0.2 -#define z01 0.5 -#define z1 0.4 - -static struct vertex vertices[] = -{ - /* left quad: clock-wise, front-facing, red */ - { - {-0.8, -0.9, z0, 1.0 }, - { 0, 0, 0, 1 } - }, - - { - { -0.2, -0.9, z0, 1.0 }, - { 0, 0, 0, 1 } - }, - - { - { 0.2, 0.9, z01, 1.0 }, - { 0, 0, 0, 1 } - }, - - { - {-0.9, 0.9, z01, 1.0 }, - { 0, 0, 0, 1 } - }, - - /* right quad : counter-clock-wise, back-facing, green */ - { - { 0.2, -0.9, z1, 1.0 }, - { 1, 1, 1, -1 } - }, - - { - { -0.2, 0.8, z1, 1.0 }, - { 1, 1, 1, -1 } - }, - - { - { 0.9, 0.8, z1, 1.0 }, - { 1, 1, 1, -1 } - }, - - { - { 0.8, -0.9, z1, 1.0 }, - { 1, 1, 1, -1 } - }, -}; - -#define NUM_VERTS ARRAY_SIZE(vertices) - - - -static void -set_vertices(void) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof(struct vertex); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - - -static void -set_vertex_shader(void) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], GENERIC[0]\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: MOV OUT[1], IN[1]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info.ctx, text); - info.ctx->bind_vs_state(info.ctx, handle); -} - - -static void -set_fragment_shader(void) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], FACE, CONSTANT\n" - "DCL IN[1], GENERIC, CONSTANT\n" - "DCL OUT[0], COLOR\n" - "DCL TEMP[0]\n" - "IMM FLT32 { 1.0, 0.0, 0.0, 0.0 }\n" - "IMM FLT32 { 0.0, 1.0, 0.0, 0.0 }\n" - "IMM FLT32 { 0.5, 0.6, 0.0, 0.0 }\n" - " 0: SGT TEMP[0].x, IN[0].xxxx, IMM[1].xxxx\n" /* TMP[0].x = IN[0].x > 0.0 */ - " 1: IF TEMP[0].xxxx :4\n" - " 2: MOV OUT[0], IMM[0]\n" /* front-facing: red */ - " 3: ELSE :5\n" - " 4: MOV OUT[0], IMM[1]\n" /* back-facing: green */ - " 5: ENDIF\n" - " 6: END\n"; - - handle = graw_parse_fragment_shader(info.ctx, text); - info.ctx->bind_fs_state(info.ctx, handle); -} - - -static void -draw(void) -{ - union pipe_color_union clear_color; - - clear_color.f[0] = 0.25; - clear_color.f[1] = 0.25; - clear_color.f[2] = 0.25; - clear_color.f[3] = 1.00; - - info.ctx->clear(info.ctx, - PIPE_CLEAR_COLOR | PIPE_CLEAR_DEPTHSTENCIL, - NULL, - &clear_color, 1.0, 0); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, NUM_VERTS); - info.ctx->flush(info.ctx, NULL, 0); - - graw_util_flush_front(&info); -} - - -#if 0 -static void -resize(int w, int h) -{ - width = w; - height = h; - - set_viewport(0, 0, width, height, 30, 1000); -} -#endif - - -static void -init(void) -{ - if (!graw_util_create_window(&info, width, height, 1, TRUE)) - exit(1); - - graw_util_default_state(&info, TRUE); - - graw_util_viewport(&info, 0, 0, width, height, -1.0, 1.0); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - - -int -main(int argc, char *argv[]) -{ - init(); - - printf("Left quad: clock-wise, front-facing, red\n"); - printf("Right quad: counter clock-wise, back-facing, green\n"); - - graw_set_display_func(draw); - /*graw_set_reshape_func(resize);*/ - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/fs-test.c b/src/gallium/tests/graw/fs-test.c deleted file mode 100644 index b4ddfb6..0000000 --- a/src/gallium/tests/graw/fs-test.c +++ /dev/null @@ -1,518 +0,0 @@ -/* Display a cleared blue window. This demo has no dependencies on - * any utility code, just the graw interface and gallium. - */ - -#include "frontend/graw.h" -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_shader_tokens.h" -#include "pipe/p_state.h" -#include "pipe/p_defines.h" -#include /* for fread(), etc */ - -#include "util/u_inlines.h" -#include "util/u_memory.h" /* Offset() */ -#include "util/u_draw_quad.h" -#include "util/u_box.h" - -static const char *filename = NULL; -unsigned show_fps = 0; - - -static void usage(char *name) -{ - fprintf(stderr, "usage: %s [ options ] shader_filename\n", name); -#ifndef _WIN32 - fprintf(stderr, "\n" ); - fprintf(stderr, "options:\n"); - fprintf(stderr, " -fps show frames per second\n"); -#endif -} - - -enum pipe_format formats[] = { - PIPE_FORMAT_RGBA8888_UNORM, - PIPE_FORMAT_BGRA8888_UNORM, - PIPE_FORMAT_NONE -}; - -static const int WIDTH = 250; -static const int HEIGHT = 250; - -static struct pipe_screen *screen = NULL; -static struct pipe_context *ctx = NULL; -static struct pipe_resource *rttex = NULL; -static struct pipe_surface *surf = NULL; -static struct pipe_sampler_view *sv = NULL; -static void *sampler = NULL; -static void *window = NULL; -static struct pipe_resource *samptex = NULL; - -struct vertex { - float position[4]; - float color[4]; - float texcoord[4]; -}; - -/* Vertex data matches progs/fp/fp-tri.c, but flipped in Y dimension - * so that the final images are the same. - */ -static struct vertex vertices[] = -{ - { { 0.9, 0.9, 0.0, 1.0 }, - { 0, 0, 1, 1 }, - { 1, 1, 0, 1 } }, - - { { 0.9, -0.9, 0.0, 1.0 }, - { 1, 0, 0, 1 }, - { 1, -1, 0, 1 } }, - - { {-0.9, 0.0, 0.0, 1.0 }, - { 0, 1, 0, 1 }, - { -1, 0, 0, 1 } }, -}; - -static float constants1[] = -{ 0.4, 0, 0, 1, - 1, 1, 1, 1, - 2, 2, 2, 2, - 4, 8, 16, 32, - - 3, 0, 0, 0, - 0, .5, 0, 0, - 1, 0, 0, 1, - 0, 0, 0, 1, - - 1, 0, 0, 0.5, - 0, 1, 0, 0.5, - 0, 0, 1, 0, - 0, 0, 0, 1, -}; - - -static float constants2[] = -{ 1, 0, 0, 1, - 0, 1, 0, 1, - 0, 0, 1, 1, - 0, 0, 0, 0, - - 1, 1, 0, 1, - 1, .5, 0, 1, - 1, 0, 0, 1, - 0, 0, 0, 1, - - 1, 0, 0, 0.5, - 0, 1, 0, 0.5, - 0, 0, 1, 0, - 0, 0, 0, 1, -}; - -static void init_fs_constbuf( void ) -{ - struct pipe_constant_buffer cb1; - struct pipe_constant_buffer cb2; - - memset(&cb1, 0, sizeof cb1); - cb1.buffer_size = sizeof constants1; - cb1.user_buffer = constants1; - - ctx->set_constant_buffer(ctx, - PIPE_SHADER_FRAGMENT, 0, false, - &cb1); - - memset(&cb2, 0, sizeof cb2); - cb2.buffer_size = sizeof constants2; - cb2.user_buffer = constants2; - - ctx->set_constant_buffer(ctx, - PIPE_SHADER_FRAGMENT, 1, false, - &cb2); -} - - -static void set_viewport( float x, float y, - float width, float height, - float zNear, float zFar) -{ - float z = zFar; - float half_width = (float)width / 2.0f; - float half_height = (float)height / 2.0f; - float half_depth = ((float)zFar - (float)zNear) / 2.0f; - struct pipe_viewport_state vp; - - vp.scale[0] = half_width; - vp.scale[1] = half_height; - vp.scale[2] = half_depth; - - vp.translate[0] = half_width + x; - vp.translate[1] = half_height + y; - vp.translate[2] = half_depth + z; - - vp.swizzle_x = PIPE_VIEWPORT_SWIZZLE_POSITIVE_X; - vp.swizzle_y = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Y; - vp.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; - vp.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; - - ctx->set_viewport_states( ctx, 0, 1, &vp ); -} - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[3]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[2].src_offset = Offset(struct vertex, texcoord); - ve[2].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = ctx->create_vertex_elements_state(ctx, 3, ve); - ctx->bind_vertex_elements_state(ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof( struct vertex ); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - ctx->set_vertex_buffers(ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL IN[2]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], COLOR[0]\n" - "DCL OUT[2], GENERIC[0]\n" - " MOV OUT[0], IN[0]\n" - " MOV OUT[1], IN[1]\n" - " MOV OUT[2], IN[2]\n" - " END\n"; - - handle = graw_parse_vertex_shader(ctx, text); - ctx->bind_vs_state(ctx, handle); -} - -static void set_fragment_shader( const char *filename ) -{ - FILE *f; - char buf[50000]; - void *handle; - int sz; - - if ((f = fopen(filename, "r")) == NULL) { - fprintf(stderr, "Couldn't open %s\n", filename); - exit(1); - } - - sz = fread(buf, 1, sizeof(buf), f); - if (!feof(f)) { - printf("file too long\n"); - exit(1); - } - printf("%.*s\n", sz, buf); - buf[sz] = 0; - - handle = graw_parse_fragment_shader(ctx, buf); - ctx->bind_fs_state(ctx, handle); - fclose(f); -} - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {.1,.3,.5,0} }; - - ctx->clear(ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(ctx, PIPE_PRIM_TRIANGLES, 0, 3); - ctx->flush(ctx, NULL, 0); - - graw_save_surface_to_file(ctx, surf, NULL); - - screen->flush_frontbuffer(screen, ctx, rttex, 0, 0, window, NULL); -} - -#define SIZE 16 - -static void init_tex( void ) -{ - struct pipe_sampler_view sv_template; - struct pipe_sampler_state sampler_desc; - struct pipe_resource templat; - struct pipe_box box; - ubyte tex2d[SIZE][SIZE][4]; - int s, t; - -#if (SIZE != 2) - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - if (0) { - int x = (s ^ t) & 1; - tex2d[t][s][0] = (x) ? 0 : 63; - tex2d[t][s][1] = (x) ? 0 : 128; - tex2d[t][s][2] = 0; - tex2d[t][s][3] = 0xff; - } - else { - int x = ((s ^ t) >> 2) & 1; - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = (x) ? 0 : 128; - tex2d[t][s][3] = 0xff; - } - } - } -#else - tex2d[0][0][0] = 0; - tex2d[0][0][1] = 255; - tex2d[0][0][2] = 255; - tex2d[0][0][3] = 0; - - tex2d[0][1][0] = 0; - tex2d[0][1][1] = 0; - tex2d[0][1][2] = 255; - tex2d[0][1][3] = 255; - - tex2d[1][0][0] = 255; - tex2d[1][0][1] = 255; - tex2d[1][0][2] = 0; - tex2d[1][0][3] = 255; - - tex2d[1][1][0] = 255; - tex2d[1][1][1] = 0; - tex2d[1][1][2] = 0; - tex2d[1][1][3] = 255; -#endif - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = PIPE_FORMAT_B8G8R8A8_UNORM; - templat.width0 = SIZE; - templat.height0 = SIZE; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = PIPE_BIND_SAMPLER_VIEW; - - - samptex = screen->resource_create(screen, - &templat); - if (samptex == NULL) - exit(4); - - u_box_2d(0,0,SIZE,SIZE, &box); - - ctx->texture_subdata(ctx, - samptex, - 0, - PIPE_MAP_WRITE, - &box, - tex2d, - sizeof tex2d[0], - sizeof tex2d); - - /* Possibly read back & compare against original data: - */ - if (0) - { - struct pipe_transfer *t; - uint32_t *ptr; - ptr = pipe_texture_map(ctx, samptex, - 0, 0, /* level, layer */ - PIPE_MAP_READ, - 0, 0, SIZE, SIZE, &t); /* x, y, width, height */ - - if (memcmp(ptr, tex2d, sizeof tex2d) != 0) { - assert(0); - exit(9); - } - - ctx->texture_unmap(ctx, t); - } - - memset(&sv_template, 0, sizeof sv_template); - sv_template.format = samptex->format; - sv_template.texture = samptex; - sv_template.swizzle_r = 0; - sv_template.swizzle_g = 1; - sv_template.swizzle_b = 2; - sv_template.swizzle_a = 3; - sv = ctx->create_sampler_view(ctx, samptex, &sv_template); - if (sv == NULL) - exit(5); - - ctx->set_sampler_views(ctx, PIPE_SHADER_FRAGMENT, 0, 1, 0, false, &sv); - - - memset(&sampler_desc, 0, sizeof sampler_desc); - sampler_desc.wrap_s = PIPE_TEX_WRAP_REPEAT; - sampler_desc.wrap_t = PIPE_TEX_WRAP_REPEAT; - sampler_desc.wrap_r = PIPE_TEX_WRAP_REPEAT; - sampler_desc.min_img_filter = PIPE_TEX_FILTER_NEAREST; - sampler_desc.min_mip_filter = PIPE_TEX_MIPFILTER_NONE; - sampler_desc.mag_img_filter = PIPE_TEX_FILTER_NEAREST; - sampler_desc.compare_mode = PIPE_TEX_COMPARE_NONE; - sampler_desc.compare_func = 0; - sampler_desc.normalized_coords = 1; - sampler_desc.max_anisotropy = 0; - - sampler = ctx->create_sampler_state(ctx, &sampler_desc); - if (sampler == NULL) - exit(6); - - ctx->bind_sampler_states(ctx, PIPE_SHADER_FRAGMENT, 0, 1, &sampler); - -} - -static void init( void ) -{ - struct pipe_framebuffer_state fb; - struct pipe_resource templat; - struct pipe_surface surf_tmpl; - int i; - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; formats[i] != PIPE_FORMAT_NONE; i++) { - screen = graw_create_window_and_screen(0, 0, 300, 300, - formats[i], - &window); - if (window && screen) - break; - } - if (!screen || !window) { - fprintf(stderr, "Unable to create window\n"); - exit(1); - } - - ctx = screen->context_create(screen, NULL, 0); - if (ctx == NULL) - exit(3); - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = formats[i]; - templat.width0 = WIDTH; - templat.height0 = HEIGHT; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - - rttex = screen->resource_create(screen, - &templat); - if (rttex == NULL) - exit(4); - - surf_tmpl.format = templat.format; - surf_tmpl.u.tex.level = 0; - surf_tmpl.u.tex.first_layer = 0; - surf_tmpl.u.tex.last_layer = 0; - surf = ctx->create_surface(ctx, rttex, &surf_tmpl); - if (surf == NULL) - exit(5); - - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = 1; - fb.width = WIDTH; - fb.height = HEIGHT; - fb.cbufs[0] = surf; - - ctx->set_framebuffer_state(ctx, &fb); - - { - struct pipe_blend_state blend; - void *handle; - memset(&blend, 0, sizeof blend); - blend.rt[0].colormask = PIPE_MASK_RGBA; - handle = ctx->create_blend_state(ctx, &blend); - ctx->bind_blend_state(ctx, handle); - } - - { - struct pipe_depth_stencil_alpha_state depthstencil; - void *handle; - memset(&depthstencil, 0, sizeof depthstencil); - handle = ctx->create_depth_stencil_alpha_state(ctx, &depthstencil); - ctx->bind_depth_stencil_alpha_state(ctx, handle); - } - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = ctx->create_rasterizer_state(ctx, &rasterizer); - ctx->bind_rasterizer_state(ctx, handle); - } - - set_viewport(0, 0, WIDTH, HEIGHT, 30, 1000); - - init_tex(); - init_fs_constbuf(); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(filename); -} - -static void args(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc;) { - if (graw_parse_args(&i, argc, argv)) { - continue; - } - if (strcmp(argv[i], "-fps") == 0) { - show_fps = 1; - i++; - } - else if (i == argc - 1) { - filename = argv[i]; - i++; - } - else { - usage(argv[0]); - exit(1); - } - } - - if (!filename) { - usage(argv[0]); - exit(1); - } -} - -int main( int argc, char *argv[] ) -{ - args(argc,argv); - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/fs-write-z.c b/src/gallium/tests/graw/fs-write-z.c deleted file mode 100644 index ac255b6..0000000 --- a/src/gallium/tests/graw/fs-write-z.c +++ /dev/null @@ -1,227 +0,0 @@ -/* Test the writing Z in fragment shader. - * The red quad should be entirely in front of the blue quad even - * though the overlap and intersect in Z. - */ - -#include - -#include "graw_util.h" - -#include "util/macros.h" - - -static int width = 300; -static int height = 300; - -static struct graw_info info; - - -struct vertex { - float position[4]; - float color[4]; -}; - -#define z0 0.2 -#define z01 0.5 -#define z1 0.4 - - -static struct vertex vertices[] = -{ - /* left quad: clock-wise, front-facing, red */ - { - {-0.8, -0.9, z0, 1.0 }, - { 1, 0, 0, 1 } - }, - - { - { -0.2, -0.9, z0, 1.0 }, - { 1, 0, 0, 1 } - }, - - { - { 0.2, 0.9, z01, 1.0 }, - { 1, 0, 0, 1 } - }, - - { - {-0.9, 0.9, z01, 1.0 }, - { 1, 0, 0, 1 } - }, - - /* right quad : counter-clock-wise, back-facing, green */ - { - { 0.2, -0.9, z1, 1.0 }, - { 0, 0, 1, -1 } - }, - - { - { -0.2, 0.8, z1, 1.0 }, - { 0, 0, 1, -1 } - }, - - { - { 0.9, 0.8, z1, 1.0 }, - { 0, 0, 1, -1 } - }, - - { - { 0.8, -0.9, z1, 1.0 }, - { 0, 0, 1, -1 } - }, -}; - -#define NUM_VERTS ARRAY_SIZE(vertices) - - - -static void -set_vertices(void) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof(struct vertex); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - - -static void -set_vertex_shader(void) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], GENERIC[0]\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: MOV OUT[1], IN[1]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info.ctx, text); - info.ctx->bind_vs_state(info.ctx, handle); -} - - -static void -set_fragment_shader(void) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], GENERIC, CONSTANT\n" - "DCL OUT[0], COLOR\n" - "DCL OUT[1], POSITION\n" - "DCL TEMP[0]\n" - "IMM FLT32 { 1.0, 0.0, 0.0, 0.0 }\n" - "IMM FLT32 { 0.0, 1.0, 0.0, 0.0 }\n" - "IMM FLT32 { 0.5, 0.4, 0.0, 0.0 }\n" - " 0: MOV OUT[0], IN[0]\n" /* front-facing: red */ - " 1: IF IN[0].xxxx :3\n" - " 2: MOV OUT[1].z, IMM[2].yyyy\n" /* red: Z = 0.4 */ - " 3: ELSE :5\n" - " 4: MOV OUT[1].z, IMM[2].xxxx\n" /* blue: Z = 0.5 */ - " 5: ENDIF\n" - " 6: END\n"; - - handle = graw_parse_fragment_shader(info.ctx, text); - info.ctx->bind_fs_state(info.ctx, handle); -} - - - -static void -draw(void) -{ - union pipe_color_union clear_color; - - clear_color.f[0] = 0.25; - clear_color.f[1] = 0.25; - clear_color.f[2] = 0.25; - clear_color.f[3] = 1.00; - - info.ctx->clear(info.ctx, - PIPE_CLEAR_COLOR | PIPE_CLEAR_DEPTHSTENCIL, - NULL, - &clear_color, 1.0, 0); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, NUM_VERTS); - info.ctx->flush(info.ctx, NULL, 0); - -#if 0 - /* At the moment, libgraw leaks out/makes available some of the - * symbols from gallium/auxiliary, including these debug helpers. - * Will eventually want to bless some of these paths, and lock the - * others down so they aren't accessible from test programs. - * - * This currently just happens to work on debug builds - a release - * build will probably fail to link here: - */ - debug_dump_surface_bmp(info.ctx, "result.bmp", surf); -#endif - - graw_util_flush_front(&info); -} - - -#if 0 -static void -resize(int w, int h) -{ - width = w; - height = h; - - graw_util_viewport(&info, 0, 0, width, height, -1.0, 1.0); -} -#endif - - -static void -init(void) -{ - if (!graw_util_create_window(&info, width, height, 1, TRUE)) - exit(1); - - graw_util_default_state(&info, TRUE); - - graw_util_viewport(&info, 0, 0, width, height, -1.0, 1.0); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - - -int -main(int argc, char *argv[]) -{ - init(); - - printf("The red quad should be entirely in front of the blue quad.\n"); - - graw_set_display_func(draw); - /*graw_set_reshape_func(resize);*/ - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/geometry-shader/add-mix.txt b/src/gallium/tests/graw/geometry-shader/add-mix.txt deleted file mode 100644 index bbe4164..0000000 --- a/src/gallium/tests/graw/geometry-shader/add-mix.txt +++ /dev/null @@ -1,24 +0,0 @@ -GEOM -PROPERTY GS_INPUT_PRIMITIVE TRIANGLES -PROPERTY GS_OUTPUT_PRIMITIVE TRIANGLE_STRIP -PROPERTY GS_MAX_OUTPUT_VERTICES 3 -DCL IN[][0], POSITION, CONSTANT -DCL IN[][1], COLOR, CONSTANT -DCL OUT[0], POSITION, CONSTANT -DCL OUT[1], COLOR, CONSTANT - -MOV OUT[0], IN[0][0] -ADD OUT[1], IN[0][1], IN[1][1] -EMIT - -MOV OUT[0], IN[1][0] -ADD OUT[1], IN[1][1], IN[2][1] -EMIT - -MOV OUT[0], IN[2][0] -ADD OUT[1], IN[2][1], IN[0][1] -EMIT - -ENDPRIM - -END diff --git a/src/gallium/tests/graw/geometry-shader/add.txt b/src/gallium/tests/graw/geometry-shader/add.txt deleted file mode 100644 index 8373dac..0000000 --- a/src/gallium/tests/graw/geometry-shader/add.txt +++ /dev/null @@ -1,24 +0,0 @@ -GEOM -PROPERTY GS_INPUT_PRIMITIVE TRIANGLES -PROPERTY GS_OUTPUT_PRIMITIVE LINE_STRIP -PROPERTY GS_MAX_OUTPUT_VERTICES 3 -DCL IN[][0], POSITION, CONSTANT -DCL IN[][1], COLOR, CONSTANT -DCL OUT[0], POSITION, CONSTANT -DCL OUT[1], COLOR, CONSTANT - -MOV OUT[0], IN[0][0] -ADD OUT[1], IN[0][1], IN[0][1] -EMIT - -MOV OUT[0], IN[1][0] -ADD OUT[1], IN[1][1], IN[1][1] -EMIT - -MOV OUT[0], IN[2][0] -ADD OUT[1], IN[2][1], IN[2][1] -EMIT - -ENDPRIM - -END diff --git a/src/gallium/tests/graw/geometry-shader/line.txt b/src/gallium/tests/graw/geometry-shader/line.txt deleted file mode 100644 index 8be3f7f..0000000 --- a/src/gallium/tests/graw/geometry-shader/line.txt +++ /dev/null @@ -1,28 +0,0 @@ -GEOM -PROPERTY GS_INPUT_PRIMITIVE TRIANGLES -PROPERTY GS_OUTPUT_PRIMITIVE LINE_STRIP -PROPERTY GS_MAX_OUTPUT_VERTICES 4 -DCL IN[][0], POSITION, CONSTANT -DCL IN[][1], COLOR, CONSTANT -DCL OUT[0], POSITION, CONSTANT -DCL OUT[1], COLOR, CONSTANT - -MOV OUT[0], IN[0][0] -MOV OUT[1], IN[0][1] -EMIT - -MOV OUT[0], IN[1][0] -MOV OUT[1], IN[0][1] -EMIT - -MOV OUT[0], IN[2][0] -MOV OUT[1], IN[2][1] -EMIT - -MOV OUT[0], IN[0][0] -MOV OUT[1], IN[0][1] -EMIT - -ENDPRIM - -END diff --git a/src/gallium/tests/graw/geometry-shader/mov-cb-2d.txt b/src/gallium/tests/graw/geometry-shader/mov-cb-2d.txt deleted file mode 100644 index 339fd1e..0000000 --- a/src/gallium/tests/graw/geometry-shader/mov-cb-2d.txt +++ /dev/null @@ -1,25 +0,0 @@ -GEOM -PROPERTY GS_INPUT_PRIMITIVE TRIANGLES -PROPERTY GS_OUTPUT_PRIMITIVE TRIANGLE_STRIP -PROPERTY GS_MAX_OUTPUT_VERTICES 3 -DCL IN[][0], POSITION, CONSTANT -DCL IN[][1], COLOR, CONSTANT -DCL OUT[0], POSITION, CONSTANT -DCL OUT[1], COLOR, CONSTANT -DCL CONST[1][0..6] - -MOV OUT[0], IN[0][0] -MOV OUT[1], CONST[1][0] -EMIT - -MOV OUT[0], IN[1][0] -MOV OUT[1], CONST[1][1] -EMIT - -MOV OUT[0], IN[2][0] -MOV OUT[1], CONST[1][4] -EMIT - -ENDPRIM - -END diff --git a/src/gallium/tests/graw/geometry-shader/mov.txt b/src/gallium/tests/graw/geometry-shader/mov.txt deleted file mode 100644 index ad141f1..0000000 --- a/src/gallium/tests/graw/geometry-shader/mov.txt +++ /dev/null @@ -1,24 +0,0 @@ -GEOM -PROPERTY GS_INPUT_PRIMITIVE TRIANGLES -PROPERTY GS_OUTPUT_PRIMITIVE TRIANGLE_STRIP -PROPERTY GS_MAX_OUTPUT_VERTICES 3 -DCL IN[][0], POSITION, CONSTANT -DCL IN[][1], COLOR, CONSTANT -DCL OUT[0], POSITION, CONSTANT -DCL OUT[1], COLOR, CONSTANT - -MOV OUT[0], IN[0][0] -MOV OUT[1], IN[0][1] -EMIT - -MOV OUT[0], IN[1][0] -MOV OUT[1], IN[1][1] -EMIT - -MOV OUT[0], IN[2][0] -MOV OUT[1], IN[2][1] -EMIT - -ENDPRIM - -END diff --git a/src/gallium/tests/graw/geometry-shader/multi-line.txt b/src/gallium/tests/graw/geometry-shader/multi-line.txt deleted file mode 100644 index 0762d19..0000000 --- a/src/gallium/tests/graw/geometry-shader/multi-line.txt +++ /dev/null @@ -1,42 +0,0 @@ -GEOM -PROPERTY GS_INPUT_PRIMITIVE TRIANGLES -PROPERTY GS_OUTPUT_PRIMITIVE LINE_STRIP -PROPERTY GS_MAX_OUTPUT_VERTICES 8 -DCL IN[][0], POSITION, CONSTANT -DCL IN[][1], COLOR, CONSTANT -DCL OUT[0], POSITION, CONSTANT -DCL OUT[1], COLOR, CONSTANT -DCL TEMP[0] - -MOV TEMP[0], IN[0][0] -ADD TEMP[0].y, IN[0][0], IN[1][0] - -MOV OUT[0], TEMP[0] -MOV OUT[1], IN[0][1] -EMIT -MOV OUT[0], IN[2][0] -MOV OUT[1], IN[0][1] -EMIT -MOV OUT[0], IN[0][0] -MOV OUT[1], IN[2][1] -EMIT -MOV OUT[0], TEMP[0] -MOV OUT[1], IN[0][1] -EMIT -ENDPRIM - -MOV OUT[0], TEMP[0] -MOV OUT[1], IN[0][1] -EMIT -MOV OUT[0], IN[2][0] -MOV OUT[1], IN[0][1] -EMIT -MOV OUT[0], IN[1][0] -MOV OUT[1], IN[2][1] -EMIT -MOV OUT[0], TEMP[0] -MOV OUT[1], IN[0][1] -EMIT -ENDPRIM - -END diff --git a/src/gallium/tests/graw/graw_util.h b/src/gallium/tests/graw/graw_util.h deleted file mode 100644 index 3ea2c48..0000000 --- a/src/gallium/tests/graw/graw_util.h +++ /dev/null @@ -1,329 +0,0 @@ - -#include "frontend/graw.h" - -#include "pipe/p_context.h" -#include "pipe/p_defines.h" -#include "pipe/p_screen.h" -#include "pipe/p_shader_tokens.h" -#include "pipe/p_state.h" - -#include "util/u_box.h" -#include "util/u_debug.h" -#include "util/u_debug_image.h" -#include "util/u_draw_quad.h" -#include "util/format/u_format.h" -#include "util/u_inlines.h" -#include "util/u_memory.h" - - -struct graw_info -{ - struct pipe_screen *screen; - struct pipe_context *ctx; - struct pipe_resource *color_buf[PIPE_MAX_COLOR_BUFS], *zs_buf; - struct pipe_surface *color_surf[PIPE_MAX_COLOR_BUFS], *zs_surf; - void *window; -}; - - - -static inline boolean -graw_util_create_window(struct graw_info *info, - int width, int height, - int num_cbufs, bool zstencil_buf) -{ - static const enum pipe_format formats[] = { - PIPE_FORMAT_RGBA8888_UNORM, - PIPE_FORMAT_BGRA8888_UNORM, - PIPE_FORMAT_NONE - }; - enum pipe_format format; - struct pipe_resource resource_temp; - struct pipe_surface surface_temp; - int i; - - memset(info, 0, sizeof(*info)); - memset(&resource_temp, 0, sizeof(resource_temp)); - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; info->window == NULL && formats[i] != PIPE_FORMAT_NONE; i++) { - info->screen = graw_create_window_and_screen(0, 0, width, height, - formats[i], - &info->window); - format = formats[i]; - } - if (!info->screen || !info->window) { - debug_printf("graw: Failed to create screen/window\n"); - return FALSE; - } - - info->ctx = info->screen->context_create(info->screen, NULL, 0); - if (info->ctx == NULL) { - debug_printf("graw: Failed to create context\n"); - return FALSE; - } - - for (i = 0; i < num_cbufs; i++) { - /* create color texture */ - resource_temp.target = PIPE_TEXTURE_2D; - resource_temp.format = format; - resource_temp.width0 = width; - resource_temp.height0 = height; - resource_temp.depth0 = 1; - resource_temp.array_size = 1; - resource_temp.last_level = 0; - resource_temp.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - info->color_buf[i] = info->screen->resource_create(info->screen, - &resource_temp); - if (info->color_buf[i] == NULL) { - debug_printf("graw: Failed to create color texture\n"); - return FALSE; - } - - /* create color surface */ - surface_temp.format = resource_temp.format; - surface_temp.u.tex.level = 0; - surface_temp.u.tex.first_layer = 0; - surface_temp.u.tex.last_layer = 0; - info->color_surf[i] = info->ctx->create_surface(info->ctx, - info->color_buf[i], - &surface_temp); - if (info->color_surf[i] == NULL) { - debug_printf("graw: Failed to get color surface\n"); - return FALSE; - } - } - - /* create Z texture (XXX try other Z/S formats if needed) */ - resource_temp.target = PIPE_TEXTURE_2D; - resource_temp.format = PIPE_FORMAT_S8_UINT_Z24_UNORM; - resource_temp.width0 = width; - resource_temp.height0 = height; - resource_temp.depth0 = 1; - resource_temp.array_size = 1; - resource_temp.last_level = 0; - resource_temp.bind = PIPE_BIND_DEPTH_STENCIL; - info->zs_buf = info->screen->resource_create(info->screen, &resource_temp); - if (!info->zs_buf) { - debug_printf("graw: Failed to create Z texture\n"); - return FALSE; - } - - /* create z surface */ - surface_temp.format = resource_temp.format; - surface_temp.u.tex.level = 0; - surface_temp.u.tex.first_layer = 0; - surface_temp.u.tex.last_layer = 0; - info->zs_surf = info->ctx->create_surface(info->ctx, - info->zs_buf, - &surface_temp); - if (info->zs_surf == NULL) { - debug_printf("graw: Failed to get Z surface\n"); - return FALSE; - } - - { - struct pipe_framebuffer_state fb; - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = num_cbufs; - fb.width = width; - fb.height = height; - for (i = 0; i < num_cbufs; i++) - fb.cbufs[i] = info->color_surf[i]; - fb.zsbuf = info->zs_surf; - info->ctx->set_framebuffer_state(info->ctx, &fb); - } - - return TRUE; -} - - -static inline void -graw_util_default_state(struct graw_info *info, boolean depth_test) -{ - { - struct pipe_blend_state blend; - void *handle; - memset(&blend, 0, sizeof blend); - blend.rt[0].colormask = PIPE_MASK_RGBA; - handle = info->ctx->create_blend_state(info->ctx, &blend); - info->ctx->bind_blend_state(info->ctx, handle); - } - - { - struct pipe_depth_stencil_alpha_state depthStencilAlpha; - void *handle; - memset(&depthStencilAlpha, 0, sizeof depthStencilAlpha); - depthStencilAlpha.depth_enabled = depth_test; - depthStencilAlpha.depth_writemask = 1; - depthStencilAlpha.depth_func = PIPE_FUNC_LESS; - handle = info->ctx->create_depth_stencil_alpha_state(info->ctx, - &depthStencilAlpha); - info->ctx->bind_depth_stencil_alpha_state(info->ctx, handle); - } - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - handle = info->ctx->create_rasterizer_state(info->ctx, &rasterizer); - info->ctx->bind_rasterizer_state(info->ctx, handle); - } -} - - -static inline void -graw_util_viewport(struct graw_info *info, - float x, float y, - float width, float height, - float zNear, float zFar) -{ - float z = zNear; - float half_width = width / 2.0f; - float half_height = height / 2.0f; - float half_depth = (zFar - zNear) / 2.0f; - struct pipe_viewport_state vp; - - vp.scale[0] = half_width; - vp.scale[1] = half_height; - vp.scale[2] = half_depth; - - vp.translate[0] = half_width + x; - vp.translate[1] = half_height + y; - vp.translate[2] = half_depth + z; - - vp.swizzle_x = PIPE_VIEWPORT_SWIZZLE_POSITIVE_X; - vp.swizzle_y = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Y; - vp.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; - vp.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; - - info->ctx->set_viewport_states(info->ctx, 0, 1, &vp); -} - - -static inline void -graw_util_flush_front(const struct graw_info *info) -{ - info->screen->flush_frontbuffer(info->screen, info->ctx, info->color_buf[0], - 0, 0, info->window, NULL); -} - - -static inline struct pipe_resource * -graw_util_create_tex2d(const struct graw_info *info, - int width, int height, enum pipe_format format, - const void *data) -{ - const int row_stride = width * util_format_get_blocksize(format); - const int image_bytes = row_stride * height; - struct pipe_resource temp, *tex; - struct pipe_box box; - - memset(&temp, 0, sizeof(temp)); - temp.target = PIPE_TEXTURE_2D; - temp.format = format; - temp.width0 = width; - temp.height0 = height; - temp.depth0 = 1; - temp.last_level = 0; - temp.array_size = 1; - temp.bind = PIPE_BIND_SAMPLER_VIEW; - - tex = info->screen->resource_create(info->screen, &temp); - if (!tex) { - debug_printf("graw: failed to create texture\n"); - return NULL; - } - - u_box_2d(0, 0, width, height, &box); - - info->ctx->texture_subdata(info->ctx, - tex, - 0, - PIPE_MAP_WRITE, - &box, - data, - row_stride, - image_bytes); - - /* Possibly read back & compare against original data: - */ -#if 0 - { - struct pipe_transfer *t; - uint32_t *ptr; - t = pipe_texture_map(info->ctx, samptex, - 0, 0, /* level, layer */ - PIPE_MAP_READ, - 0, 0, SIZE, SIZE); /* x, y, width, height */ - - ptr = info->ctx->texture_map(info->ctx, t); - - if (memcmp(ptr, tex2d, sizeof tex2d) != 0) { - assert(0); - exit(9); - } - - info->ctx->texture_unmap(info->ctx, t); - } -#endif - - return tex; -} - - -static inline void * -graw_util_create_simple_sampler(const struct graw_info *info, - unsigned wrap_mode, - unsigned img_filter) -{ - struct pipe_sampler_state sampler_desc; - void *sampler; - - memset(&sampler_desc, 0, sizeof sampler_desc); - sampler_desc.wrap_s = - sampler_desc.wrap_t = - sampler_desc.wrap_r = wrap_mode; - sampler_desc.min_mip_filter = PIPE_TEX_MIPFILTER_NONE; - sampler_desc.min_img_filter = - sampler_desc.mag_img_filter = img_filter; - sampler_desc.compare_mode = PIPE_TEX_COMPARE_NONE; - sampler_desc.compare_func = 0; - sampler_desc.normalized_coords = 1; - sampler_desc.max_anisotropy = 0; - - sampler = info->ctx->create_sampler_state(info->ctx, &sampler_desc); - - return sampler; -} - - -static inline struct pipe_sampler_view * -graw_util_create_simple_sampler_view(const struct graw_info *info, - struct pipe_resource *texture) -{ - struct pipe_sampler_view sv_temp; - struct pipe_sampler_view *sv; - - memset(&sv_temp, 0, sizeof(sv_temp)); - sv_temp.format = texture->format; - sv_temp.texture = texture; - sv_temp.swizzle_r = PIPE_SWIZZLE_X; - sv_temp.swizzle_g = PIPE_SWIZZLE_Y; - sv_temp.swizzle_b = PIPE_SWIZZLE_Z; - sv_temp.swizzle_a = PIPE_SWIZZLE_W; - - sv = info->ctx->create_sampler_view(info->ctx, texture, &sv_temp); - - return sv; -} - diff --git a/src/gallium/tests/graw/gs-test.c b/src/gallium/tests/graw/gs-test.c deleted file mode 100644 index cd6bdec..0000000 --- a/src/gallium/tests/graw/gs-test.c +++ /dev/null @@ -1,613 +0,0 @@ -/* Display a cleared blue window. This demo has no dependencies on - * any utility code, just the graw interface and gallium. - */ - -#include "frontend/graw.h" -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_shader_tokens.h" -#include "pipe/p_state.h" -#include "pipe/p_defines.h" -#include /* for fread(), etc */ - -#include "util/u_inlines.h" -#include "util/u_memory.h" /* Offset() */ -#include "util/u_draw_quad.h" -#include "util/u_box.h" - -static const char *filename = NULL; -unsigned show_fps = 0; -unsigned draw_strip = 0; - - -static void usage(char *name) -{ - fprintf(stderr, "usage: %s [ options ] shader_filename\n", name); -#ifndef _WIN32 - fprintf(stderr, "\n" ); - fprintf(stderr, "options:\n"); - fprintf(stderr, " -fps show frames per second\n"); - fprintf(stderr, " -strip renders a triangle strip\n"); -#endif -} - - -enum pipe_format formats[] = { - PIPE_FORMAT_R8G8B8A8_UNORM, - PIPE_FORMAT_B8G8R8A8_UNORM, - PIPE_FORMAT_NONE -}; - -static const int WIDTH = 250; -static const int HEIGHT = 250; - -static struct pipe_screen *screen = NULL; -static struct pipe_context *ctx = NULL; -static struct pipe_resource *rttex = NULL; -static struct pipe_resource *constbuf1 = NULL; -static struct pipe_resource *constbuf2 = NULL; -static struct pipe_surface *surf = NULL; -static struct pipe_sampler_view *sv = NULL; -static void *sampler = NULL; -static void *window = NULL; -static struct pipe_resource *samptex = NULL; - -struct vertex { - float position[4]; - float color[4]; - float texcoord[4]; - float generic[4]; -}; - -/* Vertex data matches progs/fp/fp-tri.c, but flipped in Y dimension - * so that the final images are the same. - */ -static struct vertex vertices[] = -{ - { { 0.9, 0.9, 0.0, 1.0 }, - { 0, 0, 1, 1 }, - { 1, 1, 0, 1 }, - { 1, 0, 1, 0 } - }, - - { { 0.9, -0.9, 0.0, 1.0 }, - { 1, 0, 0, 1 }, - { 1, -1, 0, 1 }, - { 0, 1, 0, 1 } - }, - - { {-0.9, 0.0, 0.0, 1.0 }, - { 0, 1, 0, 1 }, - { -1, 0, 0, 1 }, - { 0, 0, 1, 1 } - }, -}; - -static struct vertex vertices_strip[] = -{ - { { 0.9, 0.9, 0.0, 1.0 }, - { 0, 0, 1, 1 }, - { 1, 1, 0, 1 }, - { 1, 0, 0, 1 } - }, - - { { 0.9, -0.9, 0.0, 1.0 }, - { 1, 0, 0, 1 }, - { 1, -1, 0, 1 }, - { 0, 1, 0, 1 } - }, - - { {-0.9, 0.9, 0.0, 1.0 }, - { 0, 1, 0, 1 }, - { -1, 1, 0, 1 }, - { 0, 0, 1, 1 } - }, - - { {-0.9, -0.9, 0.0, 1.0 }, - { 1, 1, 0, 1 }, - { -1, -1, 0, 1 }, - { 1, 1, 0, 1 } - }, -}; - -static float constants1[] = -{ 0.4, 0, 0, 1, - 1, 1, 1, 1, - 2, 2, 2, 2, - 4, 8, 16, 32, - - 3, 0, 0, 0, - 0, .5, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - - 1, 0, 0, 0.5, - 0, 1, 0, 0.5, - 0, 0, 1, 0, - 0, 0, 0, 1, -}; - - -static float constants2[] = -{ 1, 0, 0, 1, - 0, 1, 0, 1, - 0, 0, 1, 1, - 0, 0, 0, 1, - - 1, 1, 0, 1, - 1, .5, 0, 1, - 0, 1, 1, 1, - 1, 0, 1, 1, - - 1, 0, 0, 0.5, - 0, 1, 0, 0.5, - 0, 0, 1, 0, - 0, 0, 0, 1, -}; - - -static void init_fs_constbuf( void ) -{ - struct pipe_resource templat; - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_BUFFER; - templat.format = PIPE_FORMAT_R8_UNORM; - templat.width0 = sizeof(constants1); - templat.height0 = 1; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = PIPE_BIND_CONSTANT_BUFFER; - - constbuf1 = screen->resource_create(screen, &templat); - if (constbuf1 == NULL) - exit(4); - constbuf2 = screen->resource_create(screen, &templat); - if (constbuf2 == NULL) - exit(4); - - { - ctx->buffer_subdata(ctx, constbuf1, - PIPE_MAP_WRITE, - 0, sizeof(constants1), constants1); - - pipe_set_constant_buffer(ctx, - PIPE_SHADER_GEOMETRY, 0, - constbuf1); - } - { - ctx->buffer_subdata(ctx, constbuf2, - PIPE_MAP_WRITE, - 0, sizeof(constants2), constants2); - - pipe_set_constant_buffer(ctx, - PIPE_SHADER_GEOMETRY, 1, - constbuf2); - } -} - - -static void set_viewport( float x, float y, - float width, float height, - float zNear, float zFar) -{ - float z = zFar; - float half_width = (float)width / 2.0f; - float half_height = (float)height / 2.0f; - float half_depth = ((float)zFar - (float)zNear) / 2.0f; - struct pipe_viewport_state vp; - - vp.scale[0] = half_width; - vp.scale[1] = half_height; - vp.scale[2] = half_depth; - - vp.translate[0] = half_width + x; - vp.translate[1] = half_height + y; - vp.translate[2] = half_depth + z; - - vp.swizzle_x = PIPE_VIEWPORT_SWIZZLE_POSITIVE_X; - vp.swizzle_y = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Y; - vp.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; - vp.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; - - ctx->set_viewport_states( ctx, 0, 1, &vp ); -} - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[4]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[2].src_offset = Offset(struct vertex, texcoord); - ve[2].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[3].src_offset = Offset(struct vertex, generic); - ve[3].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = ctx->create_vertex_elements_state(ctx, 4, ve); - ctx->bind_vertex_elements_state(ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof( struct vertex ); - vbuf.buffer_offset = 0; - if (draw_strip) { - vbuf.buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices_strip), - vertices_strip); - } else { - vbuf.buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - } - - ctx->set_vertex_buffers(ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL IN[2]\n" - "DCL IN[3]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], COLOR[0]\n" - "DCL OUT[2], GENERIC[0]\n" - "DCL OUT[3], GENERIC[1]\n" - " MOV OUT[0], IN[0]\n" - " MOV OUT[1], IN[1]\n" - " MOV OUT[2], IN[2]\n" - " MOV OUT[3], IN[3]\n" - " END\n"; - - handle = graw_parse_vertex_shader(ctx, text); - ctx->bind_vs_state(ctx, handle); -} - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], COLOR, LINEAR\n" - "DCL OUT[0], COLOR\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: END\n"; - - handle = graw_parse_fragment_shader(ctx, text); - ctx->bind_fs_state(ctx, handle); -} - - -static void set_geometry_shader( void ) -{ - FILE *f; - char buf[50000]; - void *handle; - int sz; - - if ((f = fopen(filename, "r")) == NULL) { - fprintf(stderr, "Couldn't open %s\n", filename); - exit(1); - } - - sz = fread(buf, 1, sizeof(buf), f); - if (!feof(f)) { - printf("file too long\n"); - exit(1); - } - printf("%.*s\n", sz, buf); - buf[sz] = 0; - - handle = graw_parse_geometry_shader(ctx, buf); - ctx->bind_gs_state(ctx, handle); - fclose(f); -} - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {.1,.3,.5,0} }; - - ctx->clear(ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - if (draw_strip) - util_draw_arrays(ctx, PIPE_PRIM_TRIANGLE_STRIP, 0, 4); - else - util_draw_arrays(ctx, PIPE_PRIM_TRIANGLES, 0, 3); - - ctx->flush(ctx, NULL, 0); - - graw_save_surface_to_file(ctx, surf, NULL); - - screen->flush_frontbuffer(screen, ctx, rttex, 0, 0, window, NULL); -} - -#define SIZE 16 - -static void init_tex( void ) -{ - struct pipe_sampler_view sv_template; - struct pipe_sampler_state sampler_desc; - struct pipe_resource templat; - struct pipe_box box; - ubyte tex2d[SIZE][SIZE][4]; - int s, t; - -#if (SIZE != 2) - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - if (0) { - int x = (s ^ t) & 1; - tex2d[t][s][0] = (x) ? 0 : 63; - tex2d[t][s][1] = (x) ? 0 : 128; - tex2d[t][s][2] = 0; - tex2d[t][s][3] = 0xff; - } - else { - int x = ((s ^ t) >> 2) & 1; - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = (x) ? 0 : 128; - tex2d[t][s][3] = 0xff; - } - } - } -#else - tex2d[0][0][0] = 0; - tex2d[0][0][1] = 255; - tex2d[0][0][2] = 255; - tex2d[0][0][3] = 0; - - tex2d[0][1][0] = 0; - tex2d[0][1][1] = 0; - tex2d[0][1][2] = 255; - tex2d[0][1][3] = 255; - - tex2d[1][0][0] = 255; - tex2d[1][0][1] = 255; - tex2d[1][0][2] = 0; - tex2d[1][0][3] = 255; - - tex2d[1][1][0] = 255; - tex2d[1][1][1] = 0; - tex2d[1][1][2] = 0; - tex2d[1][1][3] = 255; -#endif - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = PIPE_FORMAT_B8G8R8A8_UNORM; - templat.width0 = SIZE; - templat.height0 = SIZE; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = PIPE_BIND_SAMPLER_VIEW; - - - samptex = screen->resource_create(screen, - &templat); - if (samptex == NULL) - exit(4); - - u_box_2d(0,0,SIZE,SIZE, &box); - - ctx->texture_subdata(ctx, - samptex, - 0, - PIPE_MAP_WRITE, - &box, - tex2d, - sizeof tex2d[0], - sizeof tex2d); - - /* Possibly read back & compare against original data: - */ - if (0) - { - struct pipe_transfer *t; - uint32_t *ptr; - ptr = pipe_texture_map(ctx, samptex, - 0, 0, /* level, layer */ - PIPE_MAP_READ, - 0, 0, SIZE, SIZE, &t); /* x, y, width, height */ - - if (memcmp(ptr, tex2d, sizeof tex2d) != 0) { - assert(0); - exit(9); - } - - ctx->texture_unmap(ctx, t); - } - - memset(&sv_template, 0, sizeof sv_template); - sv_template.format = samptex->format; - sv_template.texture = samptex; - sv_template.swizzle_r = 0; - sv_template.swizzle_g = 1; - sv_template.swizzle_b = 2; - sv_template.swizzle_a = 3; - sv = ctx->create_sampler_view(ctx, samptex, &sv_template); - if (sv == NULL) - exit(5); - - ctx->set_sampler_views(ctx, PIPE_SHADER_FRAGMENT, 0, 1, 0, false, &sv); - - - memset(&sampler_desc, 0, sizeof sampler_desc); - sampler_desc.wrap_s = PIPE_TEX_WRAP_REPEAT; - sampler_desc.wrap_t = PIPE_TEX_WRAP_REPEAT; - sampler_desc.wrap_r = PIPE_TEX_WRAP_REPEAT; - sampler_desc.min_img_filter = PIPE_TEX_FILTER_NEAREST; - sampler_desc.min_mip_filter = PIPE_TEX_MIPFILTER_NONE; - sampler_desc.mag_img_filter = PIPE_TEX_FILTER_NEAREST; - sampler_desc.compare_mode = PIPE_TEX_COMPARE_NONE; - sampler_desc.compare_func = 0; - sampler_desc.normalized_coords = 1; - sampler_desc.max_anisotropy = 0; - - sampler = ctx->create_sampler_state(ctx, &sampler_desc); - if (sampler == NULL) - exit(6); - - ctx->bind_sampler_states(ctx, PIPE_SHADER_FRAGMENT, 0, 1, &sampler); - -} - -static void init( void ) -{ - struct pipe_framebuffer_state fb; - struct pipe_resource templat; - struct pipe_surface surf_tmpl; - int i; - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; formats[i] != PIPE_FORMAT_NONE; i++) { - screen = graw_create_window_and_screen(0, 0, 300, 300, - formats[i], - &window); - if (window && screen) - break; - } - if (!screen || !window) { - fprintf(stderr, "Unable to create window\n"); - exit(1); - } - - ctx = screen->context_create(screen, NULL, 0); - if (ctx == NULL) - exit(3); - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = formats[i]; - templat.width0 = WIDTH; - templat.height0 = HEIGHT; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - - rttex = screen->resource_create(screen, - &templat); - if (rttex == NULL) - exit(4); - - surf_tmpl.format = templat.format; - surf_tmpl.u.tex.level = 0; - surf_tmpl.u.tex.first_layer = 0; - surf_tmpl.u.tex.last_layer = 0; - surf = ctx->create_surface(ctx, rttex, &surf_tmpl); - if (surf == NULL) - exit(5); - - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = 1; - fb.width = WIDTH; - fb.height = HEIGHT; - fb.cbufs[0] = surf; - - ctx->set_framebuffer_state(ctx, &fb); - - { - struct pipe_blend_state blend; - void *handle; - memset(&blend, 0, sizeof blend); - blend.rt[0].colormask = PIPE_MASK_RGBA; - handle = ctx->create_blend_state(ctx, &blend); - ctx->bind_blend_state(ctx, handle); - } - - { - struct pipe_depth_stencil_alpha_state depthstencil; - void *handle; - memset(&depthstencil, 0, sizeof depthstencil); - handle = ctx->create_depth_stencil_alpha_state(ctx, &depthstencil); - ctx->bind_depth_stencil_alpha_state(ctx, handle); - } - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = ctx->create_rasterizer_state(ctx, &rasterizer); - ctx->bind_rasterizer_state(ctx, handle); - } - - set_viewport(0, 0, WIDTH, HEIGHT, 30, 1000); - - init_tex(); - init_fs_constbuf(); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); - set_geometry_shader(); -} - -static void args(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc;) { - if (graw_parse_args(&i, argc, argv)) { - continue; - } - if (strcmp(argv[i], "-fps") == 0) { - show_fps = 1; - i++; - } - else if (strcmp(argv[i], "-strip") == 0) { - draw_strip = 1; - i++; - } - else if (i == argc - 1) { - filename = argv[i]; - i++; - } - else { - usage(argv[0]); - exit(1); - } - } - - if (!filename) { - usage(argv[0]); - exit(1); - } -} - -int main( int argc, char *argv[] ) -{ - args(argc,argv); - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/meson.build b/src/gallium/tests/graw/meson.build deleted file mode 100644 index 6d6840e..0000000 --- a/src/gallium/tests/graw/meson.build +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright © 2018 Intel Corporation - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -progs = [ - 'clear', 'disasm', 'fs-fragcoord', 'fs-frontface', 'fs-test', 'fs-write-z', - 'gs-test', 'occlusion-query', 'quad-sample', 'quad-tex', 'shader-leak', - 'tex-srgb', 'tex-swizzle', 'tri', 'tri-large', 'tri-gs', 'tri-instanced', - 'vs-test', -] - -foreach t : progs - executable( - 'graw-' + t, - t + '.c', - include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], - link_with : [libgraw, libgraw_util, libgallium], - dependencies : [dep_m, idep_mesautil], - ) -endforeach diff --git a/src/gallium/tests/graw/occlusion-query.c b/src/gallium/tests/graw/occlusion-query.c deleted file mode 100644 index 9805ef9..0000000 --- a/src/gallium/tests/graw/occlusion-query.c +++ /dev/null @@ -1,245 +0,0 @@ -/* Test gallium occlusion queries. - */ - -#include -#include - -#include "graw_util.h" - - -static int width = 300; -static int height = 300; - -/* expected results of occlusion test (depndsd on window size) */ -static int expected1 = (int) ((300 * 0.9) * (300 * 0.9)); -static int expected2 = 420; - - -static struct graw_info info; - -struct vertex { - float position[4]; - float color[4]; -}; - -#define z0 0.2 -#define z1 0.6 - -static struct vertex obj1_vertices[4] = -{ - { - {-0.9, -0.9, z0, 1.0 }, - { 1, 0, 0, 1 } - }, - - { - { 0.9, -0.9, z0, 1.0 }, - { 1, 0, 0, 1 } - }, - - { - { 0.9, 0.9, z0, 1.0 }, - { 1, 0, 0, 1 } - }, - - { - {-0.9, 0.9, z0, 1.0 }, - { 1, 0, 0, 1 } - } -}; - -static struct vertex obj2_vertices[4] = -{ - { - { -0.2, -0.2, z1, 1.0 }, - { 0, 0, 1, 1 } - }, - - { - { 0.95, -0.2, z1, 1.0 }, - { 0, 0, 1, 1 } - }, - - { - { 0.95, 0.2, z1, 1.0 }, - { 0, 0, 1, 1 } - }, - - { - { -0.2, 0.2, z1, 1.0 }, - { 0, 0, 1, 1 } - }, -}; - -#define NUM_VERTS 4 - - - -static void -set_vertices(struct vertex *vertices, unsigned bytes) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - - vbuf.stride = sizeof(struct vertex); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - bytes, - vertices); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - - -static void -set_vertex_shader(struct graw_info *info) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], GENERIC[0]\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: MOV OUT[1], IN[1]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info->ctx, text); - if (!handle) { - debug_printf("Failed to parse vertex shader\n"); - return; - } - info->ctx->bind_vs_state(info->ctx, handle); -} - - -static void -set_fragment_shader(struct graw_info *info) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], GENERIC, LINEAR\n" - "DCL OUT[0], COLOR\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: END\n"; - - handle = graw_parse_fragment_shader(info->ctx, text); - if (!handle) { - debug_printf("Failed to parse fragment shader\n"); - return; - } - info->ctx->bind_fs_state(info->ctx, handle); -} - - -static void -draw(void) -{ - int expected1_min = (int) (expected1 * 0.95); - int expected1_max = (int) (expected1 * 1.05); - int expected2_min = (int) (expected2 * 0.95); - int expected2_max = (int) (expected2 * 1.05); - - union pipe_color_union clear_color; - - struct pipe_query *q1, *q2; - union pipe_query_result res1, res2; - - clear_color.f[0] = 0.25; - clear_color.f[1] = 0.25; - clear_color.f[2] = 0.25; - clear_color.f[3] = 1.00; - - info.ctx->clear(info.ctx, - PIPE_CLEAR_COLOR | PIPE_CLEAR_DEPTHSTENCIL, - NULL, - &clear_color, 1.0, 0); - - q1 = info.ctx->create_query(info.ctx, PIPE_QUERY_OCCLUSION_COUNTER, 0); - q2 = info.ctx->create_query(info.ctx, PIPE_QUERY_OCCLUSION_COUNTER, 0); - - /* draw first, large object */ - set_vertices(obj1_vertices, sizeof(obj1_vertices)); - info.ctx->begin_query(info.ctx, q1); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, NUM_VERTS); - info.ctx->end_query(info.ctx, q1); - - /* draw second, small object behind first object */ - set_vertices(obj2_vertices, sizeof(obj2_vertices)); - info.ctx->begin_query(info.ctx, q2); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, NUM_VERTS); - info.ctx->end_query(info.ctx, q2); - - info.ctx->get_query_result(info.ctx, q1, TRUE, &res1); - info.ctx->get_query_result(info.ctx, q2, TRUE, &res2); - - printf("result1 = %" PRIu64 " result2 = %" PRIu64 "\n", res1.u64, res2.u64); - if (res1.u64 < expected1_min || res1.u64 > expected1_max) - printf(" Failure: result1 should be near %d\n", expected1); - if (res2.u64 < expected2_min || res2.u64 > expected2_max) - printf(" Failure: result2 should be near %d\n", expected2); - - info.ctx->flush(info.ctx, NULL, 0); - - graw_util_flush_front(&info); - - info.ctx->destroy_query(info.ctx, q1); - info.ctx->destroy_query(info.ctx, q2); -} - - -#if 0 -static void -resize(int w, int h) -{ - width = w; - height = h; - - graw_util_viewport(&info, 0, 0, width, height, 30, 1000); -} -#endif - - -static void -init(void) -{ - if (!graw_util_create_window(&info, width, height, 1, TRUE)) - exit(1); - - graw_util_default_state(&info, TRUE); - - graw_util_viewport(&info, 0, 0, width, height, -1.0, 1.0); - - set_vertex_shader(&info); - set_fragment_shader(&info); -} - - -int -main(int argc, char *argv[]) -{ - init(); - - printf("The red quad should mostly occlude the blue quad.\n"); - - graw_set_display_func(draw); - /*graw_set_reshape_func(resize);*/ - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/quad-sample.c b/src/gallium/tests/graw/quad-sample.c deleted file mode 100644 index 4366746..0000000 --- a/src/gallium/tests/graw/quad-sample.c +++ /dev/null @@ -1,417 +0,0 @@ -/* Display a cleared blue window. This demo has no dependencies on - * any utility code, just the graw interface and gallium. - */ - -#include "frontend/graw.h" -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_shader_tokens.h" -#include "pipe/p_state.h" -#include "pipe/p_defines.h" - -#include "util/u_debug.h" /* debug_dump_surface_bmp() */ -#include "util/u_inlines.h" -#include "util/u_memory.h" /* Offset() */ -#include "util/u_draw_quad.h" -#include "util/u_box.h" - -#include - -enum pipe_format formats[] = { - PIPE_FORMAT_RGBA8888_UNORM, - PIPE_FORMAT_BGRA8888_UNORM, - PIPE_FORMAT_NONE -}; - -static const int WIDTH = 300; -static const int HEIGHT = 300; - -static struct pipe_screen *screen = NULL; -static struct pipe_context *ctx = NULL; -static struct pipe_resource *rttex = NULL; -static struct pipe_resource *samptex = NULL; -static struct pipe_surface *surf = NULL; -static struct pipe_sampler_view *sv = NULL; -static void *sampler = NULL; -static void *window = NULL; - -struct vertex { - float position[4]; - float color[4]; -}; - -static struct vertex vertices[] = -{ - { { 0.9, -0.9, 0.0, 1.0 }, - { 1, 0, 0, 1 } }, - - { { 0.9, 0.9, 0.0, 1.0 }, - { 1, 1, 0, 1 } }, - - { {-0.9, 0.9, 0.0, 1.0 }, - { 0, 1, 0, 1 } }, - - { {-0.9, -0.9, 0.0, 1.0 }, - { 0, 0, 0, 1 } }, -}; - - - - -static void set_viewport( float x, float y, - float width, float height, - float zNear, float zFar) -{ - float z = zFar; - float half_width = (float)width / 2.0f; - float half_height = (float)height / 2.0f; - float half_depth = ((float)zFar - (float)zNear) / 2.0f; - struct pipe_viewport_state vp; - - vp.scale[0] = half_width; - vp.scale[1] = half_height; - vp.scale[2] = half_depth; - - vp.translate[0] = half_width + x; - vp.translate[1] = half_height + y; - vp.translate[2] = half_depth + z; - - vp.swizzle_x = PIPE_VIEWPORT_SWIZZLE_POSITIVE_X; - vp.swizzle_y = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Y; - vp.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; - vp.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; - - ctx->set_viewport_states( ctx, 0, 1, &vp ); -} - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = ctx->create_vertex_elements_state(ctx, 2, ve); - ctx->bind_vertex_elements_state(ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof( struct vertex ); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - ctx->set_vertex_buffers(ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], GENERIC[0]\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: MOV OUT[0], IN[0]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(ctx, text); - ctx->bind_vs_state(ctx, handle); -} - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], GENERIC[0], PERSPECTIVE\n" - "DCL OUT[0], COLOR\n" - "DCL TEMP[0]\n" - "DCL SAMP[0]\n" - "DCL RES[0], 2D, FLOAT\n" - " 0: SAMPLE TEMP[0], IN[0], RES[0], SAMP[0]\n" - " 1: MOV OUT[0], TEMP[0]\n" - " 2: END\n"; - - handle = graw_parse_fragment_shader(ctx, text); - ctx->bind_fs_state(ctx, handle); -} - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {.5,.5,.5,1} }; - - ctx->clear(ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(ctx, PIPE_PRIM_QUADS, 0, 4); - ctx->flush(ctx, NULL, 0); - - graw_save_surface_to_file(ctx, surf, NULL); - - screen->flush_frontbuffer(screen, ctx, rttex, 0, 0, window, NULL); -} - -#define SIZE 16 - -static void init_tex( void ) -{ - struct pipe_sampler_view sv_template; - struct pipe_sampler_state sampler_desc; - struct pipe_resource templat; - struct pipe_box box; - ubyte tex2d[SIZE][SIZE][4]; - int s, t; - -#if (SIZE != 2) - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - if (0) { - int x = (s ^ t) & 1; - tex2d[t][s][0] = (x) ? 0 : 63; - tex2d[t][s][1] = (x) ? 0 : 128; - tex2d[t][s][2] = 0; - tex2d[t][s][3] = 0xff; - } - else { - int x = ((s ^ t) >> 2) & 1; - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = (x) ? 0 : 128; - tex2d[t][s][3] = 0xff; - } - } - } -#else - tex2d[0][0][0] = 0; - tex2d[0][0][1] = 255; - tex2d[0][0][2] = 255; - tex2d[0][0][3] = 0; - - tex2d[0][1][0] = 0; - tex2d[0][1][1] = 0; - tex2d[0][1][2] = 255; - tex2d[0][1][3] = 255; - - tex2d[1][0][0] = 255; - tex2d[1][0][1] = 255; - tex2d[1][0][2] = 0; - tex2d[1][0][3] = 255; - - tex2d[1][1][0] = 255; - tex2d[1][1][1] = 0; - tex2d[1][1][2] = 0; - tex2d[1][1][3] = 255; -#endif - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = PIPE_FORMAT_B8G8R8A8_UNORM; - templat.width0 = SIZE; - templat.height0 = SIZE; - templat.depth0 = 1; - templat.last_level = 0; - templat.bind = PIPE_BIND_SAMPLER_VIEW; - - - samptex = screen->resource_create(screen, - &templat); - if (samptex == NULL) - exit(4); - - u_box_2d(0,0,SIZE,SIZE, &box); - - ctx->texture_subdata(ctx, - samptex, - 0, - PIPE_MAP_WRITE, - &box, - tex2d, - sizeof tex2d[0], - sizeof tex2d); - - /* Possibly read back & compare against original data: - */ - if (0) - { - struct pipe_transfer *t; - uint32_t *ptr; - ptr = pipe_texture_map(ctx, samptex, - 0, 0, /* level, layer */ - PIPE_MAP_READ, - 0, 0, SIZE, SIZE, &t); /* x, y, width, height */ - - if (memcmp(ptr, tex2d, sizeof tex2d) != 0) { - assert(0); - exit(9); - } - - ctx->texture_unmap(ctx, t); - } - - memset(&sv_template, 0, sizeof sv_template); - sv_template.format = samptex->format; - sv_template.texture = samptex; - sv_template.swizzle_r = 0; - sv_template.swizzle_g = 1; - sv_template.swizzle_b = 2; - sv_template.swizzle_a = 3; - sv = ctx->create_sampler_view(ctx, samptex, &sv_template); - if (sv == NULL) - exit(5); - - ctx->set_sampler_views(ctx, PIPE_SHADER_FRAGMENT, 0, 1, 0, false, &sv); - - - memset(&sampler_desc, 0, sizeof sampler_desc); - sampler_desc.wrap_s = PIPE_TEX_WRAP_REPEAT; - sampler_desc.wrap_t = PIPE_TEX_WRAP_REPEAT; - sampler_desc.wrap_r = PIPE_TEX_WRAP_REPEAT; - sampler_desc.min_img_filter = PIPE_TEX_FILTER_NEAREST; - sampler_desc.min_mip_filter = PIPE_TEX_MIPFILTER_NONE; - sampler_desc.mag_img_filter = PIPE_TEX_FILTER_NEAREST; - sampler_desc.compare_mode = PIPE_TEX_COMPARE_NONE; - sampler_desc.compare_func = 0; - sampler_desc.normalized_coords = 1; - sampler_desc.max_anisotropy = 0; - - sampler = ctx->create_sampler_state(ctx, &sampler_desc); - if (sampler == NULL) - exit(6); - - ctx->bind_sampler_states(ctx, PIPE_SHADER_FRAGMENT, 0, 1, &sampler); - -} - -static void init( void ) -{ - struct pipe_framebuffer_state fb; - struct pipe_resource templat; - struct pipe_surface surf_tmpl; - int i; - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; formats[i] != PIPE_FORMAT_NONE; i++) { - screen = graw_create_window_and_screen(0, 0, 300, 300, - formats[i], - &window); - if (window && screen) - break; - } - if (!screen || !window) { - fprintf(stderr, "Unable to create window\n"); - exit(1); - } - - ctx = screen->context_create(screen, NULL, 0); - if (ctx == NULL) - exit(3); - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = formats[i]; - templat.width0 = WIDTH; - templat.height0 = HEIGHT; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - - rttex = screen->resource_create(screen, - &templat); - if (rttex == NULL) - exit(4); - - surf_tmpl.format = templat.format; - surf_tmpl.u.tex.level = 0; - surf_tmpl.u.tex.first_layer = 0; - surf_tmpl.u.tex.last_layer = 0; - surf = ctx->create_surface(ctx, rttex, &surf_tmpl); - if (surf == NULL) - exit(5); - - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = 1; - fb.width = WIDTH; - fb.height = HEIGHT; - fb.cbufs[0] = surf; - - ctx->set_framebuffer_state(ctx, &fb); - - { - struct pipe_blend_state blend; - void *handle; - memset(&blend, 0, sizeof blend); - blend.rt[0].colormask = PIPE_MASK_RGBA; - handle = ctx->create_blend_state(ctx, &blend); - ctx->bind_blend_state(ctx, handle); - } - - { - struct pipe_depth_stencil_alpha_state depthstencil; - void *handle; - memset(&depthstencil, 0, sizeof depthstencil); - handle = ctx->create_depth_stencil_alpha_state(ctx, &depthstencil); - ctx->bind_depth_stencil_alpha_state(ctx, handle); - } - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = ctx->create_rasterizer_state(ctx, &rasterizer); - ctx->bind_rasterizer_state(ctx, handle); - } - - set_viewport(0, 0, WIDTH, HEIGHT, 30, 1000); - - init_tex(); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - -static void args(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc;) { - if (graw_parse_args(&i, argc, argv)) { - continue; - } - exit(1); - } -} - - -int main( int argc, char *argv[] ) -{ - args(argc, argv); - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/quad-tex.c b/src/gallium/tests/graw/quad-tex.c deleted file mode 100644 index 3c78b35..0000000 --- a/src/gallium/tests/graw/quad-tex.c +++ /dev/null @@ -1,231 +0,0 @@ -/* Display a cleared blue window. This demo has no dependencies on - * any utility code, just the graw interface and gallium. - */ - -#include "graw_util.h" - -static const int WIDTH = 300; -static const int HEIGHT = 300; - -static struct graw_info info; - - -static struct pipe_resource *texture = NULL; -static struct pipe_sampler_view *sv = NULL; -static void *sampler = NULL; - -struct vertex { - float position[4]; - float color[4]; -}; - -static struct vertex vertices[] = -{ - { { 0.9, -0.9, 0.0, 1.0 }, - { 1, 0, 0, 1 } }, - - { { 0.9, 0.9, 0.0, 1.0 }, - { 1, 1, 0, 1 } }, - - { {-0.9, 0.9, 0.0, 1.0 }, - { 0, 1, 0, 1 } }, - - { {-0.9, -0.9, 0.0, 1.0 }, - { 0, 0, 0, 1 } }, -}; - - - - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof( struct vertex ); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], GENERIC[0]\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: MOV OUT[0], IN[0]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info.ctx, text); - info.ctx->bind_vs_state(info.ctx, handle); -} - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], GENERIC[0], PERSPECTIVE\n" - "DCL OUT[0], COLOR\n" - "DCL TEMP[0]\n" - "DCL SAMP[0]\n" - "DCL SVIEW[0], 2D, FLOAT\n" - " 0: TXP TEMP[0], IN[0], SAMP[0], 2D\n" - " 1: MOV OUT[0], TEMP[0]\n" - " 2: END\n"; - - handle = graw_parse_fragment_shader(info.ctx, text); - info.ctx->bind_fs_state(info.ctx, handle); -} - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {.5,.5,.5,1} }; - - info.ctx->clear(info.ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, 4); - info.ctx->flush(info.ctx, NULL, 0); - - graw_save_surface_to_file(info.ctx, info.color_surf[0], NULL); - - graw_util_flush_front(&info); -} - - -#define SIZE 16 - -static void init_tex( void ) -{ - ubyte tex2d[SIZE][SIZE][4]; - int s, t; - -#if (SIZE != 2) - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - if (0) { - int x = (s ^ t) & 1; - tex2d[t][s][0] = (x) ? 0 : 63; - tex2d[t][s][1] = (x) ? 0 : 128; - tex2d[t][s][2] = 0; - tex2d[t][s][3] = 0xff; - } - else { - int x = ((s ^ t) >> 2) & 1; - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = (x) ? 0 : 128; - tex2d[t][s][3] = 0xff; - } - } - } -#else - tex2d[0][0][0] = 0; - tex2d[0][0][1] = 255; - tex2d[0][0][2] = 255; - tex2d[0][0][3] = 0; - - tex2d[0][1][0] = 0; - tex2d[0][1][1] = 0; - tex2d[0][1][2] = 255; - tex2d[0][1][3] = 255; - - tex2d[1][0][0] = 255; - tex2d[1][0][1] = 255; - tex2d[1][0][2] = 0; - tex2d[1][0][3] = 255; - - tex2d[1][1][0] = 255; - tex2d[1][1][1] = 0; - tex2d[1][1][2] = 0; - tex2d[1][1][3] = 255; -#endif - - texture = graw_util_create_tex2d(&info, SIZE, SIZE, - PIPE_FORMAT_B8G8R8A8_UNORM, tex2d); - - sv = graw_util_create_simple_sampler_view(&info, texture); - info.ctx->set_sampler_views(info.ctx, PIPE_SHADER_FRAGMENT, 0, 1, 0, false, &sv); - - sampler = graw_util_create_simple_sampler(&info, - PIPE_TEX_WRAP_REPEAT, - PIPE_TEX_FILTER_NEAREST); - info.ctx->bind_sampler_states(info.ctx, PIPE_SHADER_FRAGMENT, - 0, 1, &sampler); -} - - -static void init( void ) -{ - if (!graw_util_create_window(&info, WIDTH, HEIGHT, 1, FALSE)) - exit(1); - - graw_util_default_state(&info, FALSE); - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = info.ctx->create_rasterizer_state(info.ctx, &rasterizer); - info.ctx->bind_rasterizer_state(info.ctx, handle); - } - - graw_util_viewport(&info, 0, 0, WIDTH, HEIGHT, 30, 1000); - - init_tex(); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - - -static void args(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc;) { - if (graw_parse_args(&i, argc, argv)) { - continue; - } - exit(1); - } -} - -int main( int argc, char *argv[] ) -{ - args(argc, argv); - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/shader-leak.c b/src/gallium/tests/graw/shader-leak.c deleted file mode 100644 index 0e121a7..0000000 --- a/src/gallium/tests/graw/shader-leak.c +++ /dev/null @@ -1,282 +0,0 @@ -/** - * Create shaders in a loop to test memory usage. - */ - -#include -#include "frontend/graw.h" -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_state.h" -#include "pipe/p_defines.h" - -#include "util/u_memory.h" /* Offset() */ -#include "util/u_draw_quad.h" -#include "util/u_inlines.h" - - -static int num_iters = 100; - - -enum pipe_format formats[] = { - PIPE_FORMAT_RGBA8888_UNORM, - PIPE_FORMAT_BGRA8888_UNORM, - PIPE_FORMAT_NONE -}; - -static const int WIDTH = 300; -static const int HEIGHT = 300; - -static struct pipe_screen *screen = NULL; -static struct pipe_context *ctx = NULL; -static struct pipe_surface *surf = NULL; -static struct pipe_resource *tex = NULL; -static void *window = NULL; - -struct vertex { - float position[4]; - float color[4]; -}; - -static struct vertex vertices[1] = -{ - { - { 0.0f, -0.9f, 0.0f, 1.0f }, - { 1.0f, 0.0f, 0.0f, 1.0f } - } -}; - - - - -static void set_viewport( float x, float y, - float width, float height, - float zNear, float zFar) -{ - float z = zFar; - float half_width = (float)width / 2.0f; - float half_height = (float)height / 2.0f; - float half_depth = ((float)zFar - (float)zNear) / 2.0f; - struct pipe_viewport_state vp; - - vp.scale[0] = half_width; - vp.scale[1] = half_height; - vp.scale[2] = half_depth; - - vp.translate[0] = half_width + x; - vp.translate[1] = half_height + y; - vp.translate[2] = half_depth + z; - - vp.swizzle_x = PIPE_VIEWPORT_SWIZZLE_POSITIVE_X; - vp.swizzle_y = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Y; - vp.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; - vp.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; - - ctx->set_viewport_states( ctx, 0, 1, &vp ); -} - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = ctx->create_vertex_elements_state(ctx, 2, ve); - ctx->bind_vertex_elements_state(ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof(struct vertex); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - ctx->set_vertex_buffers(ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], COLOR\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: MOV OUT[0], IN[0]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(ctx, text); - ctx->bind_vs_state(ctx, handle); -} - - - -static void * -set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], COLOR, LINEAR\n" - "DCL OUT[0], COLOR\n" - "DCL TEMP[0..1]\n" - " 0: MUL TEMP[0], IN[0], IN[0]\n" - " 1: ADD TEMP[1], IN[0], IN[0]\n" - " 2: SUB OUT[0], TEMP[0], TEMP[1]\n" - " 3: END\n"; - - handle = graw_parse_fragment_shader(ctx, text); - return handle; -} - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {0,0,0,1} }; - int i; - - printf("Creating %d shaders\n", num_iters); - - for (i = 0; i < num_iters; i++) { - void *fs = set_fragment_shader(); - - ctx->bind_fs_state(ctx, fs); - - ctx->clear(ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(ctx, PIPE_PRIM_POINTS, 0, 1); - ctx->flush(ctx, NULL, 0); - - ctx->bind_fs_state(ctx, NULL); - ctx->delete_fs_state(ctx, fs); - } - - screen->flush_frontbuffer(screen, ctx, tex, 0, 0, window, NULL); - ctx->destroy(ctx); - - exit(0); -} - - -static void init( void ) -{ - struct pipe_framebuffer_state fb; - struct pipe_resource templat; - struct pipe_surface surf_tmpl; - int i; - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; formats[i] != PIPE_FORMAT_NONE; i++) { - screen = graw_create_window_and_screen(0, 0, 300, 300, - formats[i], - &window); - if (window && screen) - break; - } - if (!screen || !window) { - fprintf(stderr, "Unable to create window\n"); - exit(1); - } - - ctx = screen->context_create(screen, NULL, 0); - if (ctx == NULL) - exit(3); - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = formats[i]; - templat.width0 = WIDTH; - templat.height0 = HEIGHT; - templat.depth0 = 1; - templat.last_level = 0; - templat.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - - tex = screen->resource_create(screen, &templat); - if (tex == NULL) { - fprintf(stderr, "Unable to create screen texture!\n"); - exit(4); - } - - surf_tmpl.format = templat.format; - surf_tmpl.u.tex.level = 0; - surf_tmpl.u.tex.first_layer = 0; - surf_tmpl.u.tex.last_layer = 0; - surf = ctx->create_surface(ctx, tex, &surf_tmpl); - if (surf == NULL) { - fprintf(stderr, "Unable to create tex surface!\n"); - exit(5); - } - - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = 1; - fb.width = WIDTH; - fb.height = HEIGHT; - fb.cbufs[0] = surf; - - ctx->set_framebuffer_state(ctx, &fb); - - { - struct pipe_blend_state blend; - void *handle; - memset(&blend, 0, sizeof blend); - blend.rt[0].colormask = PIPE_MASK_RGBA; - handle = ctx->create_blend_state(ctx, &blend); - ctx->bind_blend_state(ctx, handle); - } - - { - struct pipe_depth_stencil_alpha_state depthstencil; - void *handle; - memset(&depthstencil, 0, sizeof depthstencil); - handle = ctx->create_depth_stencil_alpha_state(ctx, &depthstencil); - ctx->bind_depth_stencil_alpha_state(ctx, handle); - } - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = ctx->create_rasterizer_state(ctx, &rasterizer); - ctx->bind_rasterizer_state(ctx, handle); - } - - set_viewport(0, 0, WIDTH, HEIGHT, 30, 1000); - set_vertices(); - set_vertex_shader(); - if (0) - set_fragment_shader(); -} - - -int main( int argc, char *argv[] ) -{ - if (argc > 1) - num_iters = atoi(argv[1]); - - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/tex-srgb.c b/src/gallium/tests/graw/tex-srgb.c deleted file mode 100644 index 0d3e9ba..0000000 --- a/src/gallium/tests/graw/tex-srgb.c +++ /dev/null @@ -1,228 +0,0 @@ -/* Test sRGB texturing. - */ - -#include "graw_util.h" - - -static const int WIDTH = 600; -static const int HEIGHT = 300; - -static struct graw_info info; - -static struct pipe_resource *texture; -static struct pipe_sampler_view *linear_sv, *srgb_sv; - - -struct vertex { - float position[4]; - float color[4]; -}; - -static struct vertex vertices1[] = -{ - { { -0.1, -0.9, 0.0, 1.0 }, - { 1, 1, 0, 1 } }, - - { { -0.1, 0.9, 0.0, 1.0 }, - { 1, 0, 0, 1 } }, - - { {-0.9, 0.9, 0.0, 1.0 }, - { 0, 0, 0, 1 } }, - - { {-0.9, -0.9, 0.0, 1.0 }, - { 0, 1, 0, 1 } }, -}; - - -static struct vertex vertices2[] = -{ - { { 0.9, -0.9, 0.0, 1.0 }, - { 1, 1, 0, 1 } }, - - { { 0.9, 0.9, 0.0, 1.0 }, - { 1, 0, 0, 1 } }, - - { { 0.1, 0.9, 0.0, 1.0 }, - { 0, 0, 0, 1 } }, - - { { 0.1, -0.9, 0.0, 1.0 }, - { 0, 1, 0, 1 } }, -}; - - - - -static void -set_vertices(struct vertex *verts, unsigned num_verts) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof(struct vertex); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - num_verts * sizeof(struct vertex), - verts); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], GENERIC[0]\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: MOV OUT[0], IN[0]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info.ctx, text); - info.ctx->bind_vs_state(info.ctx, handle); -} - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], GENERIC[0], PERSPECTIVE\n" - "DCL OUT[0], COLOR\n" - "DCL TEMP[0]\n" - "DCL SAMP[0]\n" - "DCL SVIEW[0], 2D, FLOAT\n" - " 0: TXP TEMP[0], IN[0], SAMP[0], 2D\n" - " 1: MOV OUT[0], TEMP[0]\n" - " 2: END\n"; - - handle = graw_parse_fragment_shader(info.ctx, text); - info.ctx->bind_fs_state(info.ctx, handle); -} - - -static void draw( void ) -{ - union pipe_color_union clear_color; - - clear_color.f[0] = 0.5; - clear_color.f[1] = 0.5; - clear_color.f[2] = 0.5; - clear_color.f[3] = 1.0; - - info.ctx->clear(info.ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - - info.ctx->set_sampler_views(info.ctx, PIPE_SHADER_FRAGMENT, 0, 1, 0, false, &linear_sv); - set_vertices(vertices1, 4); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, 4); - - info.ctx->set_sampler_views(info.ctx, PIPE_SHADER_FRAGMENT, 0, 1, 0, false, &srgb_sv); - set_vertices(vertices2, 4); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, 4); - - info.ctx->flush(info.ctx, NULL, 0); - - graw_util_flush_front(&info); -} - - -static void init_tex( void ) -{ -#define SIZE 64 - ubyte tex2d[SIZE][SIZE][4]; - int s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - tex2d[t][s][0] = 0; - tex2d[t][s][1] = s * 255 / SIZE; - tex2d[t][s][2] = t * 255 / SIZE; - tex2d[t][s][3] = 255; - } - } - - texture = graw_util_create_tex2d(&info, SIZE, SIZE, - PIPE_FORMAT_B8G8R8A8_UNORM, tex2d); - - { - void *sampler; - sampler = graw_util_create_simple_sampler(&info, - PIPE_TEX_WRAP_REPEAT, - PIPE_TEX_FILTER_NEAREST); - info.ctx->bind_sampler_states(info.ctx, PIPE_SHADER_FRAGMENT, - 0, 1, &sampler); - } - - /* linear sampler view */ - { - struct pipe_sampler_view sv_temp; - memset(&sv_temp, 0, sizeof sv_temp); - sv_temp.format = PIPE_FORMAT_B8G8R8A8_UNORM; - sv_temp.texture = texture; - sv_temp.swizzle_r = PIPE_SWIZZLE_X; - sv_temp.swizzle_g = PIPE_SWIZZLE_Y; - sv_temp.swizzle_b = PIPE_SWIZZLE_Z; - sv_temp.swizzle_a = PIPE_SWIZZLE_W; - linear_sv = info.ctx->create_sampler_view(info.ctx, texture, &sv_temp); - if (linear_sv == NULL) - exit(0); - } - - /* srgb sampler view */ - { - struct pipe_sampler_view sv_temp; - memset(&sv_temp, 0, sizeof sv_temp); - sv_temp.format = PIPE_FORMAT_B8G8R8A8_SRGB; - sv_temp.texture = texture; - sv_temp.swizzle_r = PIPE_SWIZZLE_X; - sv_temp.swizzle_g = PIPE_SWIZZLE_Y; - sv_temp.swizzle_b = PIPE_SWIZZLE_Z; - sv_temp.swizzle_a = PIPE_SWIZZLE_W; - srgb_sv = info.ctx->create_sampler_view(info.ctx, texture, &sv_temp); - if (srgb_sv == NULL) - exit(0); - } -#undef SIZE -} - -static void init( void ) -{ - if (!graw_util_create_window(&info, WIDTH, HEIGHT, 1, FALSE)) - exit(1); - - graw_util_default_state(&info, FALSE); - - graw_util_viewport(&info, 0, 0, WIDTH, HEIGHT, 30, 10000); - - init_tex(); - - set_vertex_shader(); - set_fragment_shader(); -} - - -int main( int argc, char *argv[] ) -{ - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/tex-swizzle.c b/src/gallium/tests/graw/tex-swizzle.c deleted file mode 100644 index a522a2e..0000000 --- a/src/gallium/tests/graw/tex-swizzle.c +++ /dev/null @@ -1,230 +0,0 @@ -/* Test texture swizzles */ - -#include - -#include "graw_util.h" - - -static struct graw_info info; - -static struct pipe_resource *texture = NULL; -static struct pipe_sampler_view *sv = NULL; -static void *sampler = NULL; - -static const int WIDTH = 300; -static const int HEIGHT = 300; - -struct vertex { - float position[4]; - float color[4]; -}; - -static struct vertex vertices[] = -{ - { { 0.9, -0.9, 0.0, 1.0 }, - { 1, 0, 0, 1 } }, - - { { 0.9, 0.9, 0.0, 1.0 }, - { 1, 1, 0, 1 } }, - - { {-0.9, 0.9, 0.0, 1.0 }, - { 0, 1, 0, 1 } }, - - { {-0.9, -0.9, 0.0, 1.0 }, - { 0, 0, 0, 1 } }, -}; - - -static void set_vertices(void) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof(struct vertex); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader(void) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], GENERIC[0]\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: MOV OUT[0], IN[0]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info.ctx, text); - info.ctx->bind_vs_state(info.ctx, handle); -} - -static void set_fragment_shader(void) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], GENERIC[0], PERSPECTIVE\n" - "DCL OUT[0], COLOR\n" - "DCL SAMP[0]\n" - "DCL SVIEW[0], 2D, FLOAT\n" - " 0: TXP OUT[0], IN[0], SAMP[0], 2D\n" - " 2: END\n"; - - handle = graw_parse_fragment_shader(info.ctx, text); - info.ctx->bind_fs_state(info.ctx, handle); -} - - -static void draw(void) -{ - union pipe_color_union clear_color; - - clear_color.f[0] = 0.5; - clear_color.f[1] = 0.5; - clear_color.f[2] = 0.5; - clear_color.f[3] = 1.0; - - info.ctx->clear(info.ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, 4); - info.ctx->flush(info.ctx, NULL, 0); - - graw_util_flush_front(&info); -} - - - -static void -init_tex(const unsigned swizzle[4]) -{ -#define SIZE 256 - struct pipe_sampler_view sv_template; - ubyte tex2d[SIZE][SIZE][4]; - int s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - tex2d[t][s][0] = 0; /*B*/ - tex2d[t][s][1] = t; /*G*/ - tex2d[t][s][2] = s; /*R*/ - tex2d[t][s][3] = 1; /*A*/ - } - } - - texture = graw_util_create_tex2d(&info, SIZE, SIZE, - PIPE_FORMAT_B8G8R8A8_UNORM, tex2d); - - memset(&sv_template, 0, sizeof sv_template); - sv_template.format = texture->format; - sv_template.texture = texture; - sv_template.swizzle_r = swizzle[0]; - sv_template.swizzle_g = swizzle[1]; - sv_template.swizzle_b = swizzle[2]; - sv_template.swizzle_a = swizzle[3]; - sv = info.ctx->create_sampler_view(info.ctx, texture, &sv_template); - if (sv == NULL) - exit(5); - - info.ctx->set_sampler_views(info.ctx, PIPE_SHADER_FRAGMENT, 0, 1, 0, false, &sv); - - sampler = graw_util_create_simple_sampler(&info, - PIPE_TEX_WRAP_REPEAT, - PIPE_TEX_FILTER_NEAREST); - - info.ctx->bind_sampler_states(info.ctx, PIPE_SHADER_FRAGMENT, - 0, 1, &sampler); -#undef SIZE -} - - -static void -init(const unsigned swizzle[4]) -{ - if (!graw_util_create_window(&info, WIDTH, HEIGHT, 1, FALSE)) - exit(1); - - graw_util_default_state(&info, FALSE); - - graw_util_viewport(&info, 0, 0, WIDTH, HEIGHT, 30, 10000); - - init_tex(swizzle); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - - -static unsigned -char_to_swizzle(char c) -{ - switch (c) { - case 'r': - return PIPE_SWIZZLE_X; - case 'g': - return PIPE_SWIZZLE_Y; - case 'b': - return PIPE_SWIZZLE_Z; - case 'a': - return PIPE_SWIZZLE_W; - case '0': - return PIPE_SWIZZLE_0; - case '1': - return PIPE_SWIZZLE_1; - default: - return PIPE_SWIZZLE_X; - } -} - - -int main(int argc, char *argv[]) -{ - const char swizzle_names[] = "rgba01"; - uint swizzle[4]; - int i; - - swizzle[0] = PIPE_SWIZZLE_X; - swizzle[1] = PIPE_SWIZZLE_Y; - swizzle[2] = PIPE_SWIZZLE_Z; - swizzle[3] = PIPE_SWIZZLE_W; - - for (i = 1; i < argc; i++) { - swizzle[i-1] = char_to_swizzle(argv[i][0]); - } - - printf("Example:\n"); - printf(" tex-swizzle r 0 g 1\n"); - printf("Current swizzle = "); - for (i = 0; i < 4; i++) { - printf("%c", swizzle_names[swizzle[i]]); - } - printf("\n"); - - init(swizzle); - - graw_set_display_func(draw); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/tgsi_dump.gdb b/src/gallium/tests/graw/tgsi_dump.gdb deleted file mode 100644 index c793555..0000000 --- a/src/gallium/tests/graw/tgsi_dump.gdb +++ /dev/null @@ -1,6 +0,0 @@ -define tgsi_dump - set $tokens=(const struct tgsi_header *)($arg0) - set $nr_tokens = $tokens->HeaderSize + $tokens->BodySize - set $tokens_end = &$tokens[$nr_tokens] - dump memory tgsi_dump.bin $tokens $tokens_end -end diff --git a/src/gallium/tests/graw/tri-gs.c b/src/gallium/tests/graw/tri-gs.c deleted file mode 100644 index 8d5ad20..0000000 --- a/src/gallium/tests/graw/tri-gs.c +++ /dev/null @@ -1,284 +0,0 @@ -/* Display a cleared blue window. This demo has no dependencies on - * any utility code, just the graw interface and gallium. - */ - -#include -#include "frontend/graw.h" -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_state.h" -#include "pipe/p_defines.h" - -#include "util/u_memory.h" /* Offset() */ -#include "util/u_draw_quad.h" -#include "util/u_inlines.h" - -enum pipe_format formats[] = { - PIPE_FORMAT_RGBA8888_UNORM, - PIPE_FORMAT_BGRA8888_UNORM, - PIPE_FORMAT_NONE -}; - -static const int WIDTH = 300; -static const int HEIGHT = 300; - -static struct pipe_screen *screen = NULL; -static struct pipe_context *ctx = NULL; -static struct pipe_surface *surf = NULL; -static struct pipe_resource *tex = NULL; -static void *window = NULL; - -struct vertex { - float position[4]; - float color[4]; -}; - -static struct vertex vertices[4] = -{ - { { 0.0f, -0.9f, 0.0f, 1.0f }, - { 1.0f, 0.0f, 0.0f, 1.0f } - }, - { { -0.9f, 0.9f, 0.0f, 1.0f }, - { 0.0f, 1.0f, 0.0f, 1.0f } - }, - { { 0.9f, 0.9f, 0.0f, 1.0f }, - { 0.0f, 0.0f, 1.0f, 1.0f } - } -}; - - - - -static void set_viewport( float x, float y, - float width, float height, - float zNear, float zFar) -{ - float z = zFar; - float half_width = (float)width / 2.0f; - float half_height = (float)height / 2.0f; - float half_depth = ((float)zFar - (float)zNear) / 2.0f; - struct pipe_viewport_state vp; - - vp.scale[0] = half_width; - vp.scale[1] = half_height; - vp.scale[2] = half_depth; - - vp.translate[0] = half_width + x; - vp.translate[1] = half_height + y; - vp.translate[2] = half_depth + z; - - vp.swizzle_x = PIPE_VIEWPORT_SWIZZLE_POSITIVE_X; - vp.swizzle_y = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Y; - vp.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; - vp.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; - - ctx->set_viewport_states( ctx, 0, 1, &vp ); -} - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = ctx->create_vertex_elements_state(ctx, 2, ve); - ctx->bind_vertex_elements_state(ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof( struct vertex ); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - ctx->set_vertex_buffers(ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], COLOR\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: MOV OUT[0], IN[0]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(ctx, text); - ctx->bind_vs_state(ctx, handle); -} - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], COLOR, LINEAR\n" - "DCL OUT[0], COLOR\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: END\n"; - - handle = graw_parse_fragment_shader(ctx, text); - ctx->bind_fs_state(ctx, handle); -} - - -static void set_geometry_shader( void ) -{ - void *handle; - const char *text = - "GEOM\n" - "PROPERTY GS_INPUT_PRIMITIVE TRIANGLES\n" - "PROPERTY GS_OUTPUT_PRIMITIVE TRIANGLE_STRIP\n" - "DCL IN[][0], POSITION, CONSTANT\n" - "DCL IN[][1], COLOR, CONSTANT\n" - "DCL OUT[0], POSITION, CONSTANT\n" - "DCL OUT[1], COLOR, CONSTANT\n" - "0:MOV OUT[0], IN[0][0]\n" - "1:MOV OUT[1], IN[0][1]\n" - "2:EMIT\n" - "3:MOV OUT[0], IN[1][0]\n" - "4:MOV OUT[1], IN[0][1]\n" /* copy color from input vertex 0 */ - "5:EMIT\n" - "6:MOV OUT[0], IN[2][0]\n" - "7:MOV OUT[1], IN[2][1]\n" - "8:EMIT\n" - "9:ENDPRIM\n" - "10:END\n"; - - handle = graw_parse_geometry_shader(ctx, text); - ctx->bind_gs_state(ctx, handle); -} - -static void draw( void ) -{ - union pipe_color_union clear_color = { {1,0,1,1} }; - - ctx->clear(ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(ctx, PIPE_PRIM_TRIANGLES, 0, 3); - ctx->flush(ctx, NULL, 0); - - screen->flush_frontbuffer(screen, ctx, tex, 0, 0, window, NULL); -} - - -static void init( void ) -{ - struct pipe_framebuffer_state fb; - struct pipe_resource templat; - struct pipe_surface surf_tmpl; - int i; - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; formats[i] != PIPE_FORMAT_NONE; i++) { - screen = graw_create_window_and_screen(0, 0, 300, 300, - formats[i], - &window); - if (window && screen) - break; - } - if (!screen || !window) { - fprintf(stderr, "Unable to create window\n"); - exit(1); - } - - ctx = screen->context_create(screen, NULL, 0); - if (ctx == NULL) - exit(3); - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = formats[i]; - templat.width0 = WIDTH; - templat.height0 = HEIGHT; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - - tex = screen->resource_create(screen, - &templat); - if (tex == NULL) - exit(4); - - surf_tmpl.format = templat.format; - surf_tmpl.u.tex.level = 0; - surf_tmpl.u.tex.first_layer = 0; - surf_tmpl.u.tex.last_layer = 0; - surf = ctx->create_surface(ctx, tex, &surf_tmpl); - if (surf == NULL) - exit(5); - - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = 1; - fb.width = WIDTH; - fb.height = HEIGHT; - fb.cbufs[0] = surf; - - ctx->set_framebuffer_state(ctx, &fb); - - { - struct pipe_blend_state blend; - void *handle; - memset(&blend, 0, sizeof blend); - blend.rt[0].colormask = PIPE_MASK_RGBA; - handle = ctx->create_blend_state(ctx, &blend); - ctx->bind_blend_state(ctx, handle); - } - - { - struct pipe_depth_stencil_alpha_state depthstencil; - void *handle; - memset(&depthstencil, 0, sizeof depthstencil); - handle = ctx->create_depth_stencil_alpha_state(ctx, &depthstencil); - ctx->bind_depth_stencil_alpha_state(ctx, handle); - } - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = ctx->create_rasterizer_state(ctx, &rasterizer); - ctx->bind_rasterizer_state(ctx, handle); - } - - set_viewport(0, 0, WIDTH, HEIGHT, 30, 1000); - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); - set_geometry_shader(); -} - - -int main( int argc, char *argv[] ) -{ - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/tri-instanced.c b/src/gallium/tests/graw/tri-instanced.c deleted file mode 100644 index 66f7d1b..0000000 --- a/src/gallium/tests/graw/tri-instanced.c +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Test draw instancing. - */ - -#include -#include - -#include "frontend/graw.h" -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_state.h" -#include "pipe/p_defines.h" - -#include "util/u_memory.h" /* Offset() */ -#include "util/u_draw_quad.h" -#include "util/u_inlines.h" - - -enum pipe_format formats[] = { - PIPE_FORMAT_RGBA8888_UNORM, - PIPE_FORMAT_BGRA8888_UNORM, - PIPE_FORMAT_NONE -}; - -static const int WIDTH = 300; -static const int HEIGHT = 300; - -static struct pipe_screen *screen = NULL; -static struct pipe_context *ctx = NULL; -static struct pipe_surface *surf = NULL; -static struct pipe_resource *tex = NULL; -static void *window = NULL; - -struct vertex { - float position[4]; - float color[4]; -}; - - -static int draw_elements = 0; - - -/** - * Vertex data. - * Each vertex has three attributes: position, color and translation. - * The translation attribute is a per-instance attribute. See - * "instance_divisor" below. - */ -static struct vertex vertices[4] = -{ - { - { 0.0f, -0.3f, 0.0f, 1.0f }, /* pos */ - { 1.0f, 0.0f, 0.0f, 1.0f } /* color */ - }, - { - { -0.2f, 0.3f, 0.0f, 1.0f }, - { 0.0f, 1.0f, 0.0f, 1.0f } - }, - { - { 0.2f, 0.3f, 0.0f, 1.0f }, - { 0.0f, 0.0f, 1.0f, 1.0f } - } -}; - - -#define NUM_INST 5 - -static float inst_data[NUM_INST][4] = -{ - { -0.50f, 0.4f, 0.0f, 0.0f }, - { -0.25f, 0.1f, 0.0f, 0.0f }, - { 0.00f, 0.2f, 0.0f, 0.0f }, - { 0.25f, 0.1f, 0.0f, 0.0f }, - { 0.50f, 0.3f, 0.0f, 0.0f } -}; - - -static ushort indices[3] = { 0, 2, 1 }; - - -static void set_viewport( float x, float y, - float width, float height, - float zNear, float zFar) -{ - float z = zFar; - float half_width = (float)width / 2.0f; - float half_height = (float)height / 2.0f; - float half_depth = ((float)zFar - (float)zNear) / 2.0f; - struct pipe_viewport_state vp; - - vp.scale[0] = half_width; - vp.scale[1] = half_height; - vp.scale[2] = half_depth; - - vp.translate[0] = half_width + x; - vp.translate[1] = half_height + y; - vp.translate[2] = half_depth + z; - - vp.swizzle_x = PIPE_VIEWPORT_SWIZZLE_POSITIVE_X; - vp.swizzle_y = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Y; - vp.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; - vp.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; - - ctx->set_viewport_states( ctx, 0, 1, &vp ); -} - - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[3]; - struct pipe_vertex_buffer vbuf[2]; - void *handle; - - memset(ve, 0, sizeof ve); - - /* pos */ - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[0].vertex_buffer_index = 0; - - /* color */ - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].vertex_buffer_index = 0; - - /* per-instance info */ - ve[2].src_offset = 0; - ve[2].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[2].vertex_buffer_index = 1; - ve[2].instance_divisor = 1; - - handle = ctx->create_vertex_elements_state(ctx, 3, ve); - ctx->bind_vertex_elements_state(ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - /* vertex data */ - vbuf[0].stride = sizeof( struct vertex ); - vbuf[0].buffer_offset = 0; - vbuf[0].buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - /* instance data */ - vbuf[1].stride = sizeof( inst_data[0] ); - vbuf[1].buffer_offset = 0; - vbuf[1].buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(inst_data), - inst_data); - - ctx->set_vertex_buffers(ctx, 0, 2, 0, false, vbuf); -} - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL IN[2]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], COLOR\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: ADD OUT[0], IN[0], IN[2]\n" /* add instance pos to vertex pos */ - " 2: END\n"; - - handle = graw_parse_vertex_shader(ctx, text); - ctx->bind_vs_state(ctx, handle); -} - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], COLOR, LINEAR\n" - "DCL OUT[0], COLOR\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: END\n"; - - handle = graw_parse_fragment_shader(ctx, text); - ctx->bind_fs_state(ctx, handle); -} - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {1,0,1,1} }; - struct pipe_draw_info info; - struct pipe_draw_start_count_bias draw; - - ctx->clear(ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - - - util_draw_init_info(&info); - info.index_size = draw_elements ? 2 : 0; - info.mode = PIPE_PRIM_TRIANGLES; - draw.start = 0; - draw.count = 3; - draw.index_bias = 0; - /* draw NUM_INST triangles */ - info.instance_count = NUM_INST; - - /* index data */ - if (info.index_size) { - info.index.resource = - pipe_buffer_create_with_data(ctx, - PIPE_BIND_INDEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(indices), - indices); - } - - ctx->draw_vbo(ctx, &info, 0, NULL, &draw, 1); - - pipe_resource_reference(&info.index.resource, NULL); - - ctx->flush(ctx, NULL, 0); - - graw_save_surface_to_file(ctx, surf, NULL); - - screen->flush_frontbuffer(screen, ctx, tex, 0, 0, window, NULL); -} - - -static void init( void ) -{ - struct pipe_framebuffer_state fb; - struct pipe_resource templat; - struct pipe_surface surf_tmpl; - int i; - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; formats[i] != PIPE_FORMAT_NONE; i++) { - screen = graw_create_window_and_screen(0, 0, 300, 300, - formats[i], - &window); - if (window && screen) - break; - } - if (!screen || !window) { - fprintf(stderr, "Unable to create window\n"); - exit(1); - } - - ctx = screen->context_create(screen, NULL, 0); - if (ctx == NULL) - exit(3); - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = formats[i]; - templat.width0 = WIDTH; - templat.height0 = HEIGHT; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - - tex = screen->resource_create(screen, - &templat); - if (tex == NULL) - exit(4); - - surf_tmpl.format = templat.format; - surf_tmpl.u.tex.level = 0; - surf_tmpl.u.tex.first_layer = 0; - surf_tmpl.u.tex.last_layer = 0; - surf = ctx->create_surface(ctx, tex, &surf_tmpl); - if (surf == NULL) - exit(5); - - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = 1; - fb.width = WIDTH; - fb.height = HEIGHT; - fb.cbufs[0] = surf; - - ctx->set_framebuffer_state(ctx, &fb); - - { - struct pipe_blend_state blend; - void *handle; - memset(&blend, 0, sizeof blend); - blend.rt[0].colormask = PIPE_MASK_RGBA; - handle = ctx->create_blend_state(ctx, &blend); - ctx->bind_blend_state(ctx, handle); - } - - { - struct pipe_depth_stencil_alpha_state depthstencil; - void *handle; - memset(&depthstencil, 0, sizeof depthstencil); - handle = ctx->create_depth_stencil_alpha_state(ctx, &depthstencil); - ctx->bind_depth_stencil_alpha_state(ctx, handle); - } - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = ctx->create_rasterizer_state(ctx, &rasterizer); - ctx->bind_rasterizer_state(ctx, handle); - } - - set_viewport(0, 0, WIDTH, HEIGHT, 30, 1000); - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - - -static void options(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc;) { - if (graw_parse_args(&i, argc, argv)) { - continue; - } - if (strcmp(argv[i], "-e") == 0) { - draw_elements = 1; - i++; - } - else { - i++; - } - } - if (draw_elements) - printf("Using pipe_context::draw_elements_instanced()\n"); - else - printf("Using pipe_context::draw_arrays_instanced()\n"); -} - - -int main( int argc, char *argv[] ) -{ - options(argc, argv); - - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/tri-large.c b/src/gallium/tests/graw/tri-large.c deleted file mode 100644 index 2f4afb0..0000000 --- a/src/gallium/tests/graw/tri-large.c +++ /dev/null @@ -1,175 +0,0 @@ -/* Display a huge triangle on a 8192x8192 canvas. - * This demo has no dependencies on any utility code, - * just the graw interface and gallium. - */ - -#include "graw_util.h" -#include "util/u_debug.h" - -#include - -static struct graw_info info; - -static const int WIDTH = 4*2048; -static const int HEIGHT = 4*2048; - - -struct vertex { - float position[4]; - float color[4]; -}; - -static boolean FlatShade = FALSE; - - -static struct vertex vertices[3] = -{ - { - { -1.0f, -1.0f, 0.0f, 1.0f }, - { 1.0f, 0.0f, 0.0f, 1.0f } - }, - { - { -1.0f, 1.0f, 0.0f, 1.0f }, - { 0.0f, 1.0f, 0.0f, 1.0f } - }, - { - { 1.0f, 1.0f, 0.0f, 1.0f }, - { 0.0f, 0.0f, 1.0f, 1.0f } - } -}; - - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof( struct vertex ); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], COLOR\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: MOV OUT[0], IN[0]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info.ctx, text); - info.ctx->bind_vs_state(info.ctx, handle); -} - - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], COLOR, LINEAR\n" - "DCL OUT[0], COLOR\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: END\n"; - - handle = graw_parse_fragment_shader(info.ctx, text); - info.ctx->bind_fs_state(info.ctx, handle); -} - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {1,0,1,1} }; - - info.ctx->clear(info.ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(info.ctx, PIPE_PRIM_TRIANGLES, 0, 3); - info.ctx->flush(info.ctx, NULL, 0); - - graw_save_surface_to_file(info.ctx, info.color_surf[0], NULL); - - graw_util_flush_front(&info); -} - - -static void init( void ) -{ - if (!graw_util_create_window(&info, WIDTH, HEIGHT, 1, FALSE)) - exit(1); - - graw_util_default_state(&info, FALSE); - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.flatshade = FlatShade; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = info.ctx->create_rasterizer_state(info.ctx, &rasterizer); - info.ctx->bind_rasterizer_state(info.ctx, handle); - } - - - graw_util_viewport(&info, 0, 0, WIDTH, HEIGHT, 30, 1000); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - -static void args(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc; ) { - if (graw_parse_args(&i, argc, argv)) { - /* ok */ - } - else if (strcmp(argv[i], "-f") == 0) { - FlatShade = TRUE; - i++; - } - else { - printf("Invalid arg %s\n", argv[i]); - exit(1); - } - } -} - -int main( int argc, char *argv[] ) -{ - args(argc, argv); - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/tri.c b/src/gallium/tests/graw/tri.c deleted file mode 100644 index 4c59a66..0000000 --- a/src/gallium/tests/graw/tri.c +++ /dev/null @@ -1,172 +0,0 @@ -/* Display a cleared blue window. This demo has no dependencies on - * any utility code, just the graw interface and gallium. - */ - -#include -#include "graw_util.h" - -static struct graw_info info; - -static const int WIDTH = 300; -static const int HEIGHT = 300; - - -struct vertex { - float position[4]; - float color[4]; -}; - -static boolean FlatShade = FALSE; - - -static struct vertex vertices[3] = -{ - { - { 0.0f, -0.9f, 0.0f, 1.0f }, - { 1.0f, 0.0f, 0.0f, 1.0f } - }, - { - { -0.9f, 0.9f, 0.0f, 1.0f }, - { 0.0f, 1.0f, 0.0f, 1.0f } - }, - { - { 0.9f, 0.9f, 0.0f, 1.0f }, - { 0.0f, 0.0f, 1.0f, 1.0f } - } -}; - - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); - info.ctx->bind_vertex_elements_state(info.ctx, handle); - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof( struct vertex ); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(info.ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - info.ctx->set_vertex_buffers(info.ctx, 0, 1, 0, false, &vbuf); -} - - -static void set_vertex_shader( void ) -{ - void *handle; - const char *text = - "VERT\n" - "DCL IN[0]\n" - "DCL IN[1]\n" - "DCL OUT[0], POSITION\n" - "DCL OUT[1], COLOR\n" - " 0: MOV OUT[1], IN[1]\n" - " 1: MOV OUT[0], IN[0]\n" - " 2: END\n"; - - handle = graw_parse_vertex_shader(info.ctx, text); - info.ctx->bind_vs_state(info.ctx, handle); -} - - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], COLOR, LINEAR\n" - "DCL OUT[0], COLOR\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: END\n"; - - handle = graw_parse_fragment_shader(info.ctx, text); - info.ctx->bind_fs_state(info.ctx, handle); -} - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {1,0,1,1} }; - - info.ctx->clear(info.ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(info.ctx, PIPE_PRIM_TRIANGLES, 0, 3); - info.ctx->flush(info.ctx, NULL, 0); - - graw_save_surface_to_file(info.ctx, info.color_surf[0], NULL); - - graw_util_flush_front(&info); -} - - -static void init( void ) -{ - if (!graw_util_create_window(&info, WIDTH, HEIGHT, 1, FALSE)) - exit(1); - - graw_util_default_state(&info, FALSE); - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.flatshade = FlatShade; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = info.ctx->create_rasterizer_state(info.ctx, &rasterizer); - info.ctx->bind_rasterizer_state(info.ctx, handle); - } - - - graw_util_viewport(&info, 0, 0, WIDTH, HEIGHT, 30, 1000); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - -static void args(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc; ) { - if (graw_parse_args(&i, argc, argv)) { - /* ok */ - } - else if (strcmp(argv[i], "-f") == 0) { - FlatShade = TRUE; - i++; - } - else { - printf("Invalid arg %s\n", argv[i]); - exit(1); - } - } -} - -int main( int argc, char *argv[] ) -{ - args(argc, argv); - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/graw/vertex-shader/vert-abs.txt b/src/gallium/tests/graw/vertex-shader/vert-abs.txt deleted file mode 100644 index 062a48b..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-abs.txt +++ /dev/null @@ -1,15 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL TEMP[0] - -IMM FLT32 { 0.2, 0.2, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -ABS OUT[0], TEMP[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-add.txt b/src/gallium/tests/graw/vertex-shader/vert-add.txt deleted file mode 100644 index 188931eb..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-add.txt +++ /dev/null @@ -1,13 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -IMM FLT32 { 0.2, -0.1, 0.0, 0.0 } - -ADD OUT[0], IN[0], IMM[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-arl.txt b/src/gallium/tests/graw/vertex-shader/vert-arl.txt deleted file mode 100644 index 0039597..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-arl.txt +++ /dev/null @@ -1,23 +0,0 @@ -VERT - -DCL IN[0] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -DCL ADDR[0] - -IMM FLT32 { 3.0, 1.0, 1.0, 1.0 } -IMM FLT32 { 1.0, 0.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 1.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } -IMM FLT32 { 1.0, 1.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 1.0, 1.0, 1.0 } - -MOV OUT[0], IN[0] -MUL TEMP[0], IN[0], IMM[0] -ARL ADDR[0].x, TEMP[0] -MOV OUT[1], IMM[ADDR[0].x + 3] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-arr.txt b/src/gallium/tests/graw/vertex-shader/vert-arr.txt deleted file mode 100644 index fdde4f9..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-arr.txt +++ /dev/null @@ -1,23 +0,0 @@ -VERT - -DCL IN[0] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -DCL ADDR[0] - -IMM FLT32 { 3.0, 1.0, 1.0, 1.0 } -IMM FLT32 { 1.0, 0.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 1.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } -IMM FLT32 { 1.0, 1.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 1.0, 1.0, 1.0 } - -MOV OUT[0], IN[0] -MUL TEMP[0], IN[0], IMM[0] -ARR ADDR[0].x, TEMP[0] -MOV OUT[1], IMM[ADDR[0].x + 3] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-cb-1d.txt b/src/gallium/tests/graw/vertex-shader/vert-cb-1d.txt deleted file mode 100644 index 0b05ca8..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-cb-1d.txt +++ /dev/null @@ -1,16 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL CONST[0][1] -DCL CONST[0][3] -DCL TEMP[0..1] - -MOV OUT[0], IN[0] -ADD TEMP[0], IN[1], CONST[0][1] -RCP TEMP[1], CONST[0][3].xxxx -MUL OUT[1], TEMP[0], TEMP[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-cb-2d.txt b/src/gallium/tests/graw/vertex-shader/vert-cb-2d.txt deleted file mode 100644 index 39768d2..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-cb-2d.txt +++ /dev/null @@ -1,12 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL CONST[1][1..2] - -MOV OUT[0], IN[0] -MAD OUT[1], IN[1], CONST[1][2], CONST[1][1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-dp3.txt b/src/gallium/tests/graw/vertex-shader/vert-dp3.txt deleted file mode 100644 index 357e224..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-dp3.txt +++ /dev/null @@ -1,16 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL TEMP[0] - -IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } - -DP3 TEMP[0].xy, IN[0], IN[0] -MOV TEMP[0].zw, IMM[0] -MUL OUT[0], IN[0], TEMP[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-dp4.txt b/src/gallium/tests/graw/vertex-shader/vert-dp4.txt deleted file mode 100644 index 14f6106..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-dp4.txt +++ /dev/null @@ -1,16 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL TEMP[0] - -IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } - -DP4 TEMP[0].xy, IN[0], IN[0] -MOV TEMP[0].zw, IMM[0] -MUL OUT[0], IN[0], TEMP[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-dst.txt b/src/gallium/tests/graw/vertex-shader/vert-dst.txt deleted file mode 100644 index 2d59bd1..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-dst.txt +++ /dev/null @@ -1,11 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -MOV OUT[0], IN[0] -DST OUT[1], IN[1], IN[0] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-ex2.txt b/src/gallium/tests/graw/vertex-shader/vert-ex2.txt deleted file mode 100644 index e2383a6..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-ex2.txt +++ /dev/null @@ -1,18 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0..1] - -IMM FLT32 { 0.3, 0.3, 0.3, 1.0 } - -EX2 TEMP[0], IN[0] -EX2 TEMP[1], IN[1].yyyy -MUL TEMP[0], TEMP[0], IMM[0] -MOV OUT[0], IN[0] -MUL OUT[1], TEMP[0], TEMP[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-flr.txt b/src/gallium/tests/graw/vertex-shader/vert-flr.txt deleted file mode 100644 index fa24806..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-flr.txt +++ /dev/null @@ -1,23 +0,0 @@ -VERT - -DCL IN[0] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -DCL ADDR[0] - -IMM FLT32 { 3.0, 1.0, 1.0, 1.0 } -IMM FLT32 { 1.0, 0.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 1.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } -IMM FLT32 { 1.0, 1.0, 0.0, 1.0 } -IMM FLT32 { 0.0, 1.0, 1.0, 1.0 } - -MOV OUT[0], IN[0] -MUL TEMP[0], IN[0], IMM[0] -FLR ADDR[0].x, TEMP[0] -MOV OUT[1], IMM[ADDR[0].x + 3] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-frc.txt b/src/gallium/tests/graw/vertex-shader/vert-frc.txt deleted file mode 100644 index ff09bfa..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-frc.txt +++ /dev/null @@ -1,15 +0,0 @@ -VERT - -DCL IN[0] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -IMM FLT32 { 2.7, 3.1, 4.5, 1.0 } - -MUL TEMP[0], IN[0].xyxw, IMM[0] -MOV OUT[0], IN[0] -FRC OUT[1], TEMP[0] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-imul_hi.txt b/src/gallium/tests/graw/vertex-shader/vert-imul_hi.txt deleted file mode 100644 index 60e2d80..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-imul_hi.txt +++ /dev/null @@ -1,13 +0,0 @@ -VERT -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL TEMP[0] -DCL TEMP[1] -IMM[0] INT32 {-2147483648, 2, 0, -1} -MOV OUT[0], IN[0] -IMUL_HI TEMP[0], IMM[0].xzzx, IMM[0].yzzy -UMUL TEMP[0], TEMP[0], IMM[0].wwww -I2F OUT[1], TEMP[0] -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-lg2.txt b/src/gallium/tests/graw/vertex-shader/vert-lg2.txt deleted file mode 100644 index 876b7ab..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-lg2.txt +++ /dev/null @@ -1,18 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } -IMM FLT32 { 0.5, 0.0, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -LG2 TEMP[0].x, TEMP[0].xxxx -ADD OUT[0], TEMP[0], IMM[1] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-lit.txt b/src/gallium/tests/graw/vertex-shader/vert-lit.txt deleted file mode 100644 index a2235ff..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-lit.txt +++ /dev/null @@ -1,11 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -MOV OUT[0], IN[0] -LIT OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-lrp.txt b/src/gallium/tests/graw/vertex-shader/vert-lrp.txt deleted file mode 100644 index a26ca3b..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-lrp.txt +++ /dev/null @@ -1,14 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -ABS TEMP[0], IN[0] -MOV OUT[0], IN[0] -LRP OUT[1], TEMP[0], IN[1].xxxx, IN[1].yyyy - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-mad.txt b/src/gallium/tests/graw/vertex-shader/vert-mad.txt deleted file mode 100644 index caf83a9..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-mad.txt +++ /dev/null @@ -1,14 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -IMM FLT32 { 0.5, 1.0, 1.0, 1.0 } -IMM FLT32 { 0.5, 0.0, 0.0, 0.0 } - -MAD OUT[0], IN[0], IMM[0], IMM[1] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-max.txt b/src/gallium/tests/graw/vertex-shader/vert-max.txt deleted file mode 100644 index db84a49..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-max.txt +++ /dev/null @@ -1,13 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -IMM FLT32 { 0.5, 0.5, 0.5, 0.0 } - -MOV OUT[0], IN[0] -MAX OUT[1], IN[1], IMM[0] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-min.txt b/src/gallium/tests/graw/vertex-shader/vert-min.txt deleted file mode 100644 index 63a8c2c..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-min.txt +++ /dev/null @@ -1,13 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -IMM FLT32 { 0.5, 0.5, 0.5, 0.0 } - -MOV OUT[0], IN[0] -MIN OUT[1], IN[1], IMM[0] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-mov.txt b/src/gallium/tests/graw/vertex-shader/vert-mov.txt deleted file mode 100644 index 4c23e3e..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-mov.txt +++ /dev/null @@ -1,11 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -MOV OUT[0], IN[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-mul.txt b/src/gallium/tests/graw/vertex-shader/vert-mul.txt deleted file mode 100644 index a409cd4..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-mul.txt +++ /dev/null @@ -1,13 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -IMM FLT32 { 0.6, 0.6, 1.0, 1.0 } - -MUL OUT[0], IN[0], IMM[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-rcp.txt b/src/gallium/tests/graw/vertex-shader/vert-rcp.txt deleted file mode 100644 index 8843fe5..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-rcp.txt +++ /dev/null @@ -1,18 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -IMM[0] FLT32 { 1.0, 0.0, 0.0, 0.0 } -IMM[1] FLT32 { 1.5, 0.0, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -RCP TEMP[0].x, TEMP[0].xxxx -SUB OUT[0], TEMP[0], IMM[1] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-rsq.txt b/src/gallium/tests/graw/vertex-shader/vert-rsq.txt deleted file mode 100644 index 6fbd53a..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-rsq.txt +++ /dev/null @@ -1,18 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } -IMM FLT32 { 1.5, 0.0, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -RSQ TEMP[0].x, TEMP[0].xxxx -SUB OUT[0], TEMP[0], IMM[1] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-sge.txt b/src/gallium/tests/graw/vertex-shader/vert-sge.txt deleted file mode 100644 index e32a21b..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-sge.txt +++ /dev/null @@ -1,16 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -IMM FLT32 { -0.1, -0.1, 1.0, 0.0 } - -SGE TEMP[0], IN[0], IMM[0] -MOV OUT[0], IN[0] -MUL OUT[1], IN[1], TEMP[0] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-slt.txt b/src/gallium/tests/graw/vertex-shader/vert-slt.txt deleted file mode 100644 index 2af6106..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-slt.txt +++ /dev/null @@ -1,16 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -DCL TEMP[0] - -IMM FLT32 { 0.6, 0.6, 0.0, 0.0 } - -SLT TEMP[0], IN[0], IMM[0] -MOV OUT[0], IN[0] -MUL OUT[1], IN[1], TEMP[0] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-srcmod-abs.txt b/src/gallium/tests/graw/vertex-shader/vert-srcmod-abs.txt deleted file mode 100644 index e768d95..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-srcmod-abs.txt +++ /dev/null @@ -1,15 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL TEMP[0] - -IMM FLT32 { 0.1, 0.1, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -MOV OUT[0], |TEMP[0]| -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-srcmod-absneg.txt b/src/gallium/tests/graw/vertex-shader/vert-srcmod-absneg.txt deleted file mode 100644 index 40ca5d6..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-srcmod-absneg.txt +++ /dev/null @@ -1,16 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL TEMP[0] - -IMM FLT32 { -0.2, -0.2, 0.0, 0.0 } - -ADD TEMP[0], IN[0], IMM[0] -MOV OUT[0].xy, -|TEMP[0]| -MOV OUT[0].zw, IN[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-srcmod-neg.txt b/src/gallium/tests/graw/vertex-shader/vert-srcmod-neg.txt deleted file mode 100644 index 297bc1e..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-srcmod-neg.txt +++ /dev/null @@ -1,12 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -MOV OUT[0].xy, -IN[0] -MOV OUT[0].zw, IN[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-srcmod-swz.txt b/src/gallium/tests/graw/vertex-shader/vert-srcmod-swz.txt deleted file mode 100644 index 528f164..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-srcmod-swz.txt +++ /dev/null @@ -1,11 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -MOV OUT[0], IN[0].yxzw -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-sub.txt b/src/gallium/tests/graw/vertex-shader/vert-sub.txt deleted file mode 100644 index 90249ab..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-sub.txt +++ /dev/null @@ -1,13 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -IMM FLT32 { 0.1, 0.1, 0.0, 0.0 } - -SUB OUT[0], IN[0], IMM[0] -MOV OUT[1], IN[1] - -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-uadd.txt b/src/gallium/tests/graw/vertex-shader/vert-uadd.txt deleted file mode 100644 index d2a7a1b..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-uadd.txt +++ /dev/null @@ -1,9 +0,0 @@ -VERT -DCL IN[0] -DCL IN[1] -DCL OUT[0], GENERIC[0] -DCL OUT[1], GENERIC[1] -IMM[0] INT32 {1, 0, 0, 0} -MOV OUT[0], IN[0] -UADD OUT[1].x, IN[1].xxxx, IMM[0].xxxx -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-umul_hi.txt b/src/gallium/tests/graw/vertex-shader/vert-umul_hi.txt deleted file mode 100644 index 4aa79fe..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-umul_hi.txt +++ /dev/null @@ -1,11 +0,0 @@ -VERT -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR -DCL TEMP[0] -IMM[0] INT32 {4, 1073741824, 0, 1} -MOV OUT[0], IN[0] -UMUL_HI TEMP[0], IMM[0].xzzx, IMM[0].yzzy -I2F OUT[1], TEMP[0] -END diff --git a/src/gallium/tests/graw/vertex-shader/vert-xpd.txt b/src/gallium/tests/graw/vertex-shader/vert-xpd.txt deleted file mode 100644 index 72b0486..0000000 --- a/src/gallium/tests/graw/vertex-shader/vert-xpd.txt +++ /dev/null @@ -1,11 +0,0 @@ -VERT - -DCL IN[0] -DCL IN[1] -DCL OUT[0], POSITION -DCL OUT[1], COLOR - -MOV OUT[0], IN[0] -XPD OUT[1], IN[0], IN[1] - -END diff --git a/src/gallium/tests/graw/vs-test.c b/src/gallium/tests/graw/vs-test.c deleted file mode 100644 index 215a756..0000000 --- a/src/gallium/tests/graw/vs-test.c +++ /dev/null @@ -1,507 +0,0 @@ -/* Display a cleared blue window. This demo has no dependencies on - * any utility code, just the graw interface and gallium. - */ - -#include "frontend/graw.h" -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_shader_tokens.h" -#include "pipe/p_state.h" -#include "pipe/p_defines.h" - -#include /* for fread(), etc */ - -#include "util/u_inlines.h" -#include "util/u_memory.h" /* Offset() */ -#include "util/u_draw_quad.h" -#include "util/u_box.h" - -static const char *filename = NULL; -unsigned show_fps = 0; - - -static void usage(char *name) -{ - fprintf(stderr, "usage: %s [ options ] shader_filename\n", name); -#ifndef _WIN32 - fprintf(stderr, "\n" ); - fprintf(stderr, "options:\n"); - fprintf(stderr, " -fps show frames per second\n"); -#endif -} - - -enum pipe_format formats[] = { - PIPE_FORMAT_RGBA8888_UNORM, - PIPE_FORMAT_BGRA8888_UNORM, - PIPE_FORMAT_NONE -}; - -static const int WIDTH = 250; -static const int HEIGHT = 250; - -static struct pipe_screen *screen = NULL; -static struct pipe_context *ctx = NULL; -static struct pipe_resource *rttex = NULL; -static struct pipe_resource *constbuf = NULL; -static struct pipe_surface *surf = NULL; -static struct pipe_sampler_view *sv = NULL; -static void *sampler = NULL; -static void *window = NULL; -static struct pipe_resource *samptex = NULL; - -struct vertex { - float position[4]; - float color[3]; -}; - -/* Draw a regular mesh - */ -#define MESH_SZ 16 -static struct vertex vertices[MESH_SZ * MESH_SZ]; - -static float constants[] = -{ 0.4, 0, 0, 1, - 1, 1, 1, 1, - 2, 2, 2, 2, - 4, 8, 16, 32, - - 3, 0, 0, 0, - 0, .5, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1, - - 1, 0, 0, 0.5, - 0, 1, 0, 0.5, - 0, 0, 1, 0, - 0, 0, 0, 1, -}; - -static void init_fs_constbuf( void ) -{ - struct pipe_resource templat; - struct pipe_box box; - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_BUFFER; - templat.format = PIPE_FORMAT_R8_UNORM; - templat.width0 = sizeof(constants); - templat.height0 = 1; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = PIPE_BIND_CONSTANT_BUFFER; - - constbuf = screen->resource_create(screen, - &templat); - if (constbuf == NULL) - exit(4); - - - u_box_2d(0,0,sizeof(constants),1, &box); - - ctx->buffer_subdata(ctx, constbuf, - PIPE_MAP_WRITE, - 0, sizeof(constants), constants); - - pipe_set_constant_buffer(ctx, - PIPE_SHADER_VERTEX, 0, - constbuf); -} - - -static void set_viewport( float x, float y, - float width, float height, - float zNear, float zFar) -{ - float z = zFar; - float half_width = (float)width / 2.0f; - float half_height = (float)height / 2.0f; - float half_depth = ((float)zFar - (float)zNear) / 2.0f; - struct pipe_viewport_state vp; - - vp.scale[0] = half_width; - vp.scale[1] = half_height; - vp.scale[2] = half_depth; - - vp.translate[0] = half_width + x; - vp.translate[1] = half_height + y; - vp.translate[2] = half_depth + z; - - vp.swizzle_x = PIPE_VIEWPORT_SWIZZLE_POSITIVE_X; - vp.swizzle_y = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Y; - vp.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; - vp.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; - - ctx->set_viewport_states( ctx, 0, 1, &vp ); -} - -static void set_vertices( void ) -{ - struct pipe_vertex_element ve[2]; - struct pipe_vertex_buffer vbuf; - void *handle; - int x,y; - - memset(ve, 0, sizeof ve); - - ve[0].src_offset = Offset(struct vertex, position); - ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - ve[1].src_offset = Offset(struct vertex, color); - ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - - handle = ctx->create_vertex_elements_state(ctx, 2, ve); - ctx->bind_vertex_elements_state(ctx, handle); - - for (x = 0; x < MESH_SZ; x++) { - for (y = 0; y < MESH_SZ; y++) { - int i = y * MESH_SZ + x; - vertices[i].position[0] = ((float)x)/MESH_SZ * 2.0 - 1.0; - vertices[i].position[1] = ((float)y)/MESH_SZ * 2.0 - 1.0; - vertices[i].position[2] = 0; - vertices[i].position[3] = 1.0; - - vertices[i].color[0] = .5; - vertices[i].color[1] = (float)x / (float)MESH_SZ; - vertices[i].color[2] = (float)y / (float)MESH_SZ; - } - } - - memset(&vbuf, 0, sizeof vbuf); - - vbuf.stride = sizeof( struct vertex ); - vbuf.buffer_offset = 0; - vbuf.buffer.resource = pipe_buffer_create_with_data(ctx, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_DEFAULT, - sizeof(vertices), - vertices); - - ctx->set_vertex_buffers(ctx, 0, 1, 0, false, &vbuf); -} - -static void set_vertex_shader( void ) -{ - FILE *f; - char buf[50000]; - void *handle; - int sz; - - if ((f = fopen(filename, "r")) == NULL) { - fprintf(stderr, "Couldn't open %s\n", filename); - exit(1); - } - - sz = fread(buf, 1, sizeof(buf), f); - if (!feof(f)) { - printf("file too long\n"); - exit(1); - } - printf("%.*s\n", sz, buf); - buf[sz] = 0; - - handle = graw_parse_vertex_shader(ctx, buf); - ctx->bind_vs_state(ctx, handle); - fclose(f); -} - -static void set_fragment_shader( void ) -{ - void *handle; - const char *text = - "FRAG\n" - "DCL IN[0], COLOR, LINEAR\n" - "DCL OUT[0], COLOR\n" - " 0: MOV OUT[0], IN[0]\n" - " 1: END\n"; - - handle = graw_parse_fragment_shader(ctx, text); - ctx->bind_fs_state(ctx, handle); -} - - - -static void draw( void ) -{ - union pipe_color_union clear_color = { {.1,.3,.5,0} }; - - ctx->clear(ctx, PIPE_CLEAR_COLOR, NULL, &clear_color, 0, 0); - util_draw_arrays(ctx, PIPE_PRIM_POINTS, 0, ARRAY_SIZE(vertices)); - ctx->flush(ctx, NULL, 0); - - graw_save_surface_to_file(ctx, surf, NULL); - - screen->flush_frontbuffer(screen, ctx, rttex, 0, 0, window, NULL); -} - -#define SIZE 16 - -static void init_tex( void ) -{ - struct pipe_sampler_view sv_template; - struct pipe_sampler_state sampler_desc; - struct pipe_resource templat; - struct pipe_box box; - ubyte tex2d[SIZE][SIZE][4]; - int s, t; - -#if (SIZE != 2) - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - if (0) { - int x = (s ^ t) & 1; - tex2d[t][s][0] = (x) ? 0 : 63; - tex2d[t][s][1] = (x) ? 0 : 128; - tex2d[t][s][2] = 0; - tex2d[t][s][3] = 0xff; - } - else { - int x = ((s ^ t) >> 2) & 1; - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = (x) ? 0 : 128; - tex2d[t][s][3] = 0xff; - } - } - } -#else - tex2d[0][0][0] = 0; - tex2d[0][0][1] = 255; - tex2d[0][0][2] = 255; - tex2d[0][0][3] = 0; - - tex2d[0][1][0] = 0; - tex2d[0][1][1] = 0; - tex2d[0][1][2] = 255; - tex2d[0][1][3] = 255; - - tex2d[1][0][0] = 255; - tex2d[1][0][1] = 255; - tex2d[1][0][2] = 0; - tex2d[1][0][3] = 255; - - tex2d[1][1][0] = 255; - tex2d[1][1][1] = 0; - tex2d[1][1][2] = 0; - tex2d[1][1][3] = 255; -#endif - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = PIPE_FORMAT_B8G8R8A8_UNORM; - templat.width0 = SIZE; - templat.height0 = SIZE; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = PIPE_BIND_SAMPLER_VIEW; - - - samptex = screen->resource_create(screen, - &templat); - if (samptex == NULL) - exit(4); - - u_box_2d(0,0,SIZE,SIZE, &box); - - ctx->texture_subdata(ctx, - samptex, - 0, - PIPE_MAP_WRITE, - &box, - tex2d, - sizeof tex2d[0], - sizeof tex2d); - - /* Possibly read back & compare against original data: - */ - if (0) - { - struct pipe_transfer *t; - uint32_t *ptr; - ptr = pipe_texture_map(ctx, samptex, - 0, 0, /* level, layer */ - PIPE_MAP_READ, - 0, 0, SIZE, SIZE, &t); /* x, y, width, height */ - - if (memcmp(ptr, tex2d, sizeof tex2d) != 0) { - assert(0); - exit(9); - } - - ctx->texture_unmap(ctx, t); - } - - memset(&sv_template, 0, sizeof sv_template); - sv_template.format = samptex->format; - sv_template.texture = samptex; - sv_template.swizzle_r = 0; - sv_template.swizzle_g = 1; - sv_template.swizzle_b = 2; - sv_template.swizzle_a = 3; - sv = ctx->create_sampler_view(ctx, samptex, &sv_template); - if (sv == NULL) - exit(5); - - ctx->set_sampler_views(ctx, PIPE_SHADER_FRAGMENT, 0, 1, 0, false, &sv); - - - memset(&sampler_desc, 0, sizeof sampler_desc); - sampler_desc.wrap_s = PIPE_TEX_WRAP_REPEAT; - sampler_desc.wrap_t = PIPE_TEX_WRAP_REPEAT; - sampler_desc.wrap_r = PIPE_TEX_WRAP_REPEAT; - sampler_desc.min_img_filter = PIPE_TEX_FILTER_NEAREST; - sampler_desc.min_mip_filter = PIPE_TEX_MIPFILTER_NONE; - sampler_desc.mag_img_filter = PIPE_TEX_FILTER_NEAREST; - sampler_desc.compare_mode = PIPE_TEX_COMPARE_NONE; - sampler_desc.compare_func = 0; - sampler_desc.normalized_coords = 1; - sampler_desc.max_anisotropy = 0; - - sampler = ctx->create_sampler_state(ctx, &sampler_desc); - if (sampler == NULL) - exit(6); - - ctx->bind_sampler_states(ctx, PIPE_SHADER_FRAGMENT, 0, 1, &sampler); - -} - -static void init( void ) -{ - struct pipe_framebuffer_state fb; - struct pipe_resource templat; - struct pipe_surface surf_tmpl; - int i; - - /* It's hard to say whether window or screen should be created - * first. Different environments would prefer one or the other. - * - * Also, no easy way of querying supported formats if the screen - * cannot be created first. - */ - for (i = 0; formats[i] != PIPE_FORMAT_NONE; i++) { - screen = graw_create_window_and_screen(0, 0, 300, 300, - formats[i], - &window); - if (window && screen) - break; - } - if (!screen || !window) { - fprintf(stderr, "Unable to create window\n"); - exit(1); - } - - ctx = screen->context_create(screen, NULL, 0); - if (ctx == NULL) - exit(3); - - memset(&templat, 0, sizeof(templat)); - templat.target = PIPE_TEXTURE_2D; - templat.format = formats[i]; - templat.width0 = WIDTH; - templat.height0 = HEIGHT; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = (PIPE_BIND_RENDER_TARGET | - PIPE_BIND_DISPLAY_TARGET); - - rttex = screen->resource_create(screen, - &templat); - if (rttex == NULL) - exit(4); - - surf_tmpl.format = templat.format; - surf_tmpl.u.tex.level = 0; - surf_tmpl.u.tex.first_layer = 0; - surf_tmpl.u.tex.last_layer = 0; - surf = ctx->create_surface(ctx, rttex, &surf_tmpl); - if (surf == NULL) - exit(5); - - memset(&fb, 0, sizeof fb); - fb.nr_cbufs = 1; - fb.width = WIDTH; - fb.height = HEIGHT; - fb.cbufs[0] = surf; - - ctx->set_framebuffer_state(ctx, &fb); - - { - struct pipe_blend_state blend; - void *handle; - memset(&blend, 0, sizeof blend); - blend.rt[0].colormask = PIPE_MASK_RGBA; - handle = ctx->create_blend_state(ctx, &blend); - ctx->bind_blend_state(ctx, handle); - } - - { - struct pipe_depth_stencil_alpha_state depthstencil; - void *handle; - memset(&depthstencil, 0, sizeof depthstencil); - handle = ctx->create_depth_stencil_alpha_state(ctx, &depthstencil); - ctx->bind_depth_stencil_alpha_state(ctx, handle); - } - - { - struct pipe_rasterizer_state rasterizer; - void *handle; - memset(&rasterizer, 0, sizeof rasterizer); - rasterizer.cull_face = PIPE_FACE_NONE; - rasterizer.point_size = 8.0; - rasterizer.half_pixel_center = 1; - rasterizer.bottom_edge_rule = 1; - rasterizer.depth_clip_near = 1; - rasterizer.depth_clip_far = 1; - handle = ctx->create_rasterizer_state(ctx, &rasterizer); - ctx->bind_rasterizer_state(ctx, handle); - } - - set_viewport(0, 0, WIDTH, HEIGHT, 30, 1000); - - init_tex(); - init_fs_constbuf(); - - set_vertices(); - set_vertex_shader(); - set_fragment_shader(); -} - -static void args(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc;) { - if (graw_parse_args(&i, argc, argv)) { - continue; - } - if (strcmp(argv[i], "-fps") == 0) { - show_fps = 1; - i++; - } - else if (i == argc - 1) { - filename = argv[i]; - i++; - } - else { - usage(argv[0]); - exit(1); - } - } - - if (!filename) { - usage(argv[0]); - exit(1); - } -} - -int main( int argc, char *argv[] ) -{ - args(argc,argv); - init(); - - graw_set_display_func( draw ); - graw_main_loop(); - return 0; -} diff --git a/src/gallium/tests/meson.build b/src/gallium/tests/meson.build index 97e4b98..adfad67 100644 --- a/src/gallium/tests/meson.build +++ b/src/gallium/tests/meson.build @@ -25,5 +25,3 @@ endif if with_gallium_softpipe subdir('unit') endif - -subdir('graw') -- 2.7.4