1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Test the writing Z in fragment shader. 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The red quad should be entirely in front of the blue quad even 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * though the overlap and intersect in Z. 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <stdio.h> 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "graw_util.h" 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic int width = 300; 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic int height = 300; 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic struct graw_info info; 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct vertex { 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org float position[4]; 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org float color[4]; 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define z0 0.2 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define z01 0.5 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define z1 0.4 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic struct vertex vertices[] = 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* left quad: clock-wise, front-facing, red */ 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org {-0.8, -0.9, z0, 1.0 }, 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, 0, 0, 1 } 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { -0.2, -0.9, z0, 1.0 }, 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, 0, 0, 1 } 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0.2, 0.9, z01, 1.0 }, 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, 0, 0, 1 } 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org {-0.9, 0.9, z01, 1.0 }, 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, 0, 0, 1 } 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* right quad : counter-clock-wise, back-facing, green */ 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0.2, -0.9, z1, 1.0 }, 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 1, -1 } 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { -0.2, 0.8, z1, 1.0 }, 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 1, -1 } 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0.9, 0.8, z1, 1.0 }, 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 1, -1 } 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0.8, -0.9, z1, 1.0 }, 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 1, -1 } 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NUM_VERTS (sizeof(vertices) / sizeof(vertices[0])) 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_vertices(void) 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_vertex_element ve[2]; 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_vertex_buffer vbuf; 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *handle; 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org memset(ve, 0, sizeof ve); 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ve[0].src_offset = Offset(struct vertex, position); 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ve[1].src_offset = Offset(struct vertex, color); 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->bind_vertex_elements_state(info.ctx, handle); 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org vbuf.stride = sizeof(struct vertex); 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org vbuf.buffer_offset = 0; 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org vbuf.buffer = pipe_buffer_create_with_data(info.ctx, 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_BIND_VERTEX_BUFFER, 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_USAGE_STATIC, 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sizeof(vertices), 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org vertices); 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_vertex_shader(void) 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *handle; 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const char *text = 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "VERT\n" 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL IN[0]\n" 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL IN[1]\n" 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL OUT[0], POSITION\n" 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL OUT[1], GENERIC[0]\n" 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 0: MOV OUT[0], IN[0]\n" 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 1: MOV OUT[1], IN[1]\n" 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 2: END\n"; 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org handle = graw_parse_vertex_shader(info.ctx, text); 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->bind_vs_state(info.ctx, handle); 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_fragment_shader(void) 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *handle; 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const char *text = 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "FRAG\n" 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL IN[0], GENERIC, CONSTANT\n" 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL OUT[0], COLOR\n" 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL OUT[1], POSITION\n" 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL TEMP[0]\n" 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "IMM FLT32 { 1.0, 0.0, 0.0, 0.0 }\n" 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "IMM FLT32 { 0.0, 1.0, 0.0, 0.0 }\n" 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "IMM FLT32 { 0.5, 0.4, 0.0, 0.0 }\n" 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 0: MOV OUT[0], IN[0]\n" /* front-facing: red */ 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 1: IF IN[0].xxxx :3\n" 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 2: MOV OUT[1].z, IMM[2].yyyy\n" /* red: Z = 0.4 */ 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 3: ELSE :5\n" 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 4: MOV OUT[1].z, IMM[2].xxxx\n" /* blue: Z = 0.5 */ 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 5: ENDIF\n" 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 6: END\n"; 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org handle = graw_parse_fragment_shader(info.ctx, text); 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->bind_fs_state(info.ctx, handle); 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgdraw(void) 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union pipe_color_union clear_color; 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clear_color.f[0] = 0.25; 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clear_color.f[1] = 0.25; 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clear_color.f[2] = 0.25; 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clear_color.f[3] = 1.00; 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->clear(info.ctx, 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_CLEAR_COLOR | PIPE_CLEAR_DEPTHSTENCIL, 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org &clear_color, 1.0, 0); 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, NUM_VERTS); 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->flush(info.ctx, NULL); 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* At the moment, libgraw leaks out/makes available some of the 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * symbols from gallium/auxiliary, including these debug helpers. 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Will eventually want to bless some of these paths, and lock the 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * others down so they aren't accessible from test programs. 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * This currently just happens to work on debug builds - a release 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * build will probably fail to link here: 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org debug_dump_surface_bmp(info.ctx, "result.bmp", surf); 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_util_flush_front(&info); 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgresize(int w, int h) 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org width = w; 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org height = h; 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_util_viewport(&info, 0, 0, width, height, -1.0, 1.0); 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginit(void) 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!graw_util_create_window(&info, width, height, 1, TRUE)) 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org exit(1); 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_util_default_state(&info, TRUE); 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_util_viewport(&info, 0, 0, width, height, -1.0, 1.0); 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org set_vertices(); 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org set_vertex_shader(); 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org set_fragment_shader(); 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgmain(int argc, char *argv[]) 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org init(); 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org printf("The red quad should be entirely in front of the blue quad.\n"); 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_set_display_func(draw); 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /*graw_set_reshape_func(resize);*/ 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_main_loop(); 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 0; 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 224