for (i = 0; i < PIPE_FORMAT_COUNT; i++)
caps->format_translation[i] = i;
- for (i = 0; i < Elements(vbuf_format_fallbacks); i++) {
+ for (i = 0; i < ARRAY_SIZE(vbuf_format_fallbacks); i++) {
enum pipe_format format = vbuf_format_fallbacks[i].from;
if (!screen->is_format_supported(screen, format, PIPE_BUFFER, 0,
mgr->translate_cache = translate_cache_create();
memset(mgr->fallback_vbs, ~0, sizeof(mgr->fallback_vbs));
- mgr->uploader = u_upload_create(pipe, 1024 * 1024, 4,
- PIPE_BIND_VERTEX_BUFFER);
+ mgr->uploader = u_upload_create(pipe, 1024 * 1024,
+ PIPE_BIND_VERTEX_BUFFER,
+ PIPE_USAGE_STREAM);
return mgr;
}
/* Create and map the output buffer. */
u_upload_alloc(mgr->uploader, 0,
- key->output_stride * num_indices,
+ key->output_stride * num_indices, 4,
&out_offset, &out_buffer,
(void**)&out_map);
if (!out_buffer)
/* Create and map the output buffer. */
u_upload_alloc(mgr->uploader,
key->output_stride * start_vertex,
- key->output_stride * num_vertices,
+ key->output_stride * num_vertices, 4,
&out_offset, &out_buffer,
(void**)&out_map);
if (!out_buffer)
for (i = 0; i < mgr->ve->count; i++) {
struct translate_key *k;
struct translate_element *te;
+ enum pipe_format output_format = mgr->ve->native_format[i];
unsigned bit, vb_index = mgr->ve->ve[i].vertex_buffer_index;
bit = 1 << vb_index;
}
}
assert(type < VB_NUM);
- assert(translate_is_output_format_supported(mgr->ve->native_format[i]));
+ if (mgr->ve->ve[i].src_format != output_format)
+ assert(translate_is_output_format_supported(output_format));
/*printf("velem=%i type=%i\n", i, type);*/
/* Add the vertex element. */
te->input_buffer = vb_index;
te->input_format = mgr->ve->ve[i].src_format;
te->input_offset = mgr->ve->ve[i].src_offset;
- te->output_format = mgr->ve->native_format[i];
+ te->output_format = output_format;
te->output_offset = k->output_stride;
k->output_stride += mgr->ve->native_format_size[i];
mgr->fallback_velems[i].vertex_buffer_index = mgr->fallback_vbs[type];
/* elem_index[type][i] can only be set for one type. */
- assert(type > VB_INSTANCE || elem_index[type+1][i] == ~0);
- assert(type > VB_VERTEX || elem_index[type+2][i] == ~0);
+ assert(type > VB_INSTANCE || elem_index[type+1][i] == ~0u);
+ assert(type > VB_VERTEX || elem_index[type+2][i] == ~0u);
break;
}
}
/* Unreference the now-unused VBOs. */
for (i = 0; i < VB_NUM; i++) {
unsigned vb = mgr->fallback_vbs[i];
- if (vb != ~0) {
+ if (vb != ~0u) {
pipe_resource_reference(&mgr->real_vertex_buffer[vb].buffer, NULL);
mgr->fallback_vbs[i] = ~0;
real_vb = &mgr->real_vertex_buffer[i];
ptr = mgr->vertex_buffer[i].user_buffer;
- u_upload_data(mgr->uploader, start, end - start, ptr + start,
+ u_upload_data(mgr->uploader, start, end - start, 4, ptr + start,
&real_vb->buffer_offset, &real_vb->buffer);
if (!real_vb->buffer)
return PIPE_ERROR_OUT_OF_MEMORY;
if (u_vbuf_need_minmax_index(mgr)) {
int max_index;
- if (new_info.max_index != ~0) {
+ if (new_info.max_index != ~0u) {
min_index = new_info.min_index;
max_index = new_info.max_index;
} else {