[Mesa-dev] [PATCH 1/2] mesa/st: fix color outputs in presence of sample mask output
Marek Olšák
maraeo at gmail.com
Fri May 23 11:13:53 PDT 2014
Thank you, it fixes the hangs!!
Do the sample mask tests pass on nouveau now? They fail on radeonsi.
Marek
On Fri, May 23, 2014 at 5:39 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> Commit c5d822dad90 added support for sample mask incorrectly. It became
> treated as a color output, and messed up the color output indices.
> Revert the hunk that did that, and add explicit support just like for
> depth/stencil writes.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: "10.2" <mesa-stable at lists.freedesktop.org>
> ---
>
> Marek, perhaps this is what was causing your sample mask hangs? Not sure if
> this would be enough.
>
> src/mesa/state_tracker/st_program.c | 30 +++++++++++++++++-------------
> 1 file changed, 17 insertions(+), 13 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
> index f9887a2..26eb978 100644
> --- a/src/mesa/state_tracker/st_program.c
> +++ b/src/mesa/state_tracker/st_program.c
> @@ -679,32 +679,36 @@ st_translate_fragment_program(struct st_context *st,
> outputsWritten &= ~(1 << FRAG_RESULT_STENCIL);
> }
>
> + if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_SAMPLE_MASK)) {
> + fs_output_semantic_name[fs_num_outputs] = TGSI_SEMANTIC_SAMPLEMASK;
> + fs_output_semantic_index[fs_num_outputs] = 0;
> + outputMapping[FRAG_RESULT_SAMPLE_MASK] = fs_num_outputs;
> + fs_num_outputs++;
> + outputsWritten &= ~(1 << FRAG_RESULT_SAMPLE_MASK);
> + }
> +
> /* handle remaining outputs (color) */
> for (attr = 0; attr < FRAG_RESULT_MAX; attr++) {
> if (outputsWritten & BITFIELD64_BIT(attr)) {
> - int semantic = TGSI_SEMANTIC_COLOR;
> switch (attr) {
> case FRAG_RESULT_DEPTH:
> case FRAG_RESULT_STENCIL:
> + case FRAG_RESULT_SAMPLE_MASK:
> /* handled above */
> assert(0);
> break;
> case FRAG_RESULT_COLOR:
> - write_all = GL_TRUE;
> - break;
> - case FRAG_RESULT_SAMPLE_MASK:
> - semantic = TGSI_SEMANTIC_SAMPLEMASK;
> + write_all = GL_TRUE; /* fallthrough */
> + default:
> + assert(attr == FRAG_RESULT_COLOR ||
> + (FRAG_RESULT_DATA0 <= attr && attr < FRAG_RESULT_MAX));
> + fs_output_semantic_name[fs_num_outputs] = TGSI_SEMANTIC_COLOR;
> + fs_output_semantic_index[fs_num_outputs] = numColors;
> + outputMapping[attr] = fs_num_outputs;
> + numColors++;
> break;
> }
>
> - assert(attr == FRAG_RESULT_COLOR ||
> - attr == FRAG_RESULT_SAMPLE_MASK ||
> - (FRAG_RESULT_DATA0 <= attr && attr < FRAG_RESULT_MAX));
> - fs_output_semantic_name[fs_num_outputs] = semantic;
> - fs_output_semantic_index[fs_num_outputs] = numColors;
> - outputMapping[attr] = fs_num_outputs;
> - numColors++;
> -
> fs_num_outputs++;
> }
> }
> --
> 1.8.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list