1 /************************************************************************** 2 * 3 * Copyright 2007 VMware, Inc. 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial portions 16 * of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21 * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 * 26 **************************************************************************/ 27 #ifndef SP_SETUP_H 28 #define SP_SETUP_H 29 30 struct setup_context; 31 struct softpipe_context; 32 33 /** 34 * Attribute interpolation mode 35 */ 36 enum sp_interp_mode { 37 SP_INTERP_POS, /**< special case for frag position */ 38 SP_INTERP_CONSTANT, 39 SP_INTERP_LINEAR, 40 SP_INTERP_PERSPECTIVE 41 }; 42 43 44 struct sp_setup_info { 45 unsigned valid; 46 struct { 47 unsigned interp:8; /**< SP_INTERP_X */ 48 int src_index:8; 49 } attrib[PIPE_MAX_SHADER_OUTPUTS]; 50 }; 51 52 void 53 sp_setup_tri(struct setup_context *setup, 54 const float (*v0)[4], 55 const float (*v1)[4], 56 const float (*v2)[4]); 57 58 void 59 sp_setup_line(struct setup_context *setup, 60 const float (*v0)[4], 61 const float (*v1)[4]); 62 63 void 64 sp_setup_point( struct setup_context *setup, 65 const float (*v0)[4] ); 66 67 static inline unsigned 68 sp_clamp_viewport_idx(int idx) 69 { 70 return (PIPE_MAX_VIEWPORTS > idx && idx >= 0) ? idx : 0; 71 } 72 73 struct setup_context *sp_setup_create_context( struct softpipe_context *softpipe ); 74 void sp_setup_prepare( struct setup_context *setup ); 75 void sp_setup_destroy_context( struct setup_context *setup ); 76 77 #endif 78