[Mesa-dev] [PATCH] r600: port si_conv_prim_to_gs_out from radeonsi

Ilia Mirkin imirkin at alum.mit.edu
Sat Aug 29 22:38:49 PDT 2015


On Sun, Aug 30, 2015 at 1:27 AM, Jonathan Gray <jsg at jsg.id.au> wrote:
> On Fri, Aug 28, 2015 at 10:47:44AM +1000, Dave Airlie wrote:
>> From: Dave Airlie <airlied at redhat.com>
>>
>> This code we broken by the tess merge, and I totally missed it
>> until now. I'm not sure this fixes anything but it stops the assert.
>>
>> Cc: "11.0" <mesa-stable at lists.freedesktop.org>
>> Signed-off-by: Dave Airlie <airlied at redhat.com>
>> ---
>>  src/gallium/drivers/r600/r600_pipe.h | 31 ++++++++++++++++---------------
>>  1 file changed, 16 insertions(+), 15 deletions(-)
>>
>> diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h
>> index 384ba80..3247aba 100644
>> --- a/src/gallium/drivers/r600/r600_pipe.h
>> +++ b/src/gallium/drivers/r600/r600_pipe.h
>> @@ -939,21 +939,22 @@ static inline bool r600_can_read_depth(struct r600_texture *rtex)
>>  static inline unsigned r600_conv_prim_to_gs_out(unsigned mode)
>>  {
>>       static const int prim_conv[] = {
>> -             V_028A6C_OUTPRIM_TYPE_POINTLIST,
>> -             V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> -             V_028A6C_OUTPRIM_TYPE_TRISTRIP
>> +             [PIPE_PRIM_POINTS]                      = V_028A6C_OUTPRIM_TYPE_POINTLIST,
>> +             [PIPE_PRIM_LINES]                       = V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> +             [PIPE_PRIM_LINE_LOOP]                   = V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> +             [PIPE_PRIM_LINE_STRIP]                  = V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> +             [PIPE_PRIM_TRIANGLES]                   = V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> +             [PIPE_PRIM_TRIANGLE_STRIP]              = V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> +             [PIPE_PRIM_TRIANGLE_FAN]                = V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> +             [PIPE_PRIM_QUADS]                       = V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> +             [PIPE_PRIM_QUAD_STRIP]                  = V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> +             [PIPE_PRIM_POLYGON]                     = V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> +             [PIPE_PRIM_LINES_ADJACENCY]             = V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> +             [PIPE_PRIM_LINE_STRIP_ADJACENCY]        = V_028A6C_OUTPRIM_TYPE_LINESTRIP,
>> +             [PIPE_PRIM_TRIANGLES_ADJACENCY]         = V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> +             [PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY]    = V_028A6C_OUTPRIM_TYPE_TRISTRIP,
>> +             [PIPE_PRIM_PATCHES]                     = V_028A6C_OUTPRIM_TYPE_POINTLIST,
>> +             [R600_PRIM_RECTANGLE_LIST]              = V_028A6C_OUTPRIM_TYPE_TRISTRIP
>>       };
>>       assert(mode < Elements(prim_conv));
>
> This seems to have broken the build on OpenBSD with gcc 4.2.1:
>
> In file included from sb/sb_bc_parser.cpp:35:
> ./r600_pipe.h: In function 'unsigned int r600_conv_prim_to_gs_out(unsigned int)':
> ./r600_pipe.h:942: error: expected primary-expression before '[' token
> ./r600_pipe.h:943: error: expected primary-expression before '[' token
> ./r600_pipe.h:944: error: expected primary-expression before '[' token
> ./r600_pipe.h:945: error: expected primary-expression before '[' token
> ./r600_pipe.h:946: error: expected primary-expression before '[' token
> ./r600_pipe.h:947: error: expected primary-expression before '[' token
> ./r600_pipe.h:948: error: expected primary-expression before '[' token
> ./r600_pipe.h:949: error: expected primary-expression before '[' token
> ./r600_pipe.h:950: error: expected primary-expression before '[' token
> ./r600_pipe.h:951: error: expected primary-expression before '[' token
> ./r600_pipe.h:952: error: expected primary-expression before '[' token
> ./r600_pipe.h:953: error: expected primary-expression before '[' token
> ./r600_pipe.h:954: error: expected primary-expression before '[' token
> ./r600_pipe.h:955: error: expected primary-expression before '[' token
> ./r600_pipe.h:956: error: expected primary-expression before '[' token
> ./r600_pipe.h:957: error: expected primary-expression before '[' token
> Makefile:801: recipe for target 'sb/sb_bc_parser.lo' failed

We definitely do this sort of thing elsewhere... does it work if you do

static const int prim_conv[PIPE_PRIM_MAX+1] = { ... }


More information about the mesa-dev mailing list