summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r600/evergreen_vertprog.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-09-13 13:36:19 -0400
committerAlex Deucher <alexdeucher@gmail.com>2010-09-13 13:41:46 -0400
commit9532eea509321d8f88a4e60191a1e659ada40dfe (patch)
treec6714a10ecb1cc36676bbded2c32a665ec385eb7 /src/mesa/drivers/dri/r600/evergreen_vertprog.c
parentc121608b6e409fe6c22cb8b05c52cc94d2dfb0af (diff)
r600c: const buffer sizes must be a multiple of 16 consts
This applies to r6xx/r7xx/evergreen
Diffstat (limited to 'src/mesa/drivers/dri/r600/evergreen_vertprog.c')
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_vertprog.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/r600/evergreen_vertprog.c b/src/mesa/drivers/dri/r600/evergreen_vertprog.c
index 2bb055c5aa..6840fa3c86 100644
--- a/src/mesa/drivers/dri/r600/evergreen_vertprog.c
+++ b/src/mesa/drivers/dri/r600/evergreen_vertprog.c
@@ -655,6 +655,7 @@ GLboolean evergreenSetupVPconstants(GLcontext * ctx)
struct gl_program_parameter_list *paramList;
unsigned int unNumParamData;
unsigned int ui;
+ int alloc_size;
/* sent out shader constants. */
paramList = vp->mesa_program->Base.Parameters;
@@ -677,6 +678,9 @@ GLboolean evergreenSetupVPconstants(GLcontext * ctx)
unNumParamData = paramList->NumParameters;
+ /* alloc multiple of 16 constants */
+ alloc_size = ((unNumParamData * 4 * 4) + 255) & ~255;
+
for(ui=0; ui<unNumParamData; ui++) {
if(paramList->Parameters[ui].Type == PROGRAM_UNIFORM)
{
@@ -697,7 +701,7 @@ GLboolean evergreenSetupVPconstants(GLcontext * ctx)
radeonAllocDmaRegion(&context->radeon,
&context->vp_Constbo,
&context->vp_bo_offset,
- unNumParamData * 4 * 4,
+ alloc_size,
256);
r600EmitShaderConsts(ctx,
context->vp_Constbo,