i915g: Mark program errors on setting up temps, constants, and immediates.
We would proceed through the compiler, and usually fail for some other reason (ALU ops, etc.), but best to be sure. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11617>
This commit is contained in:
parent
7ddebb0289
commit
ccc9418b27
|
@ -928,7 +928,7 @@ dEQP-GLES2.functional.uniform_api.random.21,Fail
|
|||
dEQP-GLES2.functional.uniform_api.random.24,Fail
|
||||
dEQP-GLES2.functional.uniform_api.random.54,Fail
|
||||
dEQP-GLES2.functional.uniform_api.random.71,Fail
|
||||
dEQP-GLES2.functional.uniform_api.random.74,Crash
|
||||
dEQP-GLES2.functional.uniform_api.random.74,Fail
|
||||
dEQP-GLES2.functional.uniform_api.random.80,Fail
|
||||
dEQP-GLES2.functional.uniform_api.random.81,Fail
|
||||
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_both,Fail
|
||||
|
|
|
@ -688,14 +688,14 @@ spec@glsl-1.10@execution@fs-frontfacing-ternary-0.0-neg-1.0,Fail
|
|||
spec@glsl-1.10@execution@fs-frontfacing-ternary-1-neg-1,Fail
|
||||
spec@glsl-1.10@execution@fs-frontfacing-ternary-1.0-neg-1.0,Fail
|
||||
spec@glsl-1.10@execution@fs-frontfacing-ternary-neg-1.0-1.0,Fail
|
||||
spec@glsl-1.10@execution@fs-loop-bounds-unrolled,Crash
|
||||
spec@glsl-1.10@execution@fs-loop-bounds-unrolled,Fail
|
||||
spec@glsl-1.10@execution@fs-notequal-of-expression,Fail
|
||||
spec@glsl-1.10@execution@fs-sign-times-abs,Fail
|
||||
spec@glsl-1.10@execution@fs-sign-times-neg,Fail
|
||||
spec@glsl-1.10@execution@fs-sign-times-neg-abs,Fail
|
||||
spec@glsl-1.10@execution@fs-sign-times-sign,Fail
|
||||
spec@glsl-1.10@execution@gl_lightsource_indirect,Fail
|
||||
spec@glsl-1.10@execution@glsl-1.10-built-in-matrix-state,Crash
|
||||
spec@glsl-1.10@execution@glsl-1.10-built-in-matrix-state,Fail
|
||||
spec@glsl-1.10@execution@glsl-1.10-built-in-uniform-state,Crash
|
||||
spec@glsl-1.10@execution@glsl-clamp-vertex-color,Fail
|
||||
spec@glsl-1.10@execution@glsl-fs-convolution-1,Fail
|
||||
|
|
|
@ -844,26 +844,31 @@ i915_translate_token(struct i915_fp_compile *p,
|
|||
|
||||
case TGSI_TOKEN_TYPE_DECLARATION:
|
||||
if (token->FullDeclaration.Declaration.File == TGSI_FILE_CONSTANT) {
|
||||
uint32_t i;
|
||||
for (i = token->FullDeclaration.Range.First;
|
||||
i <=
|
||||
MIN2(token->FullDeclaration.Range.Last, I915_MAX_CONSTANT - 1);
|
||||
i++) {
|
||||
ifs->constant_flags[i] = I915_CONSTFLAG_USER;
|
||||
ifs->num_constants = MAX2(ifs->num_constants, i + 1);
|
||||
}
|
||||
} else if (token->FullDeclaration.Declaration.File ==
|
||||
TGSI_FILE_TEMPORARY) {
|
||||
if (token->FullDeclaration.Range.Last >= I915_MAX_CONSTANT) {
|
||||
i915_program_error(p, "Exceeded %d max uniforms",
|
||||
I915_MAX_CONSTANT);
|
||||
} else {
|
||||
uint32_t i;
|
||||
for (i = token->FullDeclaration.Range.First;
|
||||
i <= token->FullDeclaration.Range.Last; i++) {
|
||||
ifs->constant_flags[i] = I915_CONSTFLAG_USER;
|
||||
ifs->num_constants = MAX2(ifs->num_constants, i + 1);
|
||||
}
|
||||
}
|
||||
} else if (token->FullDeclaration.Declaration.File ==
|
||||
TGSI_FILE_TEMPORARY) {
|
||||
if (token->FullDeclaration.Range.Last >= I915_MAX_TEMPORARY) {
|
||||
i915_program_error(p, "Exceeded %d max TGSI temps",
|
||||
I915_MAX_TEMPORARY);
|
||||
} else {
|
||||
uint32_t i;
|
||||
for (i = token->FullDeclaration.Range.First;
|
||||
i <= token->FullDeclaration.Range.Last; i++) {
|
||||
if (i >= I915_MAX_TEMPORARY)
|
||||
debug_printf("Too many temps (%d)\n", i);
|
||||
else
|
||||
/* XXX just use shader->info->file_mask[TGSI_FILE_TEMPORARY] */
|
||||
p->temp_flag |= (1 << i); /* mark temp as used */
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case TGSI_TOKEN_TYPE_IMMEDIATE: {
|
||||
|
@ -893,6 +898,10 @@ i915_translate_token(struct i915_fp_compile *p,
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (j == I915_MAX_CONSTANT) {
|
||||
i915_program_error(p, "Exceeded %d max uniforms and immediates.",
|
||||
I915_MAX_CONSTANT);
|
||||
}
|
||||
}
|
||||
|
||||
p->first_instruction = false;
|
||||
|
|
Loading…
Reference in New Issue