mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 11:28:05 +02:00
nvfx: Adapt for index bias interface change.
This commit is contained in:
parent
f6f7324bbf
commit
7c785c0d2c
3 changed files with 24 additions and 16 deletions
|
|
@ -175,9 +175,10 @@ extern void nvfx_clear(struct pipe_context *pipe, unsigned buffers,
|
|||
/* nvfx_draw.c */
|
||||
extern struct draw_stage *nvfx_draw_render_stage(struct nvfx_context *nvfx);
|
||||
extern void nvfx_draw_elements_swtnl(struct pipe_context *pipe,
|
||||
struct pipe_resource *idxbuf,
|
||||
unsigned ib_size, unsigned mode,
|
||||
unsigned start, unsigned count);
|
||||
struct pipe_resource *idxbuf,
|
||||
unsigned ib_size, int ib_bias,
|
||||
unsigned mode,
|
||||
unsigned start, unsigned count);
|
||||
extern void nvfx_vtxfmt_validate(struct nvfx_context *nvfx);
|
||||
|
||||
/* nvfx_fb.c */
|
||||
|
|
@ -237,10 +238,10 @@ extern void nvfx_vbo_relocate(struct nvfx_context *nvfx);
|
|||
extern void nvfx_draw_arrays(struct pipe_context *, unsigned mode,
|
||||
unsigned start, unsigned count);
|
||||
extern void nvfx_draw_elements(struct pipe_context *pipe,
|
||||
struct pipe_resource *indexBuffer,
|
||||
unsigned indexSize,
|
||||
unsigned mode, unsigned start,
|
||||
unsigned count);
|
||||
struct pipe_resource *indexBuffer,
|
||||
unsigned indexSize, int indexBias,
|
||||
unsigned mode, unsigned start,
|
||||
unsigned count);
|
||||
|
||||
/* nvfx_vertprog.c */
|
||||
extern boolean nvfx_vertprog_validate(struct nvfx_context *nvfx);
|
||||
|
|
|
|||
|
|
@ -232,7 +232,8 @@ nvfx_draw_render_stage(struct nvfx_context *nvfx)
|
|||
|
||||
void
|
||||
nvfx_draw_elements_swtnl(struct pipe_context *pipe,
|
||||
struct pipe_resource *idxbuf, unsigned idxbuf_size,
|
||||
struct pipe_resource *idxbuf,
|
||||
unsigned idxbuf_size, int idxbuf_bias,
|
||||
unsigned mode, unsigned start, unsigned count)
|
||||
{
|
||||
struct nvfx_context *nvfx = nvfx_context(pipe);
|
||||
|
|
@ -257,9 +258,9 @@ nvfx_draw_elements_swtnl(struct pipe_context *pipe,
|
|||
map = pipe_buffer_map(pipe, idxbuf,
|
||||
PIPE_TRANSFER_READ,
|
||||
&ib_transfer);
|
||||
draw_set_mapped_element_buffer(nvfx->draw, idxbuf_size, map);
|
||||
draw_set_mapped_element_buffer(nvfx->draw, idxbuf_size, idx_bufbias, map);
|
||||
} else {
|
||||
draw_set_mapped_element_buffer(nvfx->draw, 0, NULL);
|
||||
draw_set_mapped_element_buffer(nvfx->draw, 0, 0, NULL);
|
||||
}
|
||||
|
||||
if (nvfx->constbuf[PIPE_SHADER_VERTEX]) {
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ nvfx_draw_arrays(struct pipe_context *pipe,
|
|||
|
||||
nvfx_vbo_set_idxbuf(nvfx, NULL, 0);
|
||||
if (nvfx->screen->force_swtnl || !nvfx_state_validate(nvfx)) {
|
||||
nvfx_draw_elements_swtnl(pipe, NULL, 0,
|
||||
nvfx_draw_elements_swtnl(pipe, NULL, 0, 0,
|
||||
mode, start, count);
|
||||
return;
|
||||
}
|
||||
|
|
@ -372,7 +372,8 @@ nvfx_draw_elements_u32(struct nvfx_context *nvfx, void *ib,
|
|||
|
||||
static void
|
||||
nvfx_draw_elements_inline(struct pipe_context *pipe,
|
||||
struct pipe_resource *ib, unsigned ib_size,
|
||||
struct pipe_resource *ib,
|
||||
unsigned ib_size, int ib_bias,
|
||||
unsigned mode, unsigned start, unsigned count)
|
||||
{
|
||||
struct nvfx_context *nvfx = nvfx_context(pipe);
|
||||
|
|
@ -385,6 +386,8 @@ nvfx_draw_elements_inline(struct pipe_context *pipe,
|
|||
return;
|
||||
}
|
||||
|
||||
assert(ib_bias == 0);
|
||||
|
||||
switch (ib_size) {
|
||||
case 1:
|
||||
nvfx_draw_elements_u08(nvfx, map, mode, start, count);
|
||||
|
|
@ -460,7 +463,8 @@ nvfx_draw_elements_vbo(struct pipe_context *pipe,
|
|||
|
||||
void
|
||||
nvfx_draw_elements(struct pipe_context *pipe,
|
||||
struct pipe_resource *indexBuffer, unsigned indexSize,
|
||||
struct pipe_resource *indexBuffer,
|
||||
unsigned indexSize, int indexBias,
|
||||
unsigned mode, unsigned start, unsigned count)
|
||||
{
|
||||
struct nvfx_context *nvfx = nvfx_context(pipe);
|
||||
|
|
@ -468,15 +472,17 @@ nvfx_draw_elements(struct pipe_context *pipe,
|
|||
|
||||
idxbuf = nvfx_vbo_set_idxbuf(nvfx, indexBuffer, indexSize);
|
||||
if (nvfx->screen->force_swtnl || !nvfx_state_validate(nvfx)) {
|
||||
nvfx_draw_elements_swtnl(pipe, indexBuffer, indexSize,
|
||||
mode, start, count);
|
||||
nvfx_draw_elements_swtnl(pipe,
|
||||
indexBuffer, indexSize, indexBias,
|
||||
mode, start, count);
|
||||
return;
|
||||
}
|
||||
|
||||
if (idxbuf) {
|
||||
nvfx_draw_elements_vbo(pipe, mode, start, count);
|
||||
} else {
|
||||
nvfx_draw_elements_inline(pipe, indexBuffer, indexSize,
|
||||
nvfx_draw_elements_inline(pipe,
|
||||
indexBuffer, indexSize, indexBias,
|
||||
mode, start, count);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue