[Mesa-dev] [PATCH] i965: Fix hangs with FP KIL instructions pre-gen6.

Ian Romanick idr at freedesktop.org
Tue Nov 20 14:40:28 PST 2012


On 11/20/2012 12:46 PM, Eric Anholt wrote:
> We can't support IF statements in 16-wide on these.  To get back to 16-wide
> for these shaders, we need to support predicate on discard instructions in the
> backend IR, which is something we've sort of got on the list to do anyway.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55828

Does this bug exist in 9.0?

> ---
>   src/mesa/drivers/dri/i965/brw_fs_fp.cpp |    2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
> index c0a8810..636199e 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
> @@ -260,6 +260,8 @@ fs_visitor::emit_fragment_program_code()
>                                    regoffset(src[0], i), 0.0f);
>               inst->conditional_mod = BRW_CONDITIONAL_L;
>
> +            if (intel->gen < 6 && c->dispatch_width == 16)
> +               fail("Can't support (non-uniform) control flow on 16-wide");
>               inst = emit(BRW_OPCODE_IF);
>               inst->predicate = BRW_PREDICATE_NORMAL;
>               emit(FS_OPCODE_DISCARD);
>



More information about the mesa-dev mailing list