diff options
author | Maciej Cencora <m.cencora@gmail.com> | 2010-03-21 12:10:06 +0100 |
---|---|---|
committer | Maciej Cencora <m.cencora@gmail.com> | 2010-03-24 20:08:00 +0100 |
commit | 7a77effb0b7eeefd5eb350aa9a487e10f62eb7ed (patch) | |
tree | d99c862eece87f1a428d7b2d3e531ff38dfcefa3 /src/mesa/drivers/dri/r300/r300_vertprog.c | |
parent | bed7d88708eba69118fe3805f95b104194872f3a (diff) |
r300: fix vertex programs with big number of params (>255) under KMS
UMS will probably require some kernel work
Diffstat (limited to 'src/mesa/drivers/dri/r300/r300_vertprog.c')
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_vertprog.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index e77cd611f7..53fe948ab9 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -392,7 +392,11 @@ void r300SetupVertexProgram(r300ContextPtr rmesa) R300_STATECHANGE(rmesa, vap_cntl); R300_STATECHANGE(rmesa, vpp); param_count = r300VertexProgUpdateParams(ctx, prog, (float *)&rmesa->hw.vpp.cmd[R300_VPP_PARAM_0]); - bump_vpu_count(rmesa->hw.vpp.cmd, param_count); + if (!rmesa->radeon.radeonScreen->kernel_mm && param_count > 255 * 4) { + WARN_ONCE("Too many VP params, expect rendering errors\n"); + } + /* Prevent the overflow (vpu.count is u8) */ + bump_vpu_count(rmesa->hw.vpp.cmd, MIN2(255 * 4, param_count)); param_count /= 4; r300EmitVertexProgram(rmesa, R300_PVS_CODE_START, &(prog->code)); |