projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
llvmpipe: Texture cache in 4 ubytes instead of 4 floats.
[mesa.git]
/
src
/
gallium
/
auxiliary
/
draw
/
draw_pt_fetch.c
diff --git
a/src/gallium/auxiliary/draw/draw_pt_fetch.c
b/src/gallium/auxiliary/draw/draw_pt_fetch.c
index 6377f896fb058232697b1a049c6f81757ff47612..65c3a34c3474a664fbac65042117800174eda9db 100644
(file)
--- a/
src/gallium/auxiliary/draw/draw_pt_fetch.c
+++ b/
src/gallium/auxiliary/draw/draw_pt_fetch.c
@@
-26,6
+26,7
@@
**************************************************************************/
#include "util/u_memory.h"
**************************************************************************/
#include "util/u_memory.h"
+#include "util/u_math.h"
#include "draw/draw_context.h"
#include "draw/draw_private.h"
#include "draw/draw_vbuf.h"
#include "draw/draw_context.h"
#include "draw/draw_private.h"
#include "draw/draw_vbuf.h"
@@
-56,9
+57,11
@@
struct pt_fetch {
*
*/
void draw_pt_fetch_prepare( struct pt_fetch *fetch,
*
*/
void draw_pt_fetch_prepare( struct pt_fetch *fetch,
+ unsigned vs_input_count,
unsigned vertex_size )
{
struct draw_context *draw = fetch->draw;
unsigned vertex_size )
{
struct draw_context *draw = fetch->draw;
+ unsigned nr_inputs;
unsigned i, nr = 0;
unsigned dst_offset = 0;
struct translate_key key;
unsigned i, nr = 0;
unsigned dst_offset = 0;
struct translate_key key;
@@
-89,8
+92,11
@@
void draw_pt_fetch_prepare( struct pt_fetch *fetch,
dst_offset += 4 * sizeof(float);
}
dst_offset += 4 * sizeof(float);
}
+ assert( draw->pt.nr_vertex_elements >= vs_input_count );
- for (i = 0; i < draw->pt.nr_vertex_elements; i++) {
+ nr_inputs = MIN2( vs_input_count, draw->pt.nr_vertex_elements );
+
+ for (i = 0; i < nr_inputs; i++) {
key.element[nr].input_format = draw->pt.vertex_element[i].src_format;
key.element[nr].input_buffer = draw->pt.vertex_element[i].vertex_buffer_index;
key.element[nr].input_offset = draw->pt.vertex_element[i].src_offset;
key.element[nr].input_format = draw->pt.vertex_element[i].src_format;
key.element[nr].input_buffer = draw->pt.vertex_element[i].vertex_buffer_index;
key.element[nr].input_offset = draw->pt.vertex_element[i].src_offset;
@@
-114,7
+120,7
@@
void draw_pt_fetch_prepare( struct pt_fetch *fetch,
fetch->translate = translate_cache_find(fetch->cache, &key);
{
fetch->translate = translate_cache_find(fetch->cache, &key);
{
-
static struct vertex_header vh = { 0, 1, 0, 0xffff
};
+
static struct vertex_header vh = { 0, 1, 0, UNDEFINED_VERTEX_ID, { .0f, .0f, .0f, .0f }
};
fetch->translate->set_buffer(fetch->translate,
draw->pt.nr_vertex_buffers,
&vh,
fetch->translate->set_buffer(fetch->translate,
draw->pt.nr_vertex_buffers,
&vh,
@@
-144,7
+150,7
@@
void draw_pt_fetch_run( struct pt_fetch *fetch,
i,
((char *)draw->pt.user.vbuffer[i] +
draw->pt.vertex_buffer[i].buffer_offset),
i,
((char *)draw->pt.user.vbuffer[i] +
draw->pt.vertex_buffer[i].buffer_offset),
- draw->pt.vertex_buffer[i].
pitch
);
+ draw->pt.vertex_buffer[i].
stride
);
}
translate->run_elts( translate,
}
translate->run_elts( translate,
@@
-180,7
+186,7
@@
void draw_pt_fetch_run_linear( struct pt_fetch *fetch,
i,
((char *)draw->pt.user.vbuffer[i] +
draw->pt.vertex_buffer[i].buffer_offset),
i,
((char *)draw->pt.user.vbuffer[i] +
draw->pt.vertex_buffer[i].buffer_offset),
- draw->pt.vertex_buffer[i].
pitch
);
+ draw->pt.vertex_buffer[i].
stride
);
}
translate->run( translate,
}
translate->run( translate,