vkms_luts.c 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  1. // SPDX-License-Identifier: GPL-2.0+
  2. #include <drm/drm_mode.h>
  3. #include "vkms_drv.h"
  4. #include "vkms_luts.h"
  5. /*
  6. * These luts were generated with a LUT generated based on
  7. * skia's transfer function code. The LUT generator can be
  8. * found at
  9. * https://gitlab.freedesktop.org/hwentland/lutgen
  10. */
  11. static struct drm_color_lut linear_array[LUT_SIZE] = {
  12. { 0x0, 0x0, 0x0, 0 },
  13. { 0x101, 0x101, 0x101, 0 },
  14. { 0x202, 0x202, 0x202, 0 },
  15. { 0x303, 0x303, 0x303, 0 },
  16. { 0x404, 0x404, 0x404, 0 },
  17. { 0x505, 0x505, 0x505, 0 },
  18. { 0x606, 0x606, 0x606, 0 },
  19. { 0x707, 0x707, 0x707, 0 },
  20. { 0x808, 0x808, 0x808, 0 },
  21. { 0x909, 0x909, 0x909, 0 },
  22. { 0xa0a, 0xa0a, 0xa0a, 0 },
  23. { 0xb0b, 0xb0b, 0xb0b, 0 },
  24. { 0xc0c, 0xc0c, 0xc0c, 0 },
  25. { 0xd0d, 0xd0d, 0xd0d, 0 },
  26. { 0xe0e, 0xe0e, 0xe0e, 0 },
  27. { 0xf0f, 0xf0f, 0xf0f, 0 },
  28. { 0x1010, 0x1010, 0x1010, 0 },
  29. { 0x1111, 0x1111, 0x1111, 0 },
  30. { 0x1212, 0x1212, 0x1212, 0 },
  31. { 0x1313, 0x1313, 0x1313, 0 },
  32. { 0x1414, 0x1414, 0x1414, 0 },
  33. { 0x1515, 0x1515, 0x1515, 0 },
  34. { 0x1616, 0x1616, 0x1616, 0 },
  35. { 0x1717, 0x1717, 0x1717, 0 },
  36. { 0x1818, 0x1818, 0x1818, 0 },
  37. { 0x1919, 0x1919, 0x1919, 0 },
  38. { 0x1a1a, 0x1a1a, 0x1a1a, 0 },
  39. { 0x1b1b, 0x1b1b, 0x1b1b, 0 },
  40. { 0x1c1c, 0x1c1c, 0x1c1c, 0 },
  41. { 0x1d1d, 0x1d1d, 0x1d1d, 0 },
  42. { 0x1e1e, 0x1e1e, 0x1e1e, 0 },
  43. { 0x1f1f, 0x1f1f, 0x1f1f, 0 },
  44. { 0x2020, 0x2020, 0x2020, 0 },
  45. { 0x2121, 0x2121, 0x2121, 0 },
  46. { 0x2222, 0x2222, 0x2222, 0 },
  47. { 0x2323, 0x2323, 0x2323, 0 },
  48. { 0x2424, 0x2424, 0x2424, 0 },
  49. { 0x2525, 0x2525, 0x2525, 0 },
  50. { 0x2626, 0x2626, 0x2626, 0 },
  51. { 0x2727, 0x2727, 0x2727, 0 },
  52. { 0x2828, 0x2828, 0x2828, 0 },
  53. { 0x2929, 0x2929, 0x2929, 0 },
  54. { 0x2a2a, 0x2a2a, 0x2a2a, 0 },
  55. { 0x2b2b, 0x2b2b, 0x2b2b, 0 },
  56. { 0x2c2c, 0x2c2c, 0x2c2c, 0 },
  57. { 0x2d2d, 0x2d2d, 0x2d2d, 0 },
  58. { 0x2e2e, 0x2e2e, 0x2e2e, 0 },
  59. { 0x2f2f, 0x2f2f, 0x2f2f, 0 },
  60. { 0x3030, 0x3030, 0x3030, 0 },
  61. { 0x3131, 0x3131, 0x3131, 0 },
  62. { 0x3232, 0x3232, 0x3232, 0 },
  63. { 0x3333, 0x3333, 0x3333, 0 },
  64. { 0x3434, 0x3434, 0x3434, 0 },
  65. { 0x3535, 0x3535, 0x3535, 0 },
  66. { 0x3636, 0x3636, 0x3636, 0 },
  67. { 0x3737, 0x3737, 0x3737, 0 },
  68. { 0x3838, 0x3838, 0x3838, 0 },
  69. { 0x3939, 0x3939, 0x3939, 0 },
  70. { 0x3a3a, 0x3a3a, 0x3a3a, 0 },
  71. { 0x3b3b, 0x3b3b, 0x3b3b, 0 },
  72. { 0x3c3c, 0x3c3c, 0x3c3c, 0 },
  73. { 0x3d3d, 0x3d3d, 0x3d3d, 0 },
  74. { 0x3e3e, 0x3e3e, 0x3e3e, 0 },
  75. { 0x3f3f, 0x3f3f, 0x3f3f, 0 },
  76. { 0x4040, 0x4040, 0x4040, 0 },
  77. { 0x4141, 0x4141, 0x4141, 0 },
  78. { 0x4242, 0x4242, 0x4242, 0 },
  79. { 0x4343, 0x4343, 0x4343, 0 },
  80. { 0x4444, 0x4444, 0x4444, 0 },
  81. { 0x4545, 0x4545, 0x4545, 0 },
  82. { 0x4646, 0x4646, 0x4646, 0 },
  83. { 0x4747, 0x4747, 0x4747, 0 },
  84. { 0x4848, 0x4848, 0x4848, 0 },
  85. { 0x4949, 0x4949, 0x4949, 0 },
  86. { 0x4a4a, 0x4a4a, 0x4a4a, 0 },
  87. { 0x4b4b, 0x4b4b, 0x4b4b, 0 },
  88. { 0x4c4c, 0x4c4c, 0x4c4c, 0 },
  89. { 0x4d4d, 0x4d4d, 0x4d4d, 0 },
  90. { 0x4e4e, 0x4e4e, 0x4e4e, 0 },
  91. { 0x4f4f, 0x4f4f, 0x4f4f, 0 },
  92. { 0x5050, 0x5050, 0x5050, 0 },
  93. { 0x5151, 0x5151, 0x5151, 0 },
  94. { 0x5252, 0x5252, 0x5252, 0 },
  95. { 0x5353, 0x5353, 0x5353, 0 },
  96. { 0x5454, 0x5454, 0x5454, 0 },
  97. { 0x5555, 0x5555, 0x5555, 0 },
  98. { 0x5656, 0x5656, 0x5656, 0 },
  99. { 0x5757, 0x5757, 0x5757, 0 },
  100. { 0x5858, 0x5858, 0x5858, 0 },
  101. { 0x5959, 0x5959, 0x5959, 0 },
  102. { 0x5a5a, 0x5a5a, 0x5a5a, 0 },
  103. { 0x5b5b, 0x5b5b, 0x5b5b, 0 },
  104. { 0x5c5c, 0x5c5c, 0x5c5c, 0 },
  105. { 0x5d5d, 0x5d5d, 0x5d5d, 0 },
  106. { 0x5e5e, 0x5e5e, 0x5e5e, 0 },
  107. { 0x5f5f, 0x5f5f, 0x5f5f, 0 },
  108. { 0x6060, 0x6060, 0x6060, 0 },
  109. { 0x6161, 0x6161, 0x6161, 0 },
  110. { 0x6262, 0x6262, 0x6262, 0 },
  111. { 0x6363, 0x6363, 0x6363, 0 },
  112. { 0x6464, 0x6464, 0x6464, 0 },
  113. { 0x6565, 0x6565, 0x6565, 0 },
  114. { 0x6666, 0x6666, 0x6666, 0 },
  115. { 0x6767, 0x6767, 0x6767, 0 },
  116. { 0x6868, 0x6868, 0x6868, 0 },
  117. { 0x6969, 0x6969, 0x6969, 0 },
  118. { 0x6a6a, 0x6a6a, 0x6a6a, 0 },
  119. { 0x6b6b, 0x6b6b, 0x6b6b, 0 },
  120. { 0x6c6c, 0x6c6c, 0x6c6c, 0 },
  121. { 0x6d6d, 0x6d6d, 0x6d6d, 0 },
  122. { 0x6e6e, 0x6e6e, 0x6e6e, 0 },
  123. { 0x6f6f, 0x6f6f, 0x6f6f, 0 },
  124. { 0x7070, 0x7070, 0x7070, 0 },
  125. { 0x7171, 0x7171, 0x7171, 0 },
  126. { 0x7272, 0x7272, 0x7272, 0 },
  127. { 0x7373, 0x7373, 0x7373, 0 },
  128. { 0x7474, 0x7474, 0x7474, 0 },
  129. { 0x7575, 0x7575, 0x7575, 0 },
  130. { 0x7676, 0x7676, 0x7676, 0 },
  131. { 0x7777, 0x7777, 0x7777, 0 },
  132. { 0x7878, 0x7878, 0x7878, 0 },
  133. { 0x7979, 0x7979, 0x7979, 0 },
  134. { 0x7a7a, 0x7a7a, 0x7a7a, 0 },
  135. { 0x7b7b, 0x7b7b, 0x7b7b, 0 },
  136. { 0x7c7c, 0x7c7c, 0x7c7c, 0 },
  137. { 0x7d7d, 0x7d7d, 0x7d7d, 0 },
  138. { 0x7e7e, 0x7e7e, 0x7e7e, 0 },
  139. { 0x7f7f, 0x7f7f, 0x7f7f, 0 },
  140. { 0x8080, 0x8080, 0x8080, 0 },
  141. { 0x8181, 0x8181, 0x8181, 0 },
  142. { 0x8282, 0x8282, 0x8282, 0 },
  143. { 0x8383, 0x8383, 0x8383, 0 },
  144. { 0x8484, 0x8484, 0x8484, 0 },
  145. { 0x8585, 0x8585, 0x8585, 0 },
  146. { 0x8686, 0x8686, 0x8686, 0 },
  147. { 0x8787, 0x8787, 0x8787, 0 },
  148. { 0x8888, 0x8888, 0x8888, 0 },
  149. { 0x8989, 0x8989, 0x8989, 0 },
  150. { 0x8a8a, 0x8a8a, 0x8a8a, 0 },
  151. { 0x8b8b, 0x8b8b, 0x8b8b, 0 },
  152. { 0x8c8c, 0x8c8c, 0x8c8c, 0 },
  153. { 0x8d8d, 0x8d8d, 0x8d8d, 0 },
  154. { 0x8e8e, 0x8e8e, 0x8e8e, 0 },
  155. { 0x8f8f, 0x8f8f, 0x8f8f, 0 },
  156. { 0x9090, 0x9090, 0x9090, 0 },
  157. { 0x9191, 0x9191, 0x9191, 0 },
  158. { 0x9292, 0x9292, 0x9292, 0 },
  159. { 0x9393, 0x9393, 0x9393, 0 },
  160. { 0x9494, 0x9494, 0x9494, 0 },
  161. { 0x9595, 0x9595, 0x9595, 0 },
  162. { 0x9696, 0x9696, 0x9696, 0 },
  163. { 0x9797, 0x9797, 0x9797, 0 },
  164. { 0x9898, 0x9898, 0x9898, 0 },
  165. { 0x9999, 0x9999, 0x9999, 0 },
  166. { 0x9a9a, 0x9a9a, 0x9a9a, 0 },
  167. { 0x9b9b, 0x9b9b, 0x9b9b, 0 },
  168. { 0x9c9c, 0x9c9c, 0x9c9c, 0 },
  169. { 0x9d9d, 0x9d9d, 0x9d9d, 0 },
  170. { 0x9e9e, 0x9e9e, 0x9e9e, 0 },
  171. { 0x9f9f, 0x9f9f, 0x9f9f, 0 },
  172. { 0xa0a0, 0xa0a0, 0xa0a0, 0 },
  173. { 0xa1a1, 0xa1a1, 0xa1a1, 0 },
  174. { 0xa2a2, 0xa2a2, 0xa2a2, 0 },
  175. { 0xa3a3, 0xa3a3, 0xa3a3, 0 },
  176. { 0xa4a4, 0xa4a4, 0xa4a4, 0 },
  177. { 0xa5a5, 0xa5a5, 0xa5a5, 0 },
  178. { 0xa6a6, 0xa6a6, 0xa6a6, 0 },
  179. { 0xa7a7, 0xa7a7, 0xa7a7, 0 },
  180. { 0xa8a8, 0xa8a8, 0xa8a8, 0 },
  181. { 0xa9a9, 0xa9a9, 0xa9a9, 0 },
  182. { 0xaaaa, 0xaaaa, 0xaaaa, 0 },
  183. { 0xabab, 0xabab, 0xabab, 0 },
  184. { 0xacac, 0xacac, 0xacac, 0 },
  185. { 0xadad, 0xadad, 0xadad, 0 },
  186. { 0xaeae, 0xaeae, 0xaeae, 0 },
  187. { 0xafaf, 0xafaf, 0xafaf, 0 },
  188. { 0xb0b0, 0xb0b0, 0xb0b0, 0 },
  189. { 0xb1b1, 0xb1b1, 0xb1b1, 0 },
  190. { 0xb2b2, 0xb2b2, 0xb2b2, 0 },
  191. { 0xb3b3, 0xb3b3, 0xb3b3, 0 },
  192. { 0xb4b4, 0xb4b4, 0xb4b4, 0 },
  193. { 0xb5b5, 0xb5b5, 0xb5b5, 0 },
  194. { 0xb6b6, 0xb6b6, 0xb6b6, 0 },
  195. { 0xb7b7, 0xb7b7, 0xb7b7, 0 },
  196. { 0xb8b8, 0xb8b8, 0xb8b8, 0 },
  197. { 0xb9b9, 0xb9b9, 0xb9b9, 0 },
  198. { 0xbaba, 0xbaba, 0xbaba, 0 },
  199. { 0xbbbb, 0xbbbb, 0xbbbb, 0 },
  200. { 0xbcbc, 0xbcbc, 0xbcbc, 0 },
  201. { 0xbdbd, 0xbdbd, 0xbdbd, 0 },
  202. { 0xbebe, 0xbebe, 0xbebe, 0 },
  203. { 0xbfbf, 0xbfbf, 0xbfbf, 0 },
  204. { 0xc0c0, 0xc0c0, 0xc0c0, 0 },
  205. { 0xc1c1, 0xc1c1, 0xc1c1, 0 },
  206. { 0xc2c2, 0xc2c2, 0xc2c2, 0 },
  207. { 0xc3c3, 0xc3c3, 0xc3c3, 0 },
  208. { 0xc4c4, 0xc4c4, 0xc4c4, 0 },
  209. { 0xc5c5, 0xc5c5, 0xc5c5, 0 },
  210. { 0xc6c6, 0xc6c6, 0xc6c6, 0 },
  211. { 0xc7c7, 0xc7c7, 0xc7c7, 0 },
  212. { 0xc8c8, 0xc8c8, 0xc8c8, 0 },
  213. { 0xc9c9, 0xc9c9, 0xc9c9, 0 },
  214. { 0xcaca, 0xcaca, 0xcaca, 0 },
  215. { 0xcbcb, 0xcbcb, 0xcbcb, 0 },
  216. { 0xcccc, 0xcccc, 0xcccc, 0 },
  217. { 0xcdcd, 0xcdcd, 0xcdcd, 0 },
  218. { 0xcece, 0xcece, 0xcece, 0 },
  219. { 0xcfcf, 0xcfcf, 0xcfcf, 0 },
  220. { 0xd0d0, 0xd0d0, 0xd0d0, 0 },
  221. { 0xd1d1, 0xd1d1, 0xd1d1, 0 },
  222. { 0xd2d2, 0xd2d2, 0xd2d2, 0 },
  223. { 0xd3d3, 0xd3d3, 0xd3d3, 0 },
  224. { 0xd4d4, 0xd4d4, 0xd4d4, 0 },
  225. { 0xd5d5, 0xd5d5, 0xd5d5, 0 },
  226. { 0xd6d6, 0xd6d6, 0xd6d6, 0 },
  227. { 0xd7d7, 0xd7d7, 0xd7d7, 0 },
  228. { 0xd8d8, 0xd8d8, 0xd8d8, 0 },
  229. { 0xd9d9, 0xd9d9, 0xd9d9, 0 },
  230. { 0xdada, 0xdada, 0xdada, 0 },
  231. { 0xdbdb, 0xdbdb, 0xdbdb, 0 },
  232. { 0xdcdc, 0xdcdc, 0xdcdc, 0 },
  233. { 0xdddd, 0xdddd, 0xdddd, 0 },
  234. { 0xdede, 0xdede, 0xdede, 0 },
  235. { 0xdfdf, 0xdfdf, 0xdfdf, 0 },
  236. { 0xe0e0, 0xe0e0, 0xe0e0, 0 },
  237. { 0xe1e1, 0xe1e1, 0xe1e1, 0 },
  238. { 0xe2e2, 0xe2e2, 0xe2e2, 0 },
  239. { 0xe3e3, 0xe3e3, 0xe3e3, 0 },
  240. { 0xe4e4, 0xe4e4, 0xe4e4, 0 },
  241. { 0xe5e5, 0xe5e5, 0xe5e5, 0 },
  242. { 0xe6e6, 0xe6e6, 0xe6e6, 0 },
  243. { 0xe7e7, 0xe7e7, 0xe7e7, 0 },
  244. { 0xe8e8, 0xe8e8, 0xe8e8, 0 },
  245. { 0xe9e9, 0xe9e9, 0xe9e9, 0 },
  246. { 0xeaea, 0xeaea, 0xeaea, 0 },
  247. { 0xebeb, 0xebeb, 0xebeb, 0 },
  248. { 0xecec, 0xecec, 0xecec, 0 },
  249. { 0xeded, 0xeded, 0xeded, 0 },
  250. { 0xeeee, 0xeeee, 0xeeee, 0 },
  251. { 0xefef, 0xefef, 0xefef, 0 },
  252. { 0xf0f0, 0xf0f0, 0xf0f0, 0 },
  253. { 0xf1f1, 0xf1f1, 0xf1f1, 0 },
  254. { 0xf2f2, 0xf2f2, 0xf2f2, 0 },
  255. { 0xf3f3, 0xf3f3, 0xf3f3, 0 },
  256. { 0xf4f4, 0xf4f4, 0xf4f4, 0 },
  257. { 0xf5f5, 0xf5f5, 0xf5f5, 0 },
  258. { 0xf6f6, 0xf6f6, 0xf6f6, 0 },
  259. { 0xf7f7, 0xf7f7, 0xf7f7, 0 },
  260. { 0xf8f8, 0xf8f8, 0xf8f8, 0 },
  261. { 0xf9f9, 0xf9f9, 0xf9f9, 0 },
  262. { 0xfafa, 0xfafa, 0xfafa, 0 },
  263. { 0xfbfb, 0xfbfb, 0xfbfb, 0 },
  264. { 0xfcfc, 0xfcfc, 0xfcfc, 0 },
  265. { 0xfdfd, 0xfdfd, 0xfdfd, 0 },
  266. { 0xfefe, 0xfefe, 0xfefe, 0 },
  267. { 0xffff, 0xffff, 0xffff, 0 },
  268. };
  269. const struct vkms_color_lut linear_eotf = {
  270. .base = linear_array,
  271. .lut_length = LUT_SIZE,
  272. .channel_value2index_ratio = 0xff00ffll
  273. };
  274. EXPORT_SYMBOL(linear_eotf);
  275. static struct drm_color_lut srgb_array[LUT_SIZE] = {
  276. { 0x0, 0x0, 0x0, 0 },
  277. { 0x13, 0x13, 0x13, 0 },
  278. { 0x27, 0x27, 0x27, 0 },
  279. { 0x3b, 0x3b, 0x3b, 0 },
  280. { 0x4f, 0x4f, 0x4f, 0 },
  281. { 0x63, 0x63, 0x63, 0 },
  282. { 0x77, 0x77, 0x77, 0 },
  283. { 0x8b, 0x8b, 0x8b, 0 },
  284. { 0x9f, 0x9f, 0x9f, 0 },
  285. { 0xb3, 0xb3, 0xb3, 0 },
  286. { 0xc6, 0xc6, 0xc6, 0 },
  287. { 0xdb, 0xdb, 0xdb, 0 },
  288. { 0xf0, 0xf0, 0xf0, 0 },
  289. { 0x107, 0x107, 0x107, 0 },
  290. { 0x11f, 0x11f, 0x11f, 0 },
  291. { 0x139, 0x139, 0x139, 0 },
  292. { 0x153, 0x153, 0x153, 0 },
  293. { 0x16f, 0x16f, 0x16f, 0 },
  294. { 0x18c, 0x18c, 0x18c, 0 },
  295. { 0x1aa, 0x1aa, 0x1aa, 0 },
  296. { 0x1ca, 0x1ca, 0x1ca, 0 },
  297. { 0x1eb, 0x1eb, 0x1eb, 0 },
  298. { 0x20d, 0x20d, 0x20d, 0 },
  299. { 0x231, 0x231, 0x231, 0 },
  300. { 0x256, 0x256, 0x256, 0 },
  301. { 0x27d, 0x27d, 0x27d, 0 },
  302. { 0x2a4, 0x2a4, 0x2a4, 0 },
  303. { 0x2ce, 0x2ce, 0x2ce, 0 },
  304. { 0x2f9, 0x2f9, 0x2f9, 0 },
  305. { 0x325, 0x325, 0x325, 0 },
  306. { 0x352, 0x352, 0x352, 0 },
  307. { 0x381, 0x381, 0x381, 0 },
  308. { 0x3b2, 0x3b2, 0x3b2, 0 },
  309. { 0x3e4, 0x3e4, 0x3e4, 0 },
  310. { 0x418, 0x418, 0x418, 0 },
  311. { 0x44d, 0x44d, 0x44d, 0 },
  312. { 0x484, 0x484, 0x484, 0 },
  313. { 0x4bc, 0x4bc, 0x4bc, 0 },
  314. { 0x4f6, 0x4f6, 0x4f6, 0 },
  315. { 0x531, 0x531, 0x531, 0 },
  316. { 0x56e, 0x56e, 0x56e, 0 },
  317. { 0x5ad, 0x5ad, 0x5ad, 0 },
  318. { 0x5ed, 0x5ed, 0x5ed, 0 },
  319. { 0x62f, 0x62f, 0x62f, 0 },
  320. { 0x672, 0x672, 0x672, 0 },
  321. { 0x6b7, 0x6b7, 0x6b7, 0 },
  322. { 0x6fe, 0x6fe, 0x6fe, 0 },
  323. { 0x746, 0x746, 0x746, 0 },
  324. { 0x791, 0x791, 0x791, 0 },
  325. { 0x7dc, 0x7dc, 0x7dc, 0 },
  326. { 0x82a, 0x82a, 0x82a, 0 },
  327. { 0x879, 0x879, 0x879, 0 },
  328. { 0x8ca, 0x8ca, 0x8ca, 0 },
  329. { 0x91d, 0x91d, 0x91d, 0 },
  330. { 0x971, 0x971, 0x971, 0 },
  331. { 0x9c7, 0x9c7, 0x9c7, 0 },
  332. { 0xa1f, 0xa1f, 0xa1f, 0 },
  333. { 0xa79, 0xa79, 0xa79, 0 },
  334. { 0xad4, 0xad4, 0xad4, 0 },
  335. { 0xb32, 0xb32, 0xb32, 0 },
  336. { 0xb91, 0xb91, 0xb91, 0 },
  337. { 0xbf2, 0xbf2, 0xbf2, 0 },
  338. { 0xc54, 0xc54, 0xc54, 0 },
  339. { 0xcb9, 0xcb9, 0xcb9, 0 },
  340. { 0xd1f, 0xd1f, 0xd1f, 0 },
  341. { 0xd88, 0xd88, 0xd88, 0 },
  342. { 0xdf2, 0xdf2, 0xdf2, 0 },
  343. { 0xe5e, 0xe5e, 0xe5e, 0 },
  344. { 0xecc, 0xecc, 0xecc, 0 },
  345. { 0xf3c, 0xf3c, 0xf3c, 0 },
  346. { 0xfad, 0xfad, 0xfad, 0 },
  347. { 0x1021, 0x1021, 0x1021, 0 },
  348. { 0x1096, 0x1096, 0x1096, 0 },
  349. { 0x110e, 0x110e, 0x110e, 0 },
  350. { 0x1187, 0x1187, 0x1187, 0 },
  351. { 0x1203, 0x1203, 0x1203, 0 },
  352. { 0x1280, 0x1280, 0x1280, 0 },
  353. { 0x12ff, 0x12ff, 0x12ff, 0 },
  354. { 0x1380, 0x1380, 0x1380, 0 },
  355. { 0x1404, 0x1404, 0x1404, 0 },
  356. { 0x1489, 0x1489, 0x1489, 0 },
  357. { 0x1510, 0x1510, 0x1510, 0 },
  358. { 0x1599, 0x1599, 0x1599, 0 },
  359. { 0x1624, 0x1624, 0x1624, 0 },
  360. { 0x16b2, 0x16b2, 0x16b2, 0 },
  361. { 0x1741, 0x1741, 0x1741, 0 },
  362. { 0x17d2, 0x17d2, 0x17d2, 0 },
  363. { 0x1865, 0x1865, 0x1865, 0 },
  364. { 0x18fb, 0x18fb, 0x18fb, 0 },
  365. { 0x1992, 0x1992, 0x1992, 0 },
  366. { 0x1a2c, 0x1a2c, 0x1a2c, 0 },
  367. { 0x1ac8, 0x1ac8, 0x1ac8, 0 },
  368. { 0x1b65, 0x1b65, 0x1b65, 0 },
  369. { 0x1c05, 0x1c05, 0x1c05, 0 },
  370. { 0x1ca7, 0x1ca7, 0x1ca7, 0 },
  371. { 0x1d4b, 0x1d4b, 0x1d4b, 0 },
  372. { 0x1df1, 0x1df1, 0x1df1, 0 },
  373. { 0x1e99, 0x1e99, 0x1e99, 0 },
  374. { 0x1f44, 0x1f44, 0x1f44, 0 },
  375. { 0x1ff0, 0x1ff0, 0x1ff0, 0 },
  376. { 0x209f, 0x209f, 0x209f, 0 },
  377. { 0x2150, 0x2150, 0x2150, 0 },
  378. { 0x2203, 0x2203, 0x2203, 0 },
  379. { 0x22b8, 0x22b8, 0x22b8, 0 },
  380. { 0x2370, 0x2370, 0x2370, 0 },
  381. { 0x2429, 0x2429, 0x2429, 0 },
  382. { 0x24e5, 0x24e5, 0x24e5, 0 },
  383. { 0x25a3, 0x25a3, 0x25a3, 0 },
  384. { 0x2663, 0x2663, 0x2663, 0 },
  385. { 0x2726, 0x2726, 0x2726, 0 },
  386. { 0x27ea, 0x27ea, 0x27ea, 0 },
  387. { 0x28b1, 0x28b1, 0x28b1, 0 },
  388. { 0x297a, 0x297a, 0x297a, 0 },
  389. { 0x2a45, 0x2a45, 0x2a45, 0 },
  390. { 0x2b13, 0x2b13, 0x2b13, 0 },
  391. { 0x2be3, 0x2be3, 0x2be3, 0 },
  392. { 0x2cb5, 0x2cb5, 0x2cb5, 0 },
  393. { 0x2d89, 0x2d89, 0x2d89, 0 },
  394. { 0x2e60, 0x2e60, 0x2e60, 0 },
  395. { 0x2f39, 0x2f39, 0x2f39, 0 },
  396. { 0x3014, 0x3014, 0x3014, 0 },
  397. { 0x30f2, 0x30f2, 0x30f2, 0 },
  398. { 0x31d2, 0x31d2, 0x31d2, 0 },
  399. { 0x32b4, 0x32b4, 0x32b4, 0 },
  400. { 0x3398, 0x3398, 0x3398, 0 },
  401. { 0x347f, 0x347f, 0x347f, 0 },
  402. { 0x3569, 0x3569, 0x3569, 0 },
  403. { 0x3654, 0x3654, 0x3654, 0 },
  404. { 0x3742, 0x3742, 0x3742, 0 },
  405. { 0x3832, 0x3832, 0x3832, 0 },
  406. { 0x3925, 0x3925, 0x3925, 0 },
  407. { 0x3a1a, 0x3a1a, 0x3a1a, 0 },
  408. { 0x3b11, 0x3b11, 0x3b11, 0 },
  409. { 0x3c0b, 0x3c0b, 0x3c0b, 0 },
  410. { 0x3d07, 0x3d07, 0x3d07, 0 },
  411. { 0x3e05, 0x3e05, 0x3e05, 0 },
  412. { 0x3f06, 0x3f06, 0x3f06, 0 },
  413. { 0x400a, 0x400a, 0x400a, 0 },
  414. { 0x410f, 0x410f, 0x410f, 0 },
  415. { 0x4218, 0x4218, 0x4218, 0 },
  416. { 0x4322, 0x4322, 0x4322, 0 },
  417. { 0x442f, 0x442f, 0x442f, 0 },
  418. { 0x453f, 0x453f, 0x453f, 0 },
  419. { 0x4650, 0x4650, 0x4650, 0 },
  420. { 0x4765, 0x4765, 0x4765, 0 },
  421. { 0x487c, 0x487c, 0x487c, 0 },
  422. { 0x4995, 0x4995, 0x4995, 0 },
  423. { 0x4ab1, 0x4ab1, 0x4ab1, 0 },
  424. { 0x4bcf, 0x4bcf, 0x4bcf, 0 },
  425. { 0x4cf0, 0x4cf0, 0x4cf0, 0 },
  426. { 0x4e13, 0x4e13, 0x4e13, 0 },
  427. { 0x4f39, 0x4f39, 0x4f39, 0 },
  428. { 0x5061, 0x5061, 0x5061, 0 },
  429. { 0x518b, 0x518b, 0x518b, 0 },
  430. { 0x52b9, 0x52b9, 0x52b9, 0 },
  431. { 0x53e8, 0x53e8, 0x53e8, 0 },
  432. { 0x551b, 0x551b, 0x551b, 0 },
  433. { 0x5650, 0x5650, 0x5650, 0 },
  434. { 0x5787, 0x5787, 0x5787, 0 },
  435. { 0x58c1, 0x58c1, 0x58c1, 0 },
  436. { 0x59fd, 0x59fd, 0x59fd, 0 },
  437. { 0x5b3c, 0x5b3c, 0x5b3c, 0 },
  438. { 0x5c7e, 0x5c7e, 0x5c7e, 0 },
  439. { 0x5dc2, 0x5dc2, 0x5dc2, 0 },
  440. { 0x5f09, 0x5f09, 0x5f09, 0 },
  441. { 0x6052, 0x6052, 0x6052, 0 },
  442. { 0x619e, 0x619e, 0x619e, 0 },
  443. { 0x62ec, 0x62ec, 0x62ec, 0 },
  444. { 0x643d, 0x643d, 0x643d, 0 },
  445. { 0x6591, 0x6591, 0x6591, 0 },
  446. { 0x66e7, 0x66e7, 0x66e7, 0 },
  447. { 0x6840, 0x6840, 0x6840, 0 },
  448. { 0x699b, 0x699b, 0x699b, 0 },
  449. { 0x6afa, 0x6afa, 0x6afa, 0 },
  450. { 0x6c5a, 0x6c5a, 0x6c5a, 0 },
  451. { 0x6dbe, 0x6dbe, 0x6dbe, 0 },
  452. { 0x6f24, 0x6f24, 0x6f24, 0 },
  453. { 0x708c, 0x708c, 0x708c, 0 },
  454. { 0x71f8, 0x71f8, 0x71f8, 0 },
  455. { 0x7366, 0x7366, 0x7366, 0 },
  456. { 0x74d6, 0x74d6, 0x74d6, 0 },
  457. { 0x764a, 0x764a, 0x764a, 0 },
  458. { 0x77c0, 0x77c0, 0x77c0, 0 },
  459. { 0x7938, 0x7938, 0x7938, 0 },
  460. { 0x7ab4, 0x7ab4, 0x7ab4, 0 },
  461. { 0x7c32, 0x7c32, 0x7c32, 0 },
  462. { 0x7db3, 0x7db3, 0x7db3, 0 },
  463. { 0x7f36, 0x7f36, 0x7f36, 0 },
  464. { 0x80bc, 0x80bc, 0x80bc, 0 },
  465. { 0x8245, 0x8245, 0x8245, 0 },
  466. { 0x83d1, 0x83d1, 0x83d1, 0 },
  467. { 0x855f, 0x855f, 0x855f, 0 },
  468. { 0x86f0, 0x86f0, 0x86f0, 0 },
  469. { 0x8884, 0x8884, 0x8884, 0 },
  470. { 0x8a1a, 0x8a1a, 0x8a1a, 0 },
  471. { 0x8bb4, 0x8bb4, 0x8bb4, 0 },
  472. { 0x8d50, 0x8d50, 0x8d50, 0 },
  473. { 0x8eee, 0x8eee, 0x8eee, 0 },
  474. { 0x9090, 0x9090, 0x9090, 0 },
  475. { 0x9234, 0x9234, 0x9234, 0 },
  476. { 0x93db, 0x93db, 0x93db, 0 },
  477. { 0x9585, 0x9585, 0x9585, 0 },
  478. { 0x9732, 0x9732, 0x9732, 0 },
  479. { 0x98e1, 0x98e1, 0x98e1, 0 },
  480. { 0x9a93, 0x9a93, 0x9a93, 0 },
  481. { 0x9c48, 0x9c48, 0x9c48, 0 },
  482. { 0x9e00, 0x9e00, 0x9e00, 0 },
  483. { 0x9fbb, 0x9fbb, 0x9fbb, 0 },
  484. { 0xa178, 0xa178, 0xa178, 0 },
  485. { 0xa338, 0xa338, 0xa338, 0 },
  486. { 0xa4fb, 0xa4fb, 0xa4fb, 0 },
  487. { 0xa6c1, 0xa6c1, 0xa6c1, 0 },
  488. { 0xa88a, 0xa88a, 0xa88a, 0 },
  489. { 0xaa56, 0xaa56, 0xaa56, 0 },
  490. { 0xac24, 0xac24, 0xac24, 0 },
  491. { 0xadf5, 0xadf5, 0xadf5, 0 },
  492. { 0xafc9, 0xafc9, 0xafc9, 0 },
  493. { 0xb1a0, 0xb1a0, 0xb1a0, 0 },
  494. { 0xb37a, 0xb37a, 0xb37a, 0 },
  495. { 0xb557, 0xb557, 0xb557, 0 },
  496. { 0xb736, 0xb736, 0xb736, 0 },
  497. { 0xb919, 0xb919, 0xb919, 0 },
  498. { 0xbafe, 0xbafe, 0xbafe, 0 },
  499. { 0xbce6, 0xbce6, 0xbce6, 0 },
  500. { 0xbed2, 0xbed2, 0xbed2, 0 },
  501. { 0xc0c0, 0xc0c0, 0xc0c0, 0 },
  502. { 0xc2b0, 0xc2b0, 0xc2b0, 0 },
  503. { 0xc4a4, 0xc4a4, 0xc4a4, 0 },
  504. { 0xc69b, 0xc69b, 0xc69b, 0 },
  505. { 0xc895, 0xc895, 0xc895, 0 },
  506. { 0xca91, 0xca91, 0xca91, 0 },
  507. { 0xcc91, 0xcc91, 0xcc91, 0 },
  508. { 0xce93, 0xce93, 0xce93, 0 },
  509. { 0xd098, 0xd098, 0xd098, 0 },
  510. { 0xd2a1, 0xd2a1, 0xd2a1, 0 },
  511. { 0xd4ac, 0xd4ac, 0xd4ac, 0 },
  512. { 0xd6ba, 0xd6ba, 0xd6ba, 0 },
  513. { 0xd8cb, 0xd8cb, 0xd8cb, 0 },
  514. { 0xdadf, 0xdadf, 0xdadf, 0 },
  515. { 0xdcf7, 0xdcf7, 0xdcf7, 0 },
  516. { 0xdf11, 0xdf11, 0xdf11, 0 },
  517. { 0xe12e, 0xe12e, 0xe12e, 0 },
  518. { 0xe34e, 0xe34e, 0xe34e, 0 },
  519. { 0xe571, 0xe571, 0xe571, 0 },
  520. { 0xe796, 0xe796, 0xe796, 0 },
  521. { 0xe9bf, 0xe9bf, 0xe9bf, 0 },
  522. { 0xebeb, 0xebeb, 0xebeb, 0 },
  523. { 0xee1a, 0xee1a, 0xee1a, 0 },
  524. { 0xf04c, 0xf04c, 0xf04c, 0 },
  525. { 0xf281, 0xf281, 0xf281, 0 },
  526. { 0xf4b9, 0xf4b9, 0xf4b9, 0 },
  527. { 0xf6f4, 0xf6f4, 0xf6f4, 0 },
  528. { 0xf932, 0xf932, 0xf932, 0 },
  529. { 0xfb73, 0xfb73, 0xfb73, 0 },
  530. { 0xfdb7, 0xfdb7, 0xfdb7, 0 },
  531. { 0xffff, 0xffff, 0xffff, 0 },
  532. };
  533. const struct vkms_color_lut srgb_eotf = {
  534. .base = srgb_array,
  535. .lut_length = LUT_SIZE,
  536. .channel_value2index_ratio = 0xff00ffll
  537. };
  538. EXPORT_SYMBOL(srgb_eotf);
  539. static struct drm_color_lut srgb_inv_array[LUT_SIZE] = {
  540. { 0x0, 0x0, 0x0, 0 },
  541. { 0xcc2, 0xcc2, 0xcc2, 0 },
  542. { 0x15be, 0x15be, 0x15be, 0 },
  543. { 0x1c56, 0x1c56, 0x1c56, 0 },
  544. { 0x21bd, 0x21bd, 0x21bd, 0 },
  545. { 0x2666, 0x2666, 0x2666, 0 },
  546. { 0x2a8a, 0x2a8a, 0x2a8a, 0 },
  547. { 0x2e4c, 0x2e4c, 0x2e4c, 0 },
  548. { 0x31c0, 0x31c0, 0x31c0, 0 },
  549. { 0x34f6, 0x34f6, 0x34f6, 0 },
  550. { 0x37f9, 0x37f9, 0x37f9, 0 },
  551. { 0x3acf, 0x3acf, 0x3acf, 0 },
  552. { 0x3d80, 0x3d80, 0x3d80, 0 },
  553. { 0x4010, 0x4010, 0x4010, 0 },
  554. { 0x4284, 0x4284, 0x4284, 0 },
  555. { 0x44dd, 0x44dd, 0x44dd, 0 },
  556. { 0x4720, 0x4720, 0x4720, 0 },
  557. { 0x494e, 0x494e, 0x494e, 0 },
  558. { 0x4b69, 0x4b69, 0x4b69, 0 },
  559. { 0x4d73, 0x4d73, 0x4d73, 0 },
  560. { 0x4f6e, 0x4f6e, 0x4f6e, 0 },
  561. { 0x5159, 0x5159, 0x5159, 0 },
  562. { 0x5337, 0x5337, 0x5337, 0 },
  563. { 0x5509, 0x5509, 0x5509, 0 },
  564. { 0x56cf, 0x56cf, 0x56cf, 0 },
  565. { 0x588a, 0x588a, 0x588a, 0 },
  566. { 0x5a3b, 0x5a3b, 0x5a3b, 0 },
  567. { 0x5be2, 0x5be2, 0x5be2, 0 },
  568. { 0x5d80, 0x5d80, 0x5d80, 0 },
  569. { 0x5f16, 0x5f16, 0x5f16, 0 },
  570. { 0x60a4, 0x60a4, 0x60a4, 0 },
  571. { 0x6229, 0x6229, 0x6229, 0 },
  572. { 0x63a8, 0x63a8, 0x63a8, 0 },
  573. { 0x6520, 0x6520, 0x6520, 0 },
  574. { 0x6691, 0x6691, 0x6691, 0 },
  575. { 0x67fc, 0x67fc, 0x67fc, 0 },
  576. { 0x6961, 0x6961, 0x6961, 0 },
  577. { 0x6ac0, 0x6ac0, 0x6ac0, 0 },
  578. { 0x6c19, 0x6c19, 0x6c19, 0 },
  579. { 0x6d6e, 0x6d6e, 0x6d6e, 0 },
  580. { 0x6ebd, 0x6ebd, 0x6ebd, 0 },
  581. { 0x7008, 0x7008, 0x7008, 0 },
  582. { 0x714d, 0x714d, 0x714d, 0 },
  583. { 0x728f, 0x728f, 0x728f, 0 },
  584. { 0x73cc, 0x73cc, 0x73cc, 0 },
  585. { 0x7504, 0x7504, 0x7504, 0 },
  586. { 0x7639, 0x7639, 0x7639, 0 },
  587. { 0x776a, 0x776a, 0x776a, 0 },
  588. { 0x7897, 0x7897, 0x7897, 0 },
  589. { 0x79c1, 0x79c1, 0x79c1, 0 },
  590. { 0x7ae7, 0x7ae7, 0x7ae7, 0 },
  591. { 0x7c09, 0x7c09, 0x7c09, 0 },
  592. { 0x7d28, 0x7d28, 0x7d28, 0 },
  593. { 0x7e44, 0x7e44, 0x7e44, 0 },
  594. { 0x7f5d, 0x7f5d, 0x7f5d, 0 },
  595. { 0x8073, 0x8073, 0x8073, 0 },
  596. { 0x8186, 0x8186, 0x8186, 0 },
  597. { 0x8296, 0x8296, 0x8296, 0 },
  598. { 0x83a4, 0x83a4, 0x83a4, 0 },
  599. { 0x84ae, 0x84ae, 0x84ae, 0 },
  600. { 0x85b6, 0x85b6, 0x85b6, 0 },
  601. { 0x86bc, 0x86bc, 0x86bc, 0 },
  602. { 0x87bf, 0x87bf, 0x87bf, 0 },
  603. { 0x88bf, 0x88bf, 0x88bf, 0 },
  604. { 0x89be, 0x89be, 0x89be, 0 },
  605. { 0x8ab9, 0x8ab9, 0x8ab9, 0 },
  606. { 0x8bb3, 0x8bb3, 0x8bb3, 0 },
  607. { 0x8cab, 0x8cab, 0x8cab, 0 },
  608. { 0x8da0, 0x8da0, 0x8da0, 0 },
  609. { 0x8e93, 0x8e93, 0x8e93, 0 },
  610. { 0x8f84, 0x8f84, 0x8f84, 0 },
  611. { 0x9073, 0x9073, 0x9073, 0 },
  612. { 0x9161, 0x9161, 0x9161, 0 },
  613. { 0x924c, 0x924c, 0x924c, 0 },
  614. { 0x9335, 0x9335, 0x9335, 0 },
  615. { 0x941d, 0x941d, 0x941d, 0 },
  616. { 0x9503, 0x9503, 0x9503, 0 },
  617. { 0x95e7, 0x95e7, 0x95e7, 0 },
  618. { 0x96c9, 0x96c9, 0x96c9, 0 },
  619. { 0x97aa, 0x97aa, 0x97aa, 0 },
  620. { 0x9889, 0x9889, 0x9889, 0 },
  621. { 0x9966, 0x9966, 0x9966, 0 },
  622. { 0x9a42, 0x9a42, 0x9a42, 0 },
  623. { 0x9b1c, 0x9b1c, 0x9b1c, 0 },
  624. { 0x9bf5, 0x9bf5, 0x9bf5, 0 },
  625. { 0x9ccc, 0x9ccc, 0x9ccc, 0 },
  626. { 0x9da1, 0x9da1, 0x9da1, 0 },
  627. { 0x9e76, 0x9e76, 0x9e76, 0 },
  628. { 0x9f49, 0x9f49, 0x9f49, 0 },
  629. { 0xa01a, 0xa01a, 0xa01a, 0 },
  630. { 0xa0ea, 0xa0ea, 0xa0ea, 0 },
  631. { 0xa1b9, 0xa1b9, 0xa1b9, 0 },
  632. { 0xa286, 0xa286, 0xa286, 0 },
  633. { 0xa352, 0xa352, 0xa352, 0 },
  634. { 0xa41d, 0xa41d, 0xa41d, 0 },
  635. { 0xa4e7, 0xa4e7, 0xa4e7, 0 },
  636. { 0xa5af, 0xa5af, 0xa5af, 0 },
  637. { 0xa676, 0xa676, 0xa676, 0 },
  638. { 0xa73c, 0xa73c, 0xa73c, 0 },
  639. { 0xa801, 0xa801, 0xa801, 0 },
  640. { 0xa8c5, 0xa8c5, 0xa8c5, 0 },
  641. { 0xa987, 0xa987, 0xa987, 0 },
  642. { 0xaa48, 0xaa48, 0xaa48, 0 },
  643. { 0xab09, 0xab09, 0xab09, 0 },
  644. { 0xabc8, 0xabc8, 0xabc8, 0 },
  645. { 0xac86, 0xac86, 0xac86, 0 },
  646. { 0xad43, 0xad43, 0xad43, 0 },
  647. { 0xadff, 0xadff, 0xadff, 0 },
  648. { 0xaeba, 0xaeba, 0xaeba, 0 },
  649. { 0xaf74, 0xaf74, 0xaf74, 0 },
  650. { 0xb02d, 0xb02d, 0xb02d, 0 },
  651. { 0xb0e5, 0xb0e5, 0xb0e5, 0 },
  652. { 0xb19c, 0xb19c, 0xb19c, 0 },
  653. { 0xb252, 0xb252, 0xb252, 0 },
  654. { 0xb307, 0xb307, 0xb307, 0 },
  655. { 0xb3bb, 0xb3bb, 0xb3bb, 0 },
  656. { 0xb46f, 0xb46f, 0xb46f, 0 },
  657. { 0xb521, 0xb521, 0xb521, 0 },
  658. { 0xb5d3, 0xb5d3, 0xb5d3, 0 },
  659. { 0xb683, 0xb683, 0xb683, 0 },
  660. { 0xb733, 0xb733, 0xb733, 0 },
  661. { 0xb7e2, 0xb7e2, 0xb7e2, 0 },
  662. { 0xb890, 0xb890, 0xb890, 0 },
  663. { 0xb93d, 0xb93d, 0xb93d, 0 },
  664. { 0xb9ea, 0xb9ea, 0xb9ea, 0 },
  665. { 0xba96, 0xba96, 0xba96, 0 },
  666. { 0xbb40, 0xbb40, 0xbb40, 0 },
  667. { 0xbbea, 0xbbea, 0xbbea, 0 },
  668. { 0xbc94, 0xbc94, 0xbc94, 0 },
  669. { 0xbd3c, 0xbd3c, 0xbd3c, 0 },
  670. { 0xbde4, 0xbde4, 0xbde4, 0 },
  671. { 0xbe8b, 0xbe8b, 0xbe8b, 0 },
  672. { 0xbf31, 0xbf31, 0xbf31, 0 },
  673. { 0xbfd7, 0xbfd7, 0xbfd7, 0 },
  674. { 0xc07b, 0xc07b, 0xc07b, 0 },
  675. { 0xc120, 0xc120, 0xc120, 0 },
  676. { 0xc1c3, 0xc1c3, 0xc1c3, 0 },
  677. { 0xc266, 0xc266, 0xc266, 0 },
  678. { 0xc308, 0xc308, 0xc308, 0 },
  679. { 0xc3a9, 0xc3a9, 0xc3a9, 0 },
  680. { 0xc449, 0xc449, 0xc449, 0 },
  681. { 0xc4e9, 0xc4e9, 0xc4e9, 0 },
  682. { 0xc589, 0xc589, 0xc589, 0 },
  683. { 0xc627, 0xc627, 0xc627, 0 },
  684. { 0xc6c5, 0xc6c5, 0xc6c5, 0 },
  685. { 0xc763, 0xc763, 0xc763, 0 },
  686. { 0xc7ff, 0xc7ff, 0xc7ff, 0 },
  687. { 0xc89b, 0xc89b, 0xc89b, 0 },
  688. { 0xc937, 0xc937, 0xc937, 0 },
  689. { 0xc9d2, 0xc9d2, 0xc9d2, 0 },
  690. { 0xca6c, 0xca6c, 0xca6c, 0 },
  691. { 0xcb06, 0xcb06, 0xcb06, 0 },
  692. { 0xcb9f, 0xcb9f, 0xcb9f, 0 },
  693. { 0xcc37, 0xcc37, 0xcc37, 0 },
  694. { 0xcccf, 0xcccf, 0xcccf, 0 },
  695. { 0xcd66, 0xcd66, 0xcd66, 0 },
  696. { 0xcdfd, 0xcdfd, 0xcdfd, 0 },
  697. { 0xce93, 0xce93, 0xce93, 0 },
  698. { 0xcf29, 0xcf29, 0xcf29, 0 },
  699. { 0xcfbe, 0xcfbe, 0xcfbe, 0 },
  700. { 0xd053, 0xd053, 0xd053, 0 },
  701. { 0xd0e7, 0xd0e7, 0xd0e7, 0 },
  702. { 0xd17a, 0xd17a, 0xd17a, 0 },
  703. { 0xd20d, 0xd20d, 0xd20d, 0 },
  704. { 0xd2a0, 0xd2a0, 0xd2a0, 0 },
  705. { 0xd331, 0xd331, 0xd331, 0 },
  706. { 0xd3c3, 0xd3c3, 0xd3c3, 0 },
  707. { 0xd454, 0xd454, 0xd454, 0 },
  708. { 0xd4e4, 0xd4e4, 0xd4e4, 0 },
  709. { 0xd574, 0xd574, 0xd574, 0 },
  710. { 0xd603, 0xd603, 0xd603, 0 },
  711. { 0xd692, 0xd692, 0xd692, 0 },
  712. { 0xd720, 0xd720, 0xd720, 0 },
  713. { 0xd7ae, 0xd7ae, 0xd7ae, 0 },
  714. { 0xd83c, 0xd83c, 0xd83c, 0 },
  715. { 0xd8c9, 0xd8c9, 0xd8c9, 0 },
  716. { 0xd955, 0xd955, 0xd955, 0 },
  717. { 0xd9e1, 0xd9e1, 0xd9e1, 0 },
  718. { 0xda6d, 0xda6d, 0xda6d, 0 },
  719. { 0xdaf8, 0xdaf8, 0xdaf8, 0 },
  720. { 0xdb83, 0xdb83, 0xdb83, 0 },
  721. { 0xdc0d, 0xdc0d, 0xdc0d, 0 },
  722. { 0xdc97, 0xdc97, 0xdc97, 0 },
  723. { 0xdd20, 0xdd20, 0xdd20, 0 },
  724. { 0xdda9, 0xdda9, 0xdda9, 0 },
  725. { 0xde31, 0xde31, 0xde31, 0 },
  726. { 0xdeb9, 0xdeb9, 0xdeb9, 0 },
  727. { 0xdf41, 0xdf41, 0xdf41, 0 },
  728. { 0xdfc8, 0xdfc8, 0xdfc8, 0 },
  729. { 0xe04f, 0xe04f, 0xe04f, 0 },
  730. { 0xe0d5, 0xe0d5, 0xe0d5, 0 },
  731. { 0xe15b, 0xe15b, 0xe15b, 0 },
  732. { 0xe1e0, 0xe1e0, 0xe1e0, 0 },
  733. { 0xe266, 0xe266, 0xe266, 0 },
  734. { 0xe2ea, 0xe2ea, 0xe2ea, 0 },
  735. { 0xe36f, 0xe36f, 0xe36f, 0 },
  736. { 0xe3f3, 0xe3f3, 0xe3f3, 0 },
  737. { 0xe476, 0xe476, 0xe476, 0 },
  738. { 0xe4f9, 0xe4f9, 0xe4f9, 0 },
  739. { 0xe57c, 0xe57c, 0xe57c, 0 },
  740. { 0xe5fe, 0xe5fe, 0xe5fe, 0 },
  741. { 0xe680, 0xe680, 0xe680, 0 },
  742. { 0xe702, 0xe702, 0xe702, 0 },
  743. { 0xe783, 0xe783, 0xe783, 0 },
  744. { 0xe804, 0xe804, 0xe804, 0 },
  745. { 0xe884, 0xe884, 0xe884, 0 },
  746. { 0xe905, 0xe905, 0xe905, 0 },
  747. { 0xe984, 0xe984, 0xe984, 0 },
  748. { 0xea04, 0xea04, 0xea04, 0 },
  749. { 0xea83, 0xea83, 0xea83, 0 },
  750. { 0xeb02, 0xeb02, 0xeb02, 0 },
  751. { 0xeb80, 0xeb80, 0xeb80, 0 },
  752. { 0xebfe, 0xebfe, 0xebfe, 0 },
  753. { 0xec7b, 0xec7b, 0xec7b, 0 },
  754. { 0xecf9, 0xecf9, 0xecf9, 0 },
  755. { 0xed76, 0xed76, 0xed76, 0 },
  756. { 0xedf2, 0xedf2, 0xedf2, 0 },
  757. { 0xee6f, 0xee6f, 0xee6f, 0 },
  758. { 0xeeeb, 0xeeeb, 0xeeeb, 0 },
  759. { 0xef66, 0xef66, 0xef66, 0 },
  760. { 0xefe2, 0xefe2, 0xefe2, 0 },
  761. { 0xf05d, 0xf05d, 0xf05d, 0 },
  762. { 0xf0d7, 0xf0d7, 0xf0d7, 0 },
  763. { 0xf152, 0xf152, 0xf152, 0 },
  764. { 0xf1cc, 0xf1cc, 0xf1cc, 0 },
  765. { 0xf245, 0xf245, 0xf245, 0 },
  766. { 0xf2bf, 0xf2bf, 0xf2bf, 0 },
  767. { 0xf338, 0xf338, 0xf338, 0 },
  768. { 0xf3b0, 0xf3b0, 0xf3b0, 0 },
  769. { 0xf429, 0xf429, 0xf429, 0 },
  770. { 0xf4a1, 0xf4a1, 0xf4a1, 0 },
  771. { 0xf519, 0xf519, 0xf519, 0 },
  772. { 0xf590, 0xf590, 0xf590, 0 },
  773. { 0xf608, 0xf608, 0xf608, 0 },
  774. { 0xf67e, 0xf67e, 0xf67e, 0 },
  775. { 0xf6f5, 0xf6f5, 0xf6f5, 0 },
  776. { 0xf76b, 0xf76b, 0xf76b, 0 },
  777. { 0xf7e1, 0xf7e1, 0xf7e1, 0 },
  778. { 0xf857, 0xf857, 0xf857, 0 },
  779. { 0xf8cd, 0xf8cd, 0xf8cd, 0 },
  780. { 0xf942, 0xf942, 0xf942, 0 },
  781. { 0xf9b7, 0xf9b7, 0xf9b7, 0 },
  782. { 0xfa2b, 0xfa2b, 0xfa2b, 0 },
  783. { 0xfaa0, 0xfaa0, 0xfaa0, 0 },
  784. { 0xfb14, 0xfb14, 0xfb14, 0 },
  785. { 0xfb88, 0xfb88, 0xfb88, 0 },
  786. { 0xfbfb, 0xfbfb, 0xfbfb, 0 },
  787. { 0xfc6e, 0xfc6e, 0xfc6e, 0 },
  788. { 0xfce1, 0xfce1, 0xfce1, 0 },
  789. { 0xfd54, 0xfd54, 0xfd54, 0 },
  790. { 0xfdc6, 0xfdc6, 0xfdc6, 0 },
  791. { 0xfe39, 0xfe39, 0xfe39, 0 },
  792. { 0xfeaa, 0xfeaa, 0xfeaa, 0 },
  793. { 0xff1c, 0xff1c, 0xff1c, 0 },
  794. { 0xff8d, 0xff8d, 0xff8d, 0 },
  795. { 0xffff, 0xffff, 0xffff, 0 },
  796. };
  797. const struct vkms_color_lut srgb_inv_eotf = {
  798. .base = srgb_inv_array,
  799. .lut_length = LUT_SIZE,
  800. .channel_value2index_ratio = 0xff00ffll
  801. };
  802. EXPORT_SYMBOL(srgb_inv_eotf);