diff options
author | Ilia Mirkin <[email protected]> | 2016-05-29 09:26:11 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2016-05-29 09:34:03 -0400 |
commit | 160063b110d50d528217492308bbe353af2186e8 (patch) | |
tree | 09af5a01e52040c7eb263de1ec629b4f947abf3c /src/gallium/drivers | |
parent | f2e7268a550e84e1f3c036effdeca3f8f9237044 (diff) |
nv50,nvc0: fix the max_vertices=0 case
This is apparently legal. Drop any emit/restarts, and pass a 1 to the
hardware.
Signed-off-by: Ilia Mirkin <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 2 | ||||
-rw-r--r-- | src/gallium/drivers/nouveau/nv50/nv50_program.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/nouveau/nvc0/nvc0_program.c | 2 |
3 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp index 345008e23a0..1ebcd25e96a 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp @@ -3290,6 +3290,8 @@ Converter::handleInstruction(const struct tgsi_full_instruction *insn) unsigned int stream = tgsi.getSrc(0).getValueU32(0, info); if (stream && op == OP_RESTART) break; + if (info->prop.gp.maxVertices == 0) + break; src0 = mkImm(stream); mkOp1(op, TYPE_U32, NULL, src0)->fixed = 1; break; diff --git a/src/gallium/drivers/nouveau/nv50/nv50_program.c b/src/gallium/drivers/nouveau/nv50/nv50_program.c index 648cb7314bf..c764f5c5728 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_program.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_program.c @@ -407,7 +407,7 @@ nv50_program_translate(struct nv50_program *prog, uint16_t chipset, prog->gp.prim_type = NV50_3D_GP_OUTPUT_PRIMITIVE_TYPE_POINTS; break; } - prog->gp.vert_count = info->prop.gp.maxVertices; + prog->gp.vert_count = CLAMP(info->prop.gp.maxVertices, 1, 1024); } if (prog->type == PIPE_SHADER_COMPUTE) { diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c index d73e0c47eb7..aba95114eb7 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c @@ -393,7 +393,7 @@ nvc0_gp_gen_header(struct nvc0_program *gp, struct nv50_ir_prog_info *info) break; } - gp->hdr[4] = MIN2(info->prop.gp.maxVertices, 1024); + gp->hdr[4] = CLAMP(info->prop.gp.maxVertices, 1, 1024); return nvc0_vtgp_gen_header(gp, info); } |