mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 04:20:08 +01:00
nvc0: add support for setting patch vertices at draw time
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
b9ea557fd0
commit
d1ffdebce6
4 changed files with 8 additions and 3 deletions
|
|
@ -1021,6 +1021,7 @@ nvc0_screen_create(struct nouveau_device *dev)
|
|||
PUSH_DATA (push, 0x20);
|
||||
BEGIN_NVC0(push, NVC0_3D(SP_SELECT(0)), 1);
|
||||
PUSH_DATA (push, 0x00);
|
||||
screen->save_state.patch_vertices = 3;
|
||||
|
||||
BEGIN_NVC0(push, NVC0_3D(POINT_COORD_REPLACE), 1);
|
||||
PUSH_DATA (push, 0);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ struct nvc0_graph_state {
|
|||
uint32_t constant_elts;
|
||||
int32_t index_bias;
|
||||
uint16_t scissor;
|
||||
uint8_t patch_vertices;
|
||||
uint8_t vbo_mode; /* 0 = normal, 1 = translate, 3 = translate, forced */
|
||||
uint8_t num_vtxbufs;
|
||||
uint8_t num_vtxelts;
|
||||
|
|
|
|||
|
|
@ -147,9 +147,6 @@ nvc0_tctlprog_validate(struct nvc0_context *nvc0)
|
|||
PUSH_DATA (push, tp->code_base);
|
||||
BEGIN_NVC0(push, NVC0_3D(SP_GPR_ALLOC(2)), 1);
|
||||
PUSH_DATA (push, tp->num_gprs);
|
||||
|
||||
if (tp->tp.input_patch_size <= 32)
|
||||
IMMED_NVC0(push, NVC0_3D(PATCH_VERTICES), tp->tp.input_patch_size);
|
||||
} else {
|
||||
BEGIN_NVC0(push, NVC0_3D(SP_SELECT(2)), 1);
|
||||
PUSH_DATA (push, 0x20);
|
||||
|
|
|
|||
|
|
@ -888,6 +888,12 @@ nvc0_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
|
|||
}
|
||||
}
|
||||
|
||||
if (info->mode == PIPE_PRIM_PATCHES &&
|
||||
nvc0->state.patch_vertices != info->vertices_per_patch) {
|
||||
nvc0->state.patch_vertices = info->vertices_per_patch;
|
||||
IMMED_NVC0(push, NVC0_3D(PATCH_VERTICES), nvc0->state.patch_vertices);
|
||||
}
|
||||
|
||||
/* 8 as minimum to avoid immediate double validation of new buffers */
|
||||
nvc0_state_validate(nvc0, ~0, 8);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue