lp_rast_priv.h revision 4c4f98c6fcabc4a2c9ede3647de390a4585cf58a
1ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca/************************************************************************** 2ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * 3ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * Copyright 2009 VMware, Inc. 4ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * All Rights Reserved. 5ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * 6ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * Permission is hereby granted, free of charge, to any person obtaining a 7ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * copy of this software and associated documentation files (the 8ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * "Software"), to deal in the Software without restriction, including 9ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * without limitation the rights to use, copy, modify, merge, publish, 10ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * distribute, sub license, and/or sell copies of the Software, and to 11ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * permit persons to whom the Software is furnished to do so, subject to 12ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * the following conditions: 13ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * 14ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * The above copyright notice and this permission notice (including the 15ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * next paragraph) shall be included in all copies or substantial portions 16ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * of the Software. 17ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * 18ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 22ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca * 26ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca **************************************************************************/ 27ee3383bc5ab81ff12d9faa675c1c38683300ce68José Fonseca 28e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell#ifndef LP_RAST_PRIV_H 29e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell#define LP_RAST_PRIV_H 30e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell 31a1af8eec66c5f7ec421e8011b41c1a7c36319f9fJosé Fonseca#include "os/os_thread.h" 325e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca#include "util/u_format.h" 335e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca#include "gallivm/lp_bld_debug.h" 34e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell#include "lp_rast.h" 350639765b2850739af1678f10fc0c5706d5827776Brian Paul#include "lp_scene.h" 364c4f98c6fcabc4a2c9ede3647de390a4585cf58aJosé Fonseca#include "lp_state.h" 370639765b2850739af1678f10fc0c5706d5827776Brian Paul#include "lp_texture.h" 382797f2bf57562c95a601a67edca3089641215cc4Brian Paul#include "lp_tile_soa.h" 3939be50dcdebe6bcbb48cb6aa8ac151eee811acb1José Fonseca#include "lp_limits.h" 403a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul 413a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul 42aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paulstruct lp_rasterizer; 43a6676d896ed18426ed3d7e6340347974c1694ca2José Fonseca 44a9be9cd8be0fac4be5d65430749666d2204b79a4Brian Paul 45a9be9cd8be0fac4be5d65430749666d2204b79a4Brian Paul/** 463a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul * Per-thread rasterization state 47a9be9cd8be0fac4be5d65430749666d2204b79a4Brian Paul */ 483a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paulstruct lp_rasterizer_task 49a9be9cd8be0fac4be5d65430749666d2204b79a4Brian Paul{ 50a9be9cd8be0fac4be5d65430749666d2204b79a4Brian Paul unsigned x, y; /**< Pos of this tile in framebuffer, in pixels */ 513a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul 520639765b2850739af1678f10fc0c5706d5827776Brian Paul uint8_t *color_tiles[PIPE_MAX_COLOR_BUFS]; 530639765b2850739af1678f10fc0c5706d5827776Brian Paul uint8_t *depth_tile; 540639765b2850739af1678f10fc0c5706d5827776Brian Paul 553a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul const struct lp_rast_state *current_state; 56aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul 57aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul /** "back" pointer */ 58aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul struct lp_rasterizer *rast; 59aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul 60aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul /** "my" index */ 61aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul unsigned thread_index; 62aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul 6386afe8250edaa2e6129c937a62a695f616c48d70Qicheng Christopher Li /* occlude counter for visiable pixels */ 6486afe8250edaa2e6129c937a62a695f616c48d70Qicheng Christopher Li uint32_t vis_counter; 6586afe8250edaa2e6129c937a62a695f616c48d70Qicheng Christopher Li 66aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul pipe_semaphore work_ready; 67aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul pipe_semaphore work_done; 683a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul}; 693a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul 703a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul 713a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul/** 723a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul * This is the state required while rasterizing tiles. 733a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul * Note that this contains per-thread information too. 743a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul * The tile size is TILE_SIZE x TILE_SIZE pixels. 753a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul */ 763a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paulstruct lp_rasterizer 773a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul{ 78bc04ae21c10bedcc75d3483784d3eaf7bf090f55Brian Paul boolean exit_flag; 79e0e2008f1dcd73a59a184e0ef4c1dd77ac2a1cbfKeith Whitwell 80a9be9cd8be0fac4be5d65430749666d2204b79a4Brian Paul /* Framebuffer stuff 81a9be9cd8be0fac4be5d65430749666d2204b79a4Brian Paul */ 825fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell struct { 835fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell void *map; 840639765b2850739af1678f10fc0c5706d5827776Brian Paul unsigned tiles_per_row; 850639765b2850739af1678f10fc0c5706d5827776Brian Paul unsigned blocksize; 865fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell enum pipe_format format; 875fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell } cbuf[PIPE_MAX_COLOR_BUFS]; 885fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell 895fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell struct { 905fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell uint8_t *map; 915fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell unsigned stride; 925fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell unsigned blocksize; 935fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell } zsbuf; 94e0e2008f1dcd73a59a184e0ef4c1dd77ac2a1cbfKeith Whitwell 95e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell struct { 965fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell unsigned nr_cbufs; 97e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell unsigned clear_color; 98e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell unsigned clear_depth; 99e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell char clear_stencil; 100e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell } state; 1013199c6e764c20c69a76c561b9f4b89a23e5a97f5Keith Whitwell 102663750d5564a225b4720f7ee8bea93ffb309fc88Keith Whitwell /** The incoming queue of scenes ready to rasterize */ 103663750d5564a225b4720f7ee8bea93ffb309fc88Keith Whitwell struct lp_scene_queue *full_scenes; 1045fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell 1055fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell /** 1065fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell * The outgoing queue of processed scenes to return to setup module 1075fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell * 1085fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell * XXX: while scenes are per-context but the rasterizer is 1095fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell * (potentially) shared, these empty scenes should be returned to 1105fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell * the context which created them rather than retained here. 1115fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell */ 11285ab6d2447784c417c705ec3c91be2893a801213Brian Paul /* struct lp_scene_queue *empty_scenes; */ 1132bce5c195f94e2cce8f67c6a8066b0ae408487ceBrian Paul 114663750d5564a225b4720f7ee8bea93ffb309fc88Keith Whitwell /** The scene currently being rasterized by the threads */ 115663750d5564a225b4720f7ee8bea93ffb309fc88Keith Whitwell struct lp_scene *curr_scene; 1162bce5c195f94e2cce8f67c6a8066b0ae408487ceBrian Paul 1173a06c113c76355fc9622adfe7565c18d9787e9a8Brian Paul /** A task object for each rasterization thread */ 11839be50dcdebe6bcbb48cb6aa8ac151eee811acb1José Fonseca struct lp_rasterizer_task tasks[LP_MAX_THREADS]; 119aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul 120aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul unsigned num_threads; 12139be50dcdebe6bcbb48cb6aa8ac151eee811acb1José Fonseca pipe_thread threads[LP_MAX_THREADS]; 122aab1ceceecbd6449eebce7f5f5b356b1a51552e7Brian Paul 1232bce5c195f94e2cce8f67c6a8066b0ae408487ceBrian Paul /** For synchronizing the rasterization threads */ 1242bce5c195f94e2cce8f67c6a8066b0ae408487ceBrian Paul pipe_barrier barrier; 125e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell}; 126e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell 127ab76b2a8b896edc1e972de108d044b70310b4324José Fonseca 1281c9db3c57f1538e21b839df0989b958be3465a36Brian Paulvoid lp_rast_shade_quads( struct lp_rasterizer_task *task, 129ab76b2a8b896edc1e972de108d044b70310b4324José Fonseca const struct lp_rast_shader_inputs *inputs, 130ab76b2a8b896edc1e972de108d044b70310b4324José Fonseca unsigned x, unsigned y, 131ab9438193083b7f9a3180cb9cea45e269131048aBrian Paul int32_t c1, int32_t c2, int32_t c3); 132ab76b2a8b896edc1e972de108d044b70310b4324José Fonseca 1332797f2bf57562c95a601a67edca3089641215cc4Brian Paul 1342797f2bf57562c95a601a67edca3089641215cc4Brian Paul/** 1350639765b2850739af1678f10fc0c5706d5827776Brian Paul * Get the pointer to a 4x4 depth/stencil block. 1360639765b2850739af1678f10fc0c5706d5827776Brian Paul * We'll map the z/stencil buffer on demand here. 1370639765b2850739af1678f10fc0c5706d5827776Brian Paul * Note that this may be called even when there's no z/stencil buffer - return 1380639765b2850739af1678f10fc0c5706d5827776Brian Paul * NULL in that case. 1395e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca * \param x, y location of 4x4 block in window coords 1405e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca */ 1415e6a9005100ec2636ce9734a5e4535216494cf60José Fonsecastatic INLINE void * 1420639765b2850739af1678f10fc0c5706d5827776Brian Paullp_rast_get_depth_block_pointer(const struct lp_rasterizer *rast, 1430639765b2850739af1678f10fc0c5706d5827776Brian Paul unsigned x, unsigned y) 1445e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca{ 1450639765b2850739af1678f10fc0c5706d5827776Brian Paul void *depth; 1465fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell 1475e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca assert((x % TILE_VECTOR_WIDTH) == 0); 1485e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca assert((y % TILE_VECTOR_HEIGHT) == 0); 1495fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell 1500639765b2850739af1678f10fc0c5706d5827776Brian Paul assert(rast->zsbuf.map || !rast->curr_scene->fb.zsbuf); 1510639765b2850739af1678f10fc0c5706d5827776Brian Paul 1525fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell if (!rast->zsbuf.map) 153ba33fed6106609ed04612b46011e28fab69d2310José Fonseca return NULL; 1545fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell 1555fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell depth = (rast->zsbuf.map + 1565fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell rast->zsbuf.stride * y + 1575fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell rast->zsbuf.blocksize * x * TILE_VECTOR_HEIGHT); 1585fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell 1595e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca assert(lp_check_alignment(depth, 16)); 1605e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca return depth; 1615e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca} 1625e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca 1635e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca 1640639765b2850739af1678f10fc0c5706d5827776Brian Paul/** 1650639765b2850739af1678f10fc0c5706d5827776Brian Paul * Get the pointer to a 4x4 color block (within a 64x64 tile). 1660639765b2850739af1678f10fc0c5706d5827776Brian Paul * We'll map the color buffer on demand here. 1670639765b2850739af1678f10fc0c5706d5827776Brian Paul * Note that this may be called even when there's no color buffers - return 1680639765b2850739af1678f10fc0c5706d5827776Brian Paul * NULL in that case. 1690639765b2850739af1678f10fc0c5706d5827776Brian Paul * \param x, y location of 4x4 block in window coords 1700639765b2850739af1678f10fc0c5706d5827776Brian Paul */ 1710639765b2850739af1678f10fc0c5706d5827776Brian Paulstatic INLINE uint8_t * 1720639765b2850739af1678f10fc0c5706d5827776Brian Paullp_rast_get_color_block_pointer(struct lp_rasterizer_task *task, 1730639765b2850739af1678f10fc0c5706d5827776Brian Paul unsigned buf, unsigned x, unsigned y) 1740639765b2850739af1678f10fc0c5706d5827776Brian Paul{ 1750639765b2850739af1678f10fc0c5706d5827776Brian Paul unsigned px, py, pixel_offset; 1760639765b2850739af1678f10fc0c5706d5827776Brian Paul uint8_t *color; 1770639765b2850739af1678f10fc0c5706d5827776Brian Paul 1780639765b2850739af1678f10fc0c5706d5827776Brian Paul assert((x % TILE_VECTOR_WIDTH) == 0); 1790639765b2850739af1678f10fc0c5706d5827776Brian Paul assert((y % TILE_VECTOR_HEIGHT) == 0); 1800639765b2850739af1678f10fc0c5706d5827776Brian Paul 1810639765b2850739af1678f10fc0c5706d5827776Brian Paul color = task->color_tiles[buf]; 1820639765b2850739af1678f10fc0c5706d5827776Brian Paul assert(color); 1830639765b2850739af1678f10fc0c5706d5827776Brian Paul 1840639765b2850739af1678f10fc0c5706d5827776Brian Paul px = x % TILE_SIZE; 1850639765b2850739af1678f10fc0c5706d5827776Brian Paul py = y % TILE_SIZE; 1860639765b2850739af1678f10fc0c5706d5827776Brian Paul pixel_offset = tile_pixel_offset(px, py, 0); 1870639765b2850739af1678f10fc0c5706d5827776Brian Paul 1880639765b2850739af1678f10fc0c5706d5827776Brian Paul color = color + pixel_offset; 1890639765b2850739af1678f10fc0c5706d5827776Brian Paul 1900639765b2850739af1678f10fc0c5706d5827776Brian Paul assert(lp_check_alignment(color, 16)); 1910639765b2850739af1678f10fc0c5706d5827776Brian Paul return color; 1920639765b2850739af1678f10fc0c5706d5827776Brian Paul} 1930639765b2850739af1678f10fc0c5706d5827776Brian Paul 1940639765b2850739af1678f10fc0c5706d5827776Brian Paul 1955e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca 1965e6a9005100ec2636ce9734a5e4535216494cf60José Fonseca/** 1972797f2bf57562c95a601a67edca3089641215cc4Brian Paul * Shade all pixels in a 4x4 block. The fragment code omits the 1982797f2bf57562c95a601a67edca3089641215cc4Brian Paul * triangle in/out tests. 1992797f2bf57562c95a601a67edca3089641215cc4Brian Paul * \param x, y location of 4x4 block in window coords 2002797f2bf57562c95a601a67edca3089641215cc4Brian Paul */ 2012797f2bf57562c95a601a67edca3089641215cc4Brian Paulstatic INLINE void 2021c9db3c57f1538e21b839df0989b958be3465a36Brian Paullp_rast_shade_quads_all( struct lp_rasterizer_task *task, 2032797f2bf57562c95a601a67edca3089641215cc4Brian Paul const struct lp_rast_shader_inputs *inputs, 2042797f2bf57562c95a601a67edca3089641215cc4Brian Paul unsigned x, unsigned y ) 2052797f2bf57562c95a601a67edca3089641215cc4Brian Paul{ 2061c9db3c57f1538e21b839df0989b958be3465a36Brian Paul struct lp_rasterizer *rast = task->rast; 2071c9db3c57f1538e21b839df0989b958be3465a36Brian Paul const struct lp_rast_state *state = task->current_state; 2082797f2bf57562c95a601a67edca3089641215cc4Brian Paul uint8_t *color[PIPE_MAX_COLOR_BUFS]; 2092797f2bf57562c95a601a67edca3089641215cc4Brian Paul void *depth; 2100639765b2850739af1678f10fc0c5706d5827776Brian Paul unsigned i; 2112797f2bf57562c95a601a67edca3089641215cc4Brian Paul 2122797f2bf57562c95a601a67edca3089641215cc4Brian Paul /* color buffer */ 2135fe2ce28b6e9fba181c13c6f49b57b3dd68fe88eKeith Whitwell for (i = 0; i < rast->state.nr_cbufs; i++) 2140639765b2850739af1678f10fc0c5706d5827776Brian Paul color[i] = lp_rast_get_color_block_pointer(task, i, x, y); 2150639765b2850739af1678f10fc0c5706d5827776Brian Paul 2160639765b2850739af1678f10fc0c5706d5827776Brian Paul depth = lp_rast_get_depth_block_pointer(rast, x, y); 2170639765b2850739af1678f10fc0c5706d5827776Brian Paul 2180639765b2850739af1678f10fc0c5706d5827776Brian Paul /* run shader on 4x4 block */ 2190639765b2850739af1678f10fc0c5706d5827776Brian Paul state->jit_function[RAST_WHOLE]( &state->jit_context, 2200639765b2850739af1678f10fc0c5706d5827776Brian Paul x, y, 2210639765b2850739af1678f10fc0c5706d5827776Brian Paul inputs->facing, 2220639765b2850739af1678f10fc0c5706d5827776Brian Paul inputs->a0, 2230639765b2850739af1678f10fc0c5706d5827776Brian Paul inputs->dadx, 2240639765b2850739af1678f10fc0c5706d5827776Brian Paul inputs->dady, 2250639765b2850739af1678f10fc0c5706d5827776Brian Paul color, 2260639765b2850739af1678f10fc0c5706d5827776Brian Paul depth, 2270639765b2850739af1678f10fc0c5706d5827776Brian Paul INT_MIN, INT_MIN, INT_MIN, 22886afe8250edaa2e6129c937a62a695f616c48d70Qicheng Christopher Li NULL, NULL, NULL, &task->vis_counter ); 2292797f2bf57562c95a601a67edca3089641215cc4Brian Paul} 2302797f2bf57562c95a601a67edca3089641215cc4Brian Paul 2312797f2bf57562c95a601a67edca3089641215cc4Brian Paul 232e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2Keith Whitwell#endif 233