mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-25 14:30:22 +01:00
nvc0/ir: clamp the UBO index for compute on Kepler
We already check that the address is not "too far", but we should also clamp the UBO index in order to avoid looking at the wrong place in the driver cb. This is a pretty rare situation though. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: "12.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
6e1b12c788
commit
7f257abc1b
1 changed files with 9 additions and 1 deletions
|
|
@ -2183,7 +2183,15 @@ NVC0LoweringPass::handleLDST(Instruction *i)
|
|||
int8_t fileIndex = i->getSrc(0)->reg.fileIndex - 1;
|
||||
Value *ind = i->getIndirect(0, 1);
|
||||
|
||||
// TODO: clamp the offset to the maximum number of const buf.
|
||||
if (ind) {
|
||||
// Clamp the UBO index when an indirect access is used to avoid
|
||||
// loading information from the wrong place in the driver cb.
|
||||
ind = bld.mkOp2v(OP_MIN, TYPE_U32, ind,
|
||||
bld.mkOp2v(OP_ADD, TYPE_U32, bld.getSSA(),
|
||||
ind, bld.loadImm(NULL, fileIndex)),
|
||||
bld.loadImm(NULL, 12));
|
||||
}
|
||||
|
||||
if (i->src(0).isIndirect(1)) {
|
||||
Value *offset = bld.loadImm(NULL, i->getSrc(0)->reg.data.offset + typeSizeof(i->sType));
|
||||
Value *ptr = loadUboInfo64(ind, fileIndex * 16);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue