#ifndef U_VBUF_H
#define U_VBUF_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* This module takes care of user buffer uploads and vertex format fallbacks.
* It's designed for the drivers which don't want to use the Draw module.
* There is a more detailed description at the beginning of the .c file.
void u_vbuf_save_vertex_buffer0(struct u_vbuf *mgr);
void u_vbuf_restore_vertex_buffer0(struct u_vbuf *mgr);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif
#include "util/u_framebuffer.h"
#include "util/u_viewport.h"
#include "util/u_prim.h"
+#include "util/u_vbuf.h"
#include "swr_state.h"
#include "swr_context.h"
/* Set vertex & index buffers */
if (ctx->dirty & SWR_NEW_VERTEX) {
- const struct pipe_draw_info &info = *p_draw_info;
-
+ struct pipe_draw_info info = *p_draw_info;
+ /* SWR always need min/max index info for index draw,
+ * compute it if upper layer does not do for us */
+ if (info.index_size > 0 && info.max_index == ~0u) {
+ u_vbuf_get_minmax_index(pipe, &info, &(info.min_index), &(info.max_index));
+ }
/* vertex buffers */
SWR_VERTEX_BUFFER_STATE swrVertexBuffers[PIPE_MAX_ATTRIBS];
for (UINT i = 0; i < ctx->num_vertex_buffers; i++) {