[Mesa-dev] [PATCH] i915g: fix incorrect gl_FragCoord value

Emil Velikov emil.l.velikov at gmail.com
Thu Sep 22 15:40:04 UTC 2016


Hi Nicholas,

On 26 August 2016 at 00:31, Nicholas Bishop <nbishop at neverware.com> wrote:
> From: Nicholas Bishop <nicholasbishop at gmail.com>
>
> On Intel Pineview M hardware, the i915 gallium driver doesn't output
> the correct gl_FragCoord. It seems to always have an X coord of 0.0
> and a Y coord of the window's height in pixels, e.g. 600.0f or such.
>
> I believe this is a regression caused in part by this commit:
> afa035031ff9e0c07a2297d864e46c76f7bfff58
>
> The old behavior used the output at index zero, while the new behavior
> uses actual zeroes. In the case of gl_FragCoord the output at index
> zero happened to be the correct one, so the behavior appeared correct
> although the code already had a bug.
>
> Fixed by checking for I915_SEMANTIC_POS when setting up texCoords. If
> the generic_mapping is I915_SEMANTIC_POS, look for the
> TGSI_SEMANTIC_POSITION instead of a TGSI_SEMANTIC_GENERIC output.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=97477
> ---
>  src/gallium/drivers/i915/i915_state_derived.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/i915/i915_state_derived.c b/src/gallium/drivers/i915/i915_state_derived.c
> index 177b854..dbfbc84 100644
> --- a/src/gallium/drivers/i915/i915_state_derived.c
> +++ b/src/gallium/drivers/i915/i915_state_derived.c
> @@ -145,7 +145,12 @@ static void calculate_vertex_layout(struct i915_context *i915)
>        uint hwtc;
>        if (texCoords[i]) {
>           hwtc = TEXCOORDFMT_4D;
> -         src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_GENERIC, fs->generic_mapping[i]);
> +         if (fs->generic_mapping[i] == I915_SEMANTIC_POS) {
> +            src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_POSITION, 0);
> +         }
> +         else {
> +            src = draw_find_shader_output(i915->draw, TGSI_SEMANTIC_GENERIC, fs->generic_mapping[i]);
> +         }

Personally I'm unfamiliar with the i915g driver, so I've Cc'd Roland
(the author of the commit 'breaking' this) and Stéphane (the author of
this driver).

Gents, any input on the above ?

That said, please drop the unneeded brackets and add the following
line in the commit message for v2.
Cc: mesa-stable at lists.freedesktop.org

Thanks,
Emil


More information about the mesa-dev mailing list