[Mesa-stable] [PATCH] draw: (trivial) fix clamping of viewport index
Ilia Mirkin
imirkin at alum.mit.edu
Mon Jun 23 15:26:53 PDT 2014
On Mon, Jun 23, 2014 at 4:13 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Mon, Jun 23, 2014 at 4:08 PM, <sroland at vmware.com> wrote:
>> From: Roland Scheidegger <sroland at vmware.com>
>>
>> The old logic would let all negative values go through unclamped, with
>> potentially disastrous results (probably trying to fetch viewport values
>> from random memory locations). GL has undefined rendering for vp indices
>> outside valid range but that's a bit too undefined...
>> (The logic is now the same as in llvmpipe.)
>>
>> CC: "10.1 10.2" <mesa-stable at lists.freedesktop.org>
>
> Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
>
> I haven't tested whether this fixes my issues (don't have the right
> patches/setup on this comp) but this seems obviously correct.
FTR, just tested it out, and it fixes the viewport case with
ARB_fragment_layer_viewport. So you can add my Tested-by as well if
you want.
>
>> ---
>> src/gallium/auxiliary/draw/draw_private.h | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h
>> index 783c3ef..d8dc2ab 100644
>> --- a/src/gallium/auxiliary/draw/draw_private.h
>> +++ b/src/gallium/auxiliary/draw/draw_private.h
>> @@ -493,7 +493,7 @@ draw_stats_clipper_primitives(struct draw_context *draw,
>> static INLINE unsigned
>> draw_clamp_viewport_idx(int idx)
>> {
>> - return ((PIPE_MAX_VIEWPORTS > idx || idx < 0) ? idx : 0);
>> + return ((PIPE_MAX_VIEWPORTS > idx && idx >= 0) ? idx : 0);
>> }
>>
>> /**
>> --
>> 1.9.1
More information about the mesa-stable
mailing list