1debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell/**************************************************************************
2debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell *
3debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
4debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * All Rights Reserved.
5debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell *
6debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * Permission is hereby granted, free of charge, to any person obtaining a
7debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * copy of this software and associated documentation files (the
8debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * "Software"), to deal in the Software without restriction, including
9debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * without limitation the rights to use, copy, modify, merge, publish,
10debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * distribute, sub license, and/or sell copies of the Software, and to
11debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * permit persons to whom the Software is furnished to do so, subject to
12debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * the following conditions:
13debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell *
14debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * The above copyright notice and this permission notice (including the
15debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * next paragraph) shall be included in all copies or substantial portions
16debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * of the Software.
17debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell *
18debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell *
26debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell **************************************************************************/
27debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
28debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#ifndef I915_STATE_INLINES_H
29debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#define I915_STATE_INLINES_H
30debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
31687a8b96ef13658bbe779d0011ce1144844f1972José Fonseca#include "pipe/p_compiler.h"
32687a8b96ef13658bbe779d0011ce1144844f1972José Fonseca#include "pipe/p_defines.h"
33f6cecbb36164b060e194709938f4376a49795b93José Fonseca#include "util/u_debug.h"
34debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#include "i915_reg.h"
35debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
36debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
37debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellstatic INLINE unsigned
38debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwelli915_translate_compare_func(unsigned func)
39debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{
40debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   switch (func) {
41debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_FUNC_NEVER:
42debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_NEVER;
43debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_FUNC_LESS:
44debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_LESS;
45debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_FUNC_LEQUAL:
46debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_LEQUAL;
47debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_FUNC_GREATER:
48debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_GREATER;
49debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_FUNC_GEQUAL:
50debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_GEQUAL;
51debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_FUNC_NOTEQUAL:
52debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_NOTEQUAL;
53debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_FUNC_EQUAL:
54debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_EQUAL;
55debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_FUNC_ALWAYS:
56debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_ALWAYS;
57debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   default:
58debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return COMPAREFUNC_ALWAYS;
59debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   }
60debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}
61debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
62debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellstatic INLINE unsigned
636f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesini915_translate_shadow_compare_func(unsigned func)
646f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin{
656f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   switch (func) {
666f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   case PIPE_FUNC_NEVER:
676f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_ALWAYS;
686f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   case PIPE_FUNC_LESS:
696f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_LEQUAL;
706f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   case PIPE_FUNC_LEQUAL:
716f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_LESS;
726f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   case PIPE_FUNC_GREATER:
736f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_GEQUAL;
746f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   case PIPE_FUNC_GEQUAL:
756f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_GREATER;
766f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   case PIPE_FUNC_NOTEQUAL:
776f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_EQUAL;
786f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   case PIPE_FUNC_EQUAL:
796f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_NOTEQUAL;
806f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   case PIPE_FUNC_ALWAYS:
816f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_NEVER;
826f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   default:
836f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin      return COMPAREFUNC_NEVER;
846f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin   }
856f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin}
866f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesin
876f62a25448b765867ca9f424870abf5108d3a96dStéphane Marchesinstatic INLINE unsigned
88debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwelli915_translate_stencil_op(unsigned op)
89debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{
90debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   switch (op) {
91debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_STENCIL_OP_KEEP:
92debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_KEEP;
93debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_STENCIL_OP_ZERO:
94debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_ZERO;
95debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_STENCIL_OP_REPLACE:
96debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_REPLACE;
97debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_STENCIL_OP_INCR:
98debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_INCRSAT;
99debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_STENCIL_OP_DECR:
100debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_DECRSAT;
101debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_STENCIL_OP_INCR_WRAP:
102debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_INCR;
103debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_STENCIL_OP_DECR_WRAP:
104debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_DECR;
105debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_STENCIL_OP_INVERT:
106debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_INVERT;
107debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   default:
108debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return STENCILOP_ZERO;
109debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   }
110debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}
111debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
112debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellstatic INLINE unsigned
113debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwelli915_translate_blend_factor(unsigned factor)
114debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{
115debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   switch (factor) {
116debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_ZERO:
117debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_ZERO;
118debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_SRC_ALPHA:
119debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_SRC_ALPHA;
120debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_ONE:
121debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_ONE;
122debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_SRC_COLOR:
123debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_SRC_COLR;
124debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_INV_SRC_COLOR:
125debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_INV_SRC_COLR;
126debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_DST_COLOR:
127debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_DST_COLR;
128debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_INV_DST_COLOR:
129debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_INV_DST_COLR;
130debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_INV_SRC_ALPHA:
131debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_INV_SRC_ALPHA;
132debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_DST_ALPHA:
133debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_DST_ALPHA;
134debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_INV_DST_ALPHA:
135debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_INV_DST_ALPHA;
136debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
137debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_SRC_ALPHA_SATURATE;
138debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_CONST_COLOR:
139debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_CONST_COLOR;
140debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_INV_CONST_COLOR:
141debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_INV_CONST_COLOR;
142debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_CONST_ALPHA:
143debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_CONST_ALPHA;
144debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
145debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_INV_CONST_ALPHA;
146debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   default:
147debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFACT_ZERO;
148debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   }
149debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}
150debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
151debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellstatic INLINE unsigned
152debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwelli915_translate_blend_func(unsigned mode)
153debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{
154debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   switch (mode) {
155debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLEND_ADD:
156debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFUNC_ADD;
157debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLEND_MIN:
158debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFUNC_MIN;
159debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLEND_MAX:
160debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFUNC_MAX;
161debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLEND_SUBTRACT:
162debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFUNC_SUBTRACT;
163debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_BLEND_REVERSE_SUBTRACT:
164debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return BLENDFUNC_REVERSE_SUBTRACT;
165debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   default:
166debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return 0;
167debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   }
168debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}
169debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
170debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
171debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwellstatic INLINE unsigned
172debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwelli915_translate_logic_op(unsigned opcode)
173debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{
174debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   switch (opcode) {
175debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_CLEAR:
176debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_CLEAR;
177debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_AND:
178debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_AND;
179debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_AND_REVERSE:
180debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_AND_RVRSE;
181debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_COPY:
182debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_COPY;
183debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_COPY_INVERTED:
184debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_COPY_INV;
185debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_AND_INVERTED:
186debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_AND_INV;
187debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_NOOP:
188debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_NOOP;
189debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_XOR:
190debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_XOR;
191debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_OR:
192debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_OR;
193debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_OR_INVERTED:
194debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_OR_INV;
195debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_NOR:
196debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_NOR;
197debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_EQUIV:
198debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_EQUIV;
199debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_INVERT:
200debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_INV;
201debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_OR_REVERSE:
202debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_OR_RVRSE;
203debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_NAND:
204debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_NAND;
205debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PIPE_LOGICOP_SET:
206debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_SET;
207debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   default:
208debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      return LOGICOP_SET;
209debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   }
210debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}
211debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
212debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
213debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
21440a86b20478024ca7c55400019c536cb5ff631d1Keith Whitwellstatic INLINE boolean i915_validate_vertices( unsigned hw_prim, unsigned nr )
215debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell{
21640a86b20478024ca7c55400019c536cb5ff631d1Keith Whitwell   boolean ok;
217debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
218debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   switch (hw_prim) {
219debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PRIM3D_POINTLIST:
220debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      ok = (nr >= 1);
221debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      assert(ok);
222debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      break;
223debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PRIM3D_LINELIST:
224debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      ok = (nr >= 2) && (nr % 2) == 0;
225debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      assert(ok);
226debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      break;
227debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PRIM3D_LINESTRIP:
228debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      ok = (nr >= 2);
229debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      assert(ok);
230debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      break;
231debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PRIM3D_TRILIST:
232debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      ok = (nr >= 3) && (nr % 3) == 0;
233debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      assert(ok);
234debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      break;
235debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PRIM3D_TRISTRIP:
236debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      ok = (nr >= 3);
237debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      assert(ok);
238debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      break;
239debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PRIM3D_TRIFAN:
240debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      ok = (nr >= 3);
241debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      assert(ok);
242debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      break;
243debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   case PRIM3D_POLY:
244debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      ok = (nr >= 3);
245debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      assert(ok);
246debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      break;
247debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   default:
248debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      assert(0);
249debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      ok = 0;
250debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell      break;
251debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   }
252debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
253debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell   return ok;
254debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell}
255debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell
256debb4884e3bdf1e632ff79e728a59c1920cc2d15Keith Whitwell#endif
257