9#ifndef GP_GAMMA_PIXEL_GEN_H
10#define GP_GAMMA_PIXEL_GEN_H
18#include <core/GP_Types.h>
28#define gp_gamma2lin_RGB101010_R(val, gamma) ({ \
29 gamma->tables[0]->u16[val]; \
37#define gp_lin2gamma_RGB101010_R(val, gamma) ({ \
38 gamma->tables[3]->u16[val]; \
43 return gamma->tables[0];
48 return gamma->tables[3];
57#define gp_gamma2lin_RGB101010_G(val, gamma) ({ \
58 gamma->tables[1]->u16[val]; \
66#define gp_lin2gamma_RGB101010_G(val, gamma) ({ \
67 gamma->tables[4]->u16[val]; \
72 return gamma->tables[1];
77 return gamma->tables[4];
86#define gp_gamma2lin_RGB101010_B(val, gamma) ({ \
87 gamma->tables[2]->u16[val]; \
95#define gp_lin2gamma_RGB101010_B(val, gamma) ({ \
96 gamma->tables[5]->u16[val]; \
101 return gamma->tables[2];
106 return gamma->tables[5];
116#define gp_gamma2lin_xRGB8888_R(val, gamma) ({ \
117 gamma->tables[0]->u16[val]; \
125#define gp_lin2gamma_xRGB8888_R(val, gamma) ({ \
126 gamma->tables[3]->u8[val]; \
131 return gamma->tables[0];
136 return gamma->tables[3];
145#define gp_gamma2lin_xRGB8888_G(val, gamma) ({ \
146 gamma->tables[1]->u16[val]; \
154#define gp_lin2gamma_xRGB8888_G(val, gamma) ({ \
155 gamma->tables[4]->u8[val]; \
160 return gamma->tables[1];
165 return gamma->tables[4];
174#define gp_gamma2lin_xRGB8888_B(val, gamma) ({ \
175 gamma->tables[2]->u16[val]; \
183#define gp_lin2gamma_xRGB8888_B(val, gamma) ({ \
184 gamma->tables[5]->u8[val]; \
189 return gamma->tables[2];
194 return gamma->tables[5];
204#define gp_gamma2lin_RGBA8888_R(val, gamma) ({ \
205 gamma->tables[0]->u16[val]; \
213#define gp_lin2gamma_RGBA8888_R(val, gamma) ({ \
214 gamma->tables[4]->u8[val]; \
219 return gamma->tables[0];
224 return gamma->tables[4];
233#define gp_gamma2lin_RGBA8888_G(val, gamma) ({ \
234 gamma->tables[1]->u16[val]; \
242#define gp_lin2gamma_RGBA8888_G(val, gamma) ({ \
243 gamma->tables[5]->u8[val]; \
248 return gamma->tables[1];
253 return gamma->tables[5];
262#define gp_gamma2lin_RGBA8888_B(val, gamma) ({ \
263 gamma->tables[2]->u16[val]; \
271#define gp_lin2gamma_RGBA8888_B(val, gamma) ({ \
272 gamma->tables[6]->u8[val]; \
277 return gamma->tables[2];
282 return gamma->tables[6];
291#define gp_gamma2lin_RGBA8888_A(val, gamma) ({ \
292 gamma->tables[3]->u16[val]; \
300#define gp_lin2gamma_RGBA8888_A(val, gamma) ({ \
301 gamma->tables[7]->u8[val]; \
306 return gamma->tables[3];
311 return gamma->tables[7];
321#define gp_gamma2lin_RGB888_R(val, gamma) ({ \
322 gamma->tables[0]->u16[val]; \
330#define gp_lin2gamma_RGB888_R(val, gamma) ({ \
331 gamma->tables[3]->u8[val]; \
336 return gamma->tables[0];
341 return gamma->tables[3];
350#define gp_gamma2lin_RGB888_G(val, gamma) ({ \
351 gamma->tables[1]->u16[val]; \
359#define gp_lin2gamma_RGB888_G(val, gamma) ({ \
360 gamma->tables[4]->u8[val]; \
365 return gamma->tables[1];
370 return gamma->tables[4];
379#define gp_gamma2lin_RGB888_B(val, gamma) ({ \
380 gamma->tables[2]->u16[val]; \
388#define gp_lin2gamma_RGB888_B(val, gamma) ({ \
389 gamma->tables[5]->u8[val]; \
394 return gamma->tables[2];
399 return gamma->tables[5];
409#define gp_gamma2lin_BGR888_B(val, gamma) ({ \
410 gamma->tables[0]->u16[val]; \
418#define gp_lin2gamma_BGR888_B(val, gamma) ({ \
419 gamma->tables[3]->u8[val]; \
424 return gamma->tables[0];
429 return gamma->tables[3];
438#define gp_gamma2lin_BGR888_G(val, gamma) ({ \
439 gamma->tables[1]->u16[val]; \
447#define gp_lin2gamma_BGR888_G(val, gamma) ({ \
448 gamma->tables[4]->u8[val]; \
453 return gamma->tables[1];
458 return gamma->tables[4];
467#define gp_gamma2lin_BGR888_R(val, gamma) ({ \
468 gamma->tables[2]->u16[val]; \
476#define gp_lin2gamma_BGR888_R(val, gamma) ({ \
477 gamma->tables[5]->u8[val]; \
482 return gamma->tables[2];
487 return gamma->tables[5];
497#define gp_gamma2lin_RGB555_R(val, gamma) ({ \
498 gamma->tables[0]->u8[val]; \
506#define gp_lin2gamma_RGB555_R(val, gamma) ({ \
507 gamma->tables[3]->u8[val]; \
512 return gamma->tables[0];
517 return gamma->tables[3];
526#define gp_gamma2lin_RGB555_G(val, gamma) ({ \
527 gamma->tables[1]->u8[val]; \
535#define gp_lin2gamma_RGB555_G(val, gamma) ({ \
536 gamma->tables[4]->u8[val]; \
541 return gamma->tables[1];
546 return gamma->tables[4];
555#define gp_gamma2lin_RGB555_B(val, gamma) ({ \
556 gamma->tables[2]->u8[val]; \
564#define gp_lin2gamma_RGB555_B(val, gamma) ({ \
565 gamma->tables[5]->u8[val]; \
570 return gamma->tables[2];
575 return gamma->tables[5];
585#define gp_gamma2lin_RGB565_R(val, gamma) ({ \
586 gamma->tables[0]->u8[val]; \
594#define gp_lin2gamma_RGB565_R(val, gamma) ({ \
595 gamma->tables[3]->u8[val]; \
600 return gamma->tables[0];
605 return gamma->tables[3];
614#define gp_gamma2lin_RGB565_G(val, gamma) ({ \
615 gamma->tables[1]->u8[val]; \
623#define gp_lin2gamma_RGB565_G(val, gamma) ({ \
624 gamma->tables[4]->u8[val]; \
629 return gamma->tables[1];
634 return gamma->tables[4];
643#define gp_gamma2lin_RGB565_B(val, gamma) ({ \
644 gamma->tables[2]->u8[val]; \
652#define gp_lin2gamma_RGB565_B(val, gamma) ({ \
653 gamma->tables[5]->u8[val]; \
658 return gamma->tables[2];
663 return gamma->tables[5];
673#define gp_gamma2lin_RGB666_R(val, gamma) ({ \
674 gamma->tables[0]->u8[val]; \
682#define gp_lin2gamma_RGB666_R(val, gamma) ({ \
683 gamma->tables[3]->u8[val]; \
688 return gamma->tables[0];
693 return gamma->tables[3];
702#define gp_gamma2lin_RGB666_G(val, gamma) ({ \
703 gamma->tables[1]->u8[val]; \
711#define gp_lin2gamma_RGB666_G(val, gamma) ({ \
712 gamma->tables[4]->u8[val]; \
717 return gamma->tables[1];
722 return gamma->tables[4];
731#define gp_gamma2lin_RGB666_B(val, gamma) ({ \
732 gamma->tables[2]->u8[val]; \
740#define gp_lin2gamma_RGB666_B(val, gamma) ({ \
741 gamma->tables[5]->u8[val]; \
746 return gamma->tables[2];
751 return gamma->tables[5];
761#define gp_gamma2lin_RGB332_R(val, gamma) ({ \
762 gamma->tables[0]->u8[val]; \
770#define gp_lin2gamma_RGB332_R(val, gamma) ({ \
771 gamma->tables[3]->u8[val]; \
776 return gamma->tables[0];
781 return gamma->tables[3];
790#define gp_gamma2lin_RGB332_G(val, gamma) ({ \
791 gamma->tables[1]->u8[val]; \
799#define gp_lin2gamma_RGB332_G(val, gamma) ({ \
800 gamma->tables[4]->u8[val]; \
805 return gamma->tables[1];
810 return gamma->tables[4];
819#define gp_gamma2lin_RGB332_B(val, gamma) ({ \
820 gamma->tables[2]->u8[val]; \
828#define gp_lin2gamma_RGB332_B(val, gamma) ({ \
829 gamma->tables[5]->u8[val]; \
834 return gamma->tables[2];
839 return gamma->tables[5];
849#define gp_gamma2lin_CMYK8888_K(val, gamma) ({ \
850 gamma->tables[0]->u16[val]; \
858#define gp_lin2gamma_CMYK8888_K(val, gamma) ({ \
859 gamma->tables[4]->u8[val]; \
864 return gamma->tables[0];
869 return gamma->tables[4];
878#define gp_gamma2lin_CMYK8888_Y(val, gamma) ({ \
879 gamma->tables[1]->u16[val]; \
887#define gp_lin2gamma_CMYK8888_Y(val, gamma) ({ \
888 gamma->tables[5]->u8[val]; \
893 return gamma->tables[1];
898 return gamma->tables[5];
907#define gp_gamma2lin_CMYK8888_M(val, gamma) ({ \
908 gamma->tables[2]->u16[val]; \
916#define gp_lin2gamma_CMYK8888_M(val, gamma) ({ \
917 gamma->tables[6]->u8[val]; \
922 return gamma->tables[2];
927 return gamma->tables[6];
936#define gp_gamma2lin_CMYK8888_C(val, gamma) ({ \
937 gamma->tables[3]->u16[val]; \
945#define gp_lin2gamma_CMYK8888_C(val, gamma) ({ \
946 gamma->tables[7]->u8[val]; \
951 return gamma->tables[3];
956 return gamma->tables[7];
966#define gp_gamma2lin_G1_DB_V(val, gamma) ({ \
967 gamma->tables[0]->u8[val]; \
975#define gp_lin2gamma_G1_DB_V(val, gamma) ({ \
976 gamma->tables[1]->u8[val]; \
981 return gamma->tables[0];
986 return gamma->tables[1];
996#define gp_gamma2lin_G2_DB_V(val, gamma) ({ \
997 gamma->tables[0]->u8[val]; \
1005#define gp_lin2gamma_G2_DB_V(val, gamma) ({ \
1006 gamma->tables[1]->u8[val]; \
1011 return gamma->tables[0];
1016 return gamma->tables[1];
1026#define gp_gamma2lin_G4_DB_V(val, gamma) ({ \
1027 gamma->tables[0]->u8[val]; \
1035#define gp_lin2gamma_G4_DB_V(val, gamma) ({ \
1036 gamma->tables[1]->u8[val]; \
1041 return gamma->tables[0];
1046 return gamma->tables[1];
1056#define gp_gamma2lin_G1_UB_V(val, gamma) ({ \
1057 gamma->tables[0]->u8[val]; \
1065#define gp_lin2gamma_G1_UB_V(val, gamma) ({ \
1066 gamma->tables[1]->u8[val]; \
1071 return gamma->tables[0];
1076 return gamma->tables[1];
1086#define gp_gamma2lin_G2_UB_V(val, gamma) ({ \
1087 gamma->tables[0]->u8[val]; \
1095#define gp_lin2gamma_G2_UB_V(val, gamma) ({ \
1096 gamma->tables[1]->u8[val]; \
1101 return gamma->tables[0];
1106 return gamma->tables[1];
1116#define gp_gamma2lin_G4_UB_V(val, gamma) ({ \
1117 gamma->tables[0]->u8[val]; \
1125#define gp_lin2gamma_G4_UB_V(val, gamma) ({ \
1126 gamma->tables[1]->u8[val]; \
1131 return gamma->tables[0];
1136 return gamma->tables[1];
1146#define gp_gamma2lin_G8_V(val, gamma) ({ \
1147 gamma->tables[0]->u16[val]; \
1155#define gp_lin2gamma_G8_V(val, gamma) ({ \
1156 gamma->tables[1]->u8[val]; \
1161 return gamma->tables[0];
1166 return gamma->tables[1];
1176#define gp_gamma2lin_GA88_V(val, gamma) ({ \
1177 gamma->tables[0]->u16[val]; \
1185#define gp_lin2gamma_GA88_V(val, gamma) ({ \
1186 gamma->tables[2]->u8[val]; \
1191 return gamma->tables[0];
1196 return gamma->tables[2];
1205#define gp_gamma2lin_GA88_A(val, gamma) ({ \
1206 gamma->tables[1]->u16[val]; \
1214#define gp_lin2gamma_GA88_A(val, gamma) ({ \
1215 gamma->tables[3]->u8[val]; \
1220 return gamma->tables[1];
1225 return gamma->tables[3];
1235#define gp_gamma2lin_G16_V(val, gamma) ({ \
1236 gamma->tables[0]->u16[val]; \
1244#define gp_lin2gamma_G16_V(val, gamma) ({ \
1245 gamma->tables[1]->u16[val]; \
1250 return gamma->tables[0];
1255 return gamma->tables[1];
1259#define gp_gamma2lin(val, chan_bits, gamma_table) ({ \
1261 gamma_table->u16[val] \
1263 gamma_table->u8[val] \
1267#define gp_lin2gamma(val, chan_bits, gamma_table) ({ \
1269 gamma_table->table16[val] \
1271 gamma_table->table8[val] \
Gamma and sRGB corrections.
A correction tables for all pixel channels.