/**************************************************************************
*
- * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2003 VMware, Inc.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* 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 ITS SUPPLIERS BE LIABLE FOR
+ * IN NO EVENT SHALL VMWARE AND/OR ITS 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 HAVE_LINE_STRIPS 1
#define HAVE_TRIANGLES 1
#define HAVE_TRI_STRIPS 1
-#define HAVE_TRI_STRIP_1 0 /* has it, template can't use it yet */
#define HAVE_TRI_FANS 1
#define HAVE_POLYGONS 1
-#define HAVE_QUADS 0
-#define HAVE_QUAD_STRIPS 0
#define HAVE_ELTS 0
-static uint32_t hw_prim[GL_POLYGON + 1] = {
+static const uint32_t hw_prim[GL_POLYGON + 1] = {
0,
PRIM3D_LINELIST,
PRIM3D_LINESTRIP,
intelDmaPrimitive(struct intel_context *intel, GLenum prim)
{
if (0)
- fprintf(stderr, "%s %s\n", __FUNCTION__, _mesa_lookup_enum_by_nr(prim));
+ fprintf(stderr, "%s %s\n", __func__, _mesa_enum_to_string(prim));
INTEL_FIREVERTICES(intel);
intel->vtbl.reduced_primitive_state(intel, reduced_prim[prim]);
intel_set_prim(intel, hw_prim[prim]);
}
-static INLINE GLuint intel_get_vb_max(struct intel_context *intel)
+#define INTEL_NO_VBO_STATE_RESERVED 1500
+
+static inline GLuint intel_get_vb_max(struct intel_context *intel)
{
GLuint ret;
- if (intel->intelScreen->no_vbo)
- ret = intel->batch->size - 1500;
- else
+ if (intel->intelScreen->no_vbo) {
+ ret = intel->batch.bo->size - INTEL_NO_VBO_STATE_RESERVED;
+ } else
ret = INTEL_VB_SIZE;
ret /= (intel->vertex_size * 4);
return ret;
}
-static INLINE GLuint intel_get_current_max(struct intel_context *intel)
+static inline GLuint intel_get_current_max(struct intel_context *intel)
{
+ GLuint ret;
- if (intel->intelScreen->no_vbo)
- return intel_get_vb_max(intel);
- else
- return (INTEL_VB_SIZE - intel->prim.current_offset) / (intel->vertex_size * 4);
+ if (intel->intelScreen->no_vbo) {
+ ret = intel_batchbuffer_space(intel);
+ ret = ret <= INTEL_NO_VBO_STATE_RESERVED ? 0 : ret - INTEL_NO_VBO_STATE_RESERVED;
+ } else
+ ret = (INTEL_VB_SIZE - intel->prim.current_offset);
+
+ return ret / (intel->vertex_size * 4);
}
#define LOCAL_VARS struct intel_context *intel = intel_context(ctx)
/* Heuristic to choose between the two render paths:
*/
-static GLboolean
+static bool
choose_render(struct intel_context *intel, struct vertex_buffer *VB)
{
int vertsz = intel->vertex_size;
cost_render, cost_fallback);
if (cost_render > cost_fallback)
- return GL_FALSE;
+ return false;
- return GL_TRUE;
+ return true;
}
*/
if (intel->RenderIndex != 0 ||
!intel_validate_render(ctx, VB) || !choose_render(intel, VB)) {
- return GL_TRUE;
+ return true;
}
tnl->clipspace.new_inputs |= VERT_BIT_POS;
continue;
intel_render_tab_verts[prim & PRIM_MODE_MASK] (ctx, start,
- start + length, prim);
+ length, prim);
}
tnl->Driver.Render.Finish(ctx);
INTEL_FIREVERTICES(intel);
- return GL_FALSE; /* finished the pipe */
+ return false; /* finished the pipe */
}
static const struct tnl_pipeline_stage _intel_render_stage = {