* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
* USE OR OTHER DEALINGS IN THE SOFTWARE.
#define PV_LAST 1
#define PV_COUNT 2
+/* primitive restart disable/enable flags */
+#define PR_DISABLE 0
+#define PR_ENABLE 1
+#define PR_COUNT 2
/**
* Index translator function (for glDrawElements() case)
*
*/
typedef void (*u_translate_func)( const void *in,
unsigned start,
- unsigned nr,
+ unsigned in_nr,
+ unsigned out_nr,
+ unsigned restart_index,
void *out );
/**
/* Return codes describe the translate/generate operation. Caller may
* be able to reuse translated indices under some circumstances.
*/
-#define U_TRANSLATE_ERROR -1
-#define U_TRANSLATE_NORMAL 1
-#define U_TRANSLATE_MEMCPY 2
-#define U_GENERATE_LINEAR 3
-#define U_GENERATE_REUSABLE 4
-#define U_GENERATE_ONE_OFF 5
-
+enum indices_mode {
+ U_TRANSLATE_ERROR = -1,
+ U_TRANSLATE_NORMAL = 1,
+ U_TRANSLATE_MEMCPY = 2,
+ U_GENERATE_LINEAR = 3,
+ U_GENERATE_REUSABLE= 4,
+ U_GENERATE_ONE_OFF = 5,
+};
void u_index_init( void );
-int u_index_translator( unsigned hw_mask,
- unsigned prim,
- unsigned in_index_size,
- unsigned nr,
- unsigned in_pv, /* API */
- unsigned out_pv, /* hardware */
- unsigned *out_prim,
- unsigned *out_index_size,
- unsigned *out_nr,
- u_translate_func *out_translate );
+enum indices_mode
+u_index_translator(unsigned hw_mask,
+ unsigned prim,
+ unsigned in_index_size,
+ unsigned nr,
+ unsigned in_pv, /* API */
+ unsigned out_pv, /* hardware */
+ unsigned prim_restart,
+ unsigned *out_prim,
+ unsigned *out_index_size,
+ unsigned *out_nr,
+ u_translate_func *out_translate);
/* Note that even when generating it is necessary to know what the
* API's PV is, as the indices generated will depend on whether it is
* the same as hardware or not, and in the case of triangle strips,
* whether it is first or last.
*/
-int u_index_generator( unsigned hw_mask,
- unsigned prim,
- unsigned start,
- unsigned nr,
- unsigned in_pv, /* API */
- unsigned out_pv, /* hardware */
- unsigned *out_prim,
- unsigned *out_index_size,
- unsigned *out_nr,
- u_generate_func *out_generate );
+enum indices_mode
+u_index_generator(unsigned hw_mask,
+ unsigned prim,
+ unsigned start,
+ unsigned nr,
+ unsigned in_pv, /* API */
+ unsigned out_pv, /* hardware */
+ unsigned *out_prim,
+ unsigned *out_index_size,
+ unsigned *out_nr,
+ u_generate_func *out_generate);
void u_unfilled_init( void );
-int u_unfilled_translator( unsigned prim,
- unsigned in_index_size,
- unsigned nr,
- unsigned unfilled_mode,
- unsigned *out_prim,
- unsigned *out_index_size,
- unsigned *out_nr,
- u_translate_func *out_translate );
-
-int u_unfilled_generator( unsigned prim,
- unsigned start,
- unsigned nr,
- unsigned unfilled_mode,
- unsigned *out_prim,
- unsigned *out_index_size,
- unsigned *out_nr,
- u_generate_func *out_generate );
-
-
-
+enum indices_mode
+u_unfilled_translator(unsigned prim,
+ unsigned in_index_size,
+ unsigned nr,
+ unsigned unfilled_mode,
+ unsigned *out_prim,
+ unsigned *out_index_size,
+ unsigned *out_nr,
+ u_translate_func *out_translate);
+
+enum indices_mode
+u_unfilled_generator(unsigned prim,
+ unsigned start,
+ unsigned nr,
+ unsigned unfilled_mode,
+ unsigned *out_prim,
+ unsigned *out_index_size,
+ unsigned *out_nr,
+ u_generate_func *out_generate);
#endif