swr: validate backend state numAttributes
General protection and prevents us from smashing the stack
on the first clear state validation (a7b8d50bcb
). Fixes crash
using icc.
Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
8378c576ab
commit
a7ce0490e4
|
@ -1651,6 +1651,8 @@ swr_update_derived(struct pipe_context *pipe,
|
||||||
backendState.numAttributes =
|
backendState.numAttributes =
|
||||||
((ctx->gs ? ctx->gs->info.base.num_outputs : ctx->vs->info.base.num_outputs) - 1) +
|
((ctx->gs ? ctx->gs->info.base.num_outputs : ctx->vs->info.base.num_outputs) - 1) +
|
||||||
(ctx->rasterizer->sprite_coord_enable ? 1 : 0);
|
(ctx->rasterizer->sprite_coord_enable ? 1 : 0);
|
||||||
|
backendState.numAttributes = std::min((size_t)backendState.numAttributes,
|
||||||
|
sizeof(backendState.numComponents));
|
||||||
for (unsigned i = 0; i < backendState.numAttributes; i++)
|
for (unsigned i = 0; i < backendState.numAttributes; i++)
|
||||||
backendState.numComponents[i] = 4;
|
backendState.numComponents[i] = 4;
|
||||||
backendState.constantInterpolationMask = ctx->fs->constantMask |
|
backendState.constantInterpolationMask = ctx->fs->constantMask |
|
||||||
|
|
Loading…
Reference in New Issue