[Mesa-dev] [PATCH 5/7] ir_to_mesa: Emit warnings instead of errors for IR that can't be lowered

Kenneth Graunke 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 mailing list