1 /**************************************************************************
3 * Copyright 2007 VMware, Inc.
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:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
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.
26 **************************************************************************/
31 struct softpipe_context
;
34 * Attribute interpolation mode
37 SP_INTERP_POS
, /**< special case for frag position */
44 struct sp_setup_info
{
47 unsigned interp
:8; /**< SP_INTERP_X */
49 } attrib
[PIPE_MAX_SHADER_OUTPUTS
];
53 sp_setup_tri(struct setup_context
*setup
,
56 const float (*v2
)[4]);
59 sp_setup_line(struct setup_context
*setup
,
61 const float (*v1
)[4]);
64 sp_setup_point( struct setup_context
*setup
,
65 const float (*v0
)[4] );
67 static inline unsigned
68 sp_clamp_viewport_idx(int idx
)
70 return (PIPE_MAX_VIEWPORTS
> idx
&& idx
>= 0) ? idx
: 0;
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
);