1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* Test gallium occlusion queries. 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <stdio.h> 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "graw_util.h" 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic int width = 300; 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic int height = 300; 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* expected results of occlusion test (depndsd on window size) */ 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic int expected1 = (int) ((300 * 0.9) * (300 * 0.9)); 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic int expected2 = 420; 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic struct graw_info info; 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct vertex { 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org float position[4]; 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org float color[4]; 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define z0 0.2 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define z1 0.6 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic struct vertex obj1_vertices[4] = 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org {-0.9, -0.9, z0, 1.0 }, 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, 0, 0, 1 } 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0.9, -0.9, z0, 1.0 }, 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, 0, 0, 1 } 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0.9, 0.9, z0, 1.0 }, 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, 0, 0, 1 } 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org {-0.9, 0.9, z0, 1.0 }, 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, 0, 0, 1 } 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic struct vertex obj2_vertices[4] = 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { -0.2, -0.2, z1, 1.0 }, 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 1, 1 } 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0.95, -0.2, z1, 1.0 }, 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 1, 1 } 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0.95, 0.2, z1, 1.0 }, 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 1, 1 } 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { -0.2, 0.2, z1, 1.0 }, 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 1, 1 } 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define NUM_VERTS 4 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_vertices(struct vertex *vertices, unsigned bytes) 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_vertex_element ve[2]; 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_vertex_buffer vbuf; 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *handle; 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org memset(ve, 0, sizeof ve); 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ve[0].src_offset = Offset(struct vertex, position); 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ve[1].src_offset = Offset(struct vertex, color); 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org handle = info.ctx->create_vertex_elements_state(info.ctx, 2, ve); 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->bind_vertex_elements_state(info.ctx, handle); 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org vbuf.stride = sizeof(struct vertex); 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org vbuf.buffer_offset = 0; 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org vbuf.buffer = pipe_buffer_create_with_data(info.ctx, 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_BIND_VERTEX_BUFFER, 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_USAGE_STATIC, 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bytes, 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org vertices); 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->set_vertex_buffers(info.ctx, 1, &vbuf); 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_vertex_shader(struct graw_info *info) 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *handle; 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const char *text = 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "VERT\n" 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL IN[0]\n" 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL IN[1]\n" 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL OUT[0], POSITION\n" 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL OUT[1], GENERIC[0]\n" 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 0: MOV OUT[0], IN[0]\n" 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 1: MOV OUT[1], IN[1]\n" 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 2: END\n"; 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org handle = graw_parse_vertex_shader(info->ctx, text); 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!handle) { 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org debug_printf("Failed to parse vertex shader\n"); 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info->ctx->bind_vs_state(info->ctx, handle); 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgset_fragment_shader(struct graw_info *info) 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *handle; 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const char *text = 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "FRAG\n" 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL IN[0], GENERIC, LINEAR\n" 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "DCL OUT[0], COLOR\n" 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 0: MOV OUT[0], IN[0]\n" 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " 1: END\n"; 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org handle = graw_parse_fragment_shader(info->ctx, text); 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!handle) { 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org debug_printf("Failed to parse fragment shader\n"); 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info->ctx->bind_fs_state(info->ctx, handle); 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgdraw(void) 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int expected1_min = (int) (expected1 * 0.95); 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int expected1_max = (int) (expected1 * 1.05); 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int expected2_min = (int) (expected2 * 0.95); 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int expected2_max = (int) (expected2 * 1.05); 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union pipe_color_union clear_color; 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_query *q1, *q2; 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint64_t res1, res2; 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clear_color.f[0] = 0.25; 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clear_color.f[1] = 0.25; 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clear_color.f[2] = 0.25; 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clear_color.f[3] = 1.00; 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->clear(info.ctx, 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_CLEAR_COLOR | PIPE_CLEAR_DEPTHSTENCIL, 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org &clear_color, 1.0, 0); 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org q1 = info.ctx->create_query(info.ctx, PIPE_QUERY_OCCLUSION_COUNTER); 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org q2 = info.ctx->create_query(info.ctx, PIPE_QUERY_OCCLUSION_COUNTER); 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* draw first, large object */ 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org set_vertices(obj1_vertices, sizeof(obj1_vertices)); 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->begin_query(info.ctx, q1); 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, NUM_VERTS); 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->end_query(info.ctx, q1); 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* draw second, small object behind first object */ 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org set_vertices(obj2_vertices, sizeof(obj2_vertices)); 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->begin_query(info.ctx, q2); 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org util_draw_arrays(info.ctx, PIPE_PRIM_QUADS, 0, NUM_VERTS); 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->end_query(info.ctx, q2); 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->get_query_result(info.ctx, q1, TRUE, &res1); 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->get_query_result(info.ctx, q2, TRUE, &res2); 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org printf("result1 = %lu result2 = %lu\n", res1, res2); 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (res1 < expected1_min || res1 > expected1_max) 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org printf(" Failure: result1 should be near %d\n", expected1); 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (res2 < expected2_min || res2 > expected2_max) 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org printf(" Failure: result2 should be near %d\n", expected2); 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->flush(info.ctx, NULL); 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_util_flush_front(&info); 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->destroy_query(info.ctx, q1); 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org info.ctx->destroy_query(info.ctx, q2); 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgresize(int w, int h) 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org width = w; 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org height = h; 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_util_viewport(&info, 0, 0, width, height, 30, 1000); 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginit(void) 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!graw_util_create_window(&info, width, height, 1, TRUE)) 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org exit(1); 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_util_default_state(&info, TRUE); 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_util_viewport(&info, 0, 0, width, height, -1.0, 1.0); 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org set_vertex_shader(&info); 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org set_fragment_shader(&info); 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgmain(int argc, char *argv[]) 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org init(); 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org printf("The red quad should mostly occlude the blue quad.\n"); 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_set_display_func(draw); 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /*graw_set_reshape_func(resize);*/ 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org graw_main_loop(); 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return 0; 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 244