[Mesa-dev] [PATCH 5/7] ir_to_mesa: Emit warnings instead of errors for IR that can't be lowered
kenneth at whitecape.org
Mon Aug 1 23:25:22 PDT 2011
On 08/01/2011 10:20 AM, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
> Rely on the driver to do the right thing. This probably means falling
> back to software. Page 88 of the OpenGL 2.1 spec specifically says:
> "A shader should not fail to compile, and a program object should
> not fail to link due to lack of instruction space or lack of
> temporary variables. Implementations should ensure that all valid
> shaders and program objects may be successfully compiled, linked
> and executed."
> There is no provision for saying "No" to a valid shader that is
> difficult for the hardware to handle, so stop doing that.
> On i915 this causes a large number of piglit tests to change from FAIL
> to WARN. The warning is because the driver still emits messages to
> stderr like "i915_program_error: Unsupported opcode: BGNLOOP".
> It also fixes ES2 conformance CorrectFull_frag and CorrectParse1_frag
> on i915 (and probably other hardware that can't handle loops).
> src/mesa/program/ir_to_mesa.cpp | 28 ++++++++++++++++++++++++----
> 1 files changed, 24 insertions(+), 4 deletions(-)
Presumably drivers are set up to handle cases where these opcodes slip
through? I'd hate for them to crash because we started letting things
through. Though, admittedly, that's a bug in the driver, so if the
compiler were to stop hiding it, people could go fix that. :)
Plus, it looks like i915 already handles them, i965 supports everything
so it doesn't matter, and Gallium's dropping ir_to_mesa soon. So, meh.
:) Fears unfounded.
Looks like the right thing to do.
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
More information about the mesa-dev