[Mesa-stable] [PATCH] radv: Translate logic ops.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Mon May 14 07:07:10 UTC 2018


On Mon, May 14, 2018 at 5:09 AM, Nicholas Miell <nmiell at gmail.com> wrote:
> On 05/13/2018 06:14 PM, Bas Nieuwenhuizen wrote:
>>
>> -#define     V_028808_X_0X00                                         0x00
>> -#define     V_028808_X_0X05                                         0x05
>> -#define     V_028808_X_0X0A                                         0x0A
>> -#define     V_028808_X_0X0F                                         0x0F
>> -#define     V_028808_X_0X11                                         0x11
>> -#define     V_028808_X_0X22                                         0x22
>> -#define     V_028808_X_0X33                                         0x33
>> -#define     V_028808_X_0X44                                         0x44
>> -#define     V_028808_X_0X50                                         0x50
>> -#define     V_028808_X_0X55                                         0x55
>> -#define     V_028808_X_0X5A                                         0x5A
>> -#define     V_028808_X_0X5F                                         0x5F
>> -#define     V_028808_X_0X66                                         0x66
>> -#define     V_028808_X_0X77                                         0x77
>> -#define     V_028808_X_0X88                                         0x88
>> -#define     V_028808_X_0X99                                         0x99
>> -#define     V_028808_X_0XA0                                         0xA0
>> -#define     V_028808_X_0XA5                                         0xA5
>> -#define     V_028808_X_0XAA                                         0xAA
>> -#define     V_028808_X_0XAF                                         0xAF
>> -#define     V_028808_X_0XBB                                         0xBB
>> -#define     V_028808_X_0XCC                                         0xCC
>> -#define     V_028808_X_0XDD                                         0xDD
>> -#define     V_028808_X_0XEE                                         0xEE
>> -#define     V_028808_X_0XF0                                         0xF0
>> -#define     V_028808_X_0XF5                                         0xF5
>> -#define     V_028808_X_0XFA                                         0xFA
>> -#define     V_028808_X_0XFF                                         0xFF
>> +#define     V_028808_ROP3_CLEAR                                     0x00
>> +#define     V_028808_ROP3_NOR                                       0x11
>> +#define     V_028808_ROP3_AND_INVERTED                              0x22
>> +#define     V_028808_ROP3_COPY_INVERTED                             0x33
>> +#define     V_028808_ROP3_AND_REVERSE                               0x44
>> +#define     V_028808_ROP3_INVERT                                    0x55
>> +#define     V_028808_ROP3_XOR                                       0x66
>> +#define     V_028808_ROP3_NAND                                      0x77
>> +#define     V_028808_ROP3_AND                                       0x88
>> +#define     V_028808_ROP3_EQUIVALENT                                0x99
>> +#define     V_028808_ROP3_NO_OP                                     0xaa
>> +#define     V_028808_ROP3_OR_INVERTED                               0xbb
>> +#define     V_028808_ROP3_COPY                                      0xcc
>> +#define     V_028808_ROP3_OR_REVERSE                                0xdd
>> +#define     V_028808_ROP3_OR                                        0xee
>> +#define     V_028808_ROP3_SET                                       0xff
>
>
> This change removes names for some of the ternary raster operations
> supported by the hardware and also invents entirely new names for already
> named raster operations.
>
> Also I think this header is generated?

It is not (or maybe it was for the initial commit, but we've certainly
been hand editing it after).

>
> If it isn't, perhaps the constants should be:
>
> #define     V_028808_ROP3_0_BLACKNESS                               0x00
> #define     V_028808_ROP3_DPon                                      0x05
> #define     V_028808_ROP3_DPna                                      0x0A
> #define     V_028808_ROP3_Pn                                        0x0F
> #define     V_028808_ROP3_DSon_NOTSRCERASE                          0x11
> #define     V_028808_ROP3_DSna                                      0x22
> #define     V_028808_ROP3_Sn_NOTSRCCOPY                             0x33
> #define     V_028808_ROP3_SDna_SRCERASE                             0x44
> #define     V_028808_ROP3_PDna                                      0x50
> #define     V_028808_ROP3_Dn_DSTINVERT                              0x55
> #define     V_028808_ROP3_DPx_PATINVERT                             0x5A
> #define     V_028808_ROP3_DPan                                      0x5F
> #define     V_028808_ROP3_DSx_SRCINVERT                             0x66
> #define     V_028808_ROP3_DSan                                      0x77
> #define     V_028808_ROP3_DSa_SRCAND                                0x88
> #define     V_028808_ROP3_DSxn                                      0x99
> #define     V_028808_ROP3_DPa                                       0xA0
> #define     V_028808_ROP3_PDxn                                      0xA5
> #define     V_028808_ROP3_D                                         0xAA
> #define     V_028808_ROP3_DPno                                      0xAF
> #define     V_028808_ROP3_DSno_MERGEPAINT                           0xBB
> #define     V_028808_ROP3_S_SRCCOPY                                 0xCC
> #define     V_028808_ROP3_SDno                                      0xDD
> #define     V_028808_ROP3_DSo_SRCPAINT                              0xEE
> #define     V_028808_ROP3_P_PATCOPY                                 0xF0
> #define     V_028808_ROP3_PDno                                      0xF5
> #define     V_028808_ROP3_DPo                                       0xFA
> #define     V_028808_ROP3_1_WHITENESS                               0xFF

I think the names I use are clearer in what they do. Yes I remove
some, but I feel that if someone needs those he is going  to need to
figure out what they do anyway at which time they can be added back
with more useful names. Furthermore, how radeonsi uses it it suggests
that these are effectively 2 4-bit fields, so hopefully the person who
does that can figure out the pattern.


More information about the mesa-stable mailing list