diff options
Diffstat (limited to 'mesalib/src/mesa/vbo')
-rw-r--r-- | mesalib/src/mesa/vbo/vbo_attrib_tmp.h | 4 | ||||
-rw-r--r-- | mesalib/src/mesa/vbo/vbo_exec_array.c | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/mesalib/src/mesa/vbo/vbo_attrib_tmp.h b/mesalib/src/mesa/vbo/vbo_attrib_tmp.h index 02c283da4..bbc020539 100644 --- a/mesalib/src/mesa/vbo/vbo_attrib_tmp.h +++ b/mesalib/src/mesa/vbo/vbo_attrib_tmp.h @@ -140,7 +140,7 @@ static inline float conv_i10_to_norm_float(const struct gl_context *ctx, int i10 (ctx->API == API_OPENGL_CORE && ctx->Version >= 42)) { /* Equation 2.3 above. */ float f = ((float) val.x) / 511.0F; - return MAX2(f, -1.0); + return MAX2(f, -1.0f); } else { /* Equation 2.2 above. */ return (2.0F * (float)val.x + 1.0F) * (1.0F / 1023.0F); @@ -156,7 +156,7 @@ static inline float conv_i2_to_norm_float(const struct gl_context *ctx, int i2) (ctx->API == API_OPENGL_CORE && ctx->Version >= 42)) { /* Equation 2.3 above. */ float f = (float) val.x; - return MAX2(f, -1.0); + return MAX2(f, -1.0f); } else { /* Equation 2.2 above. */ return (2.0F * (float)val.x + 1.0F) * (1.0F / 3.0F); diff --git a/mesalib/src/mesa/vbo/vbo_exec_array.c b/mesalib/src/mesa/vbo/vbo_exec_array.c index 1670409d4..f25a9dec3 100644 --- a/mesalib/src/mesa/vbo/vbo_exec_array.c +++ b/mesalib/src/mesa/vbo/vbo_exec_array.c @@ -1464,6 +1464,16 @@ vbo_draw_transform_feedback(struct gl_context *ctx, GLenum mode, return; } + if (ctx->Driver.GetTransformFeedbackVertexCount && + (ctx->Const.AlwaysUseGetTransformFeedbackVertexCount || + (ctx->Const.PrimitiveRestartInSoftware && + ctx->Array._PrimitiveRestart) || + !vbo_all_varyings_in_vbos(exec->array.inputs))) { + GLsizei n = ctx->Driver.GetTransformFeedbackVertexCount(ctx, obj, stream); + vbo_draw_arrays(ctx, mode, 0, n, numInstances, 0); + return; + } + vbo_bind_arrays(ctx); /* init most fields to zero */ |