1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/************************************************************************** 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * All Rights Reserved. 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Permission is hereby granted, free of charge, to any person obtaining a 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * copy of this software and associated documentation files (the 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * "Software"), to deal in the Software without restriction, including 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * without limitation the rights to use, copy, modify, merge, publish, 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * distribute, sub license, and/or sell copies of the Software, and to 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * permit persons to whom the Software is furnished to do so, subject to 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * the following conditions: 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * The above copyright notice and this permission notice (including the 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * next paragraph) shall be included in all copies or substantial portions 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * of the Software. 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver **************************************************************************/ 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /* 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Authors: 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * Keith Whitwell <keith@tungstengraphics.com> 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */ 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "draw/draw_context.h" 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "draw/draw_private.h" 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "draw/draw_pt.h" 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "util/u_debug.h" 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervoid draw_pt_split_prim(unsigned prim, unsigned *first, unsigned *incr) 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{ 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver switch (prim) { 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_POINTS: 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 1; 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 1; 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_LINES: 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 2; 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 2; 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_LINE_STRIP: 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_LINE_LOOP: 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 2; 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 1; 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_LINES_ADJACENCY: 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 4; 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 4; 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_LINE_STRIP_ADJACENCY: 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 4; 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 1; 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_TRIANGLES: 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 3; 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 3; 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_TRIANGLES_ADJACENCY: 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 6; 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 6; 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_TRIANGLE_STRIP: 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_TRIANGLE_FAN: 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_POLYGON: 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 3; 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 1; 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 6; 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 2; 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_QUADS: 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 4; 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 4; 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver case PIPE_PRIM_QUAD_STRIP: 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 4; 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 2; 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver default: 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver assert(0); 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *first = 0; 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver *incr = 1; /* set to one so that count % incr works */ 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver break; 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverunsigned draw_pt_trim_count(unsigned count, unsigned first, unsigned incr) 97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{ 98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (count < first) 99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return 0; 100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return count - (count - first) % incr; 101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver