gc_hal_raster.h 24 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030
  1. /****************************************************************************
  2. *
  3. * Copyright (c) 2005 - 2014 by Vivante Corp. All rights reserved.
  4. *
  5. * The material in this file is confidential and contains trade secrets
  6. * of Vivante Corporation. This is proprietary information owned by
  7. * Vivante Corporation. No part of this work may be disclosed,
  8. * reproduced, copied, transmitted, or used in any way for any purpose,
  9. * without the express written permission of Vivante Corporation.
  10. *
  11. *****************************************************************************/
  12. #ifndef __gc_hal_raster_h_
  13. #define __gc_hal_raster_h_
  14. #include "gc_hal_enum.h"
  15. #include "gc_hal_types.h"
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. /******************************************************************************\
  20. ****************************** Object Declarations *****************************
  21. \******************************************************************************/
  22. typedef struct _gcoBRUSH * gcoBRUSH;
  23. typedef struct _gcoBRUSH_CACHE * gcoBRUSH_CACHE;
  24. /******************************************************************************\
  25. ******************************** gcoBRUSH Object *******************************
  26. \******************************************************************************/
  27. /* Create a new solid color gcoBRUSH object. */
  28. gceSTATUS
  29. gcoBRUSH_ConstructSingleColor(
  30. IN gcoHAL Hal,
  31. IN gctUINT32 ColorConvert,
  32. IN gctUINT32 Color,
  33. IN gctUINT64 Mask,
  34. gcoBRUSH * Brush
  35. );
  36. /* Create a new monochrome gcoBRUSH object. */
  37. gceSTATUS
  38. gcoBRUSH_ConstructMonochrome(
  39. IN gcoHAL Hal,
  40. IN gctUINT32 OriginX,
  41. IN gctUINT32 OriginY,
  42. IN gctUINT32 ColorConvert,
  43. IN gctUINT32 FgColor,
  44. IN gctUINT32 BgColor,
  45. IN gctUINT64 Bits,
  46. IN gctUINT64 Mask,
  47. gcoBRUSH * Brush
  48. );
  49. /* Create a color gcoBRUSH object. */
  50. gceSTATUS
  51. gcoBRUSH_ConstructColor(
  52. IN gcoHAL Hal,
  53. IN gctUINT32 OriginX,
  54. IN gctUINT32 OriginY,
  55. IN gctPOINTER Address,
  56. IN gceSURF_FORMAT Format,
  57. IN gctUINT64 Mask,
  58. gcoBRUSH * Brush
  59. );
  60. /* Destroy an gcoBRUSH object. */
  61. gceSTATUS
  62. gcoBRUSH_Destroy(
  63. IN gcoBRUSH Brush
  64. );
  65. /******************************************************************************\
  66. ******************************** gcoSURF Object *******************************
  67. \******************************************************************************/
  68. /* Set cipping rectangle. */
  69. gceSTATUS
  70. gcoSURF_SetClipping(
  71. IN gcoSURF Surface
  72. );
  73. /* Clear one or more rectangular areas. */
  74. gceSTATUS
  75. gcoSURF_Clear2D(
  76. IN gcoSURF DestSurface,
  77. IN gctUINT32 RectCount,
  78. IN gcsRECT_PTR DestRect,
  79. IN gctUINT32 LoColor,
  80. IN gctUINT32 HiColor
  81. );
  82. /* Draw one or more Bresenham lines. */
  83. gceSTATUS
  84. gcoSURF_Line(
  85. IN gcoSURF Surface,
  86. IN gctUINT32 LineCount,
  87. IN gcsRECT_PTR Position,
  88. IN gcoBRUSH Brush,
  89. IN gctUINT8 FgRop,
  90. IN gctUINT8 BgRop
  91. );
  92. /* Generic rectangular blit. */
  93. gceSTATUS
  94. gcoSURF_Blit(
  95. IN OPTIONAL gcoSURF SrcSurface,
  96. IN gcoSURF DestSurface,
  97. IN gctUINT32 RectCount,
  98. IN OPTIONAL gcsRECT_PTR SrcRect,
  99. IN gcsRECT_PTR DestRect,
  100. IN OPTIONAL gcoBRUSH Brush,
  101. IN gctUINT8 FgRop,
  102. IN gctUINT8 BgRop,
  103. IN OPTIONAL gceSURF_TRANSPARENCY Transparency,
  104. IN OPTIONAL gctUINT32 TransparencyColor,
  105. IN OPTIONAL gctPOINTER Mask,
  106. IN OPTIONAL gceSURF_MONOPACK MaskPack
  107. );
  108. /* Monochrome blit. */
  109. gceSTATUS
  110. gcoSURF_MonoBlit(
  111. IN gcoSURF DestSurface,
  112. IN gctPOINTER Source,
  113. IN gceSURF_MONOPACK SourcePack,
  114. IN gcsPOINT_PTR SourceSize,
  115. IN gcsPOINT_PTR SourceOrigin,
  116. IN gcsRECT_PTR DestRect,
  117. IN OPTIONAL gcoBRUSH Brush,
  118. IN gctUINT8 FgRop,
  119. IN gctUINT8 BgRop,
  120. IN gctBOOL ColorConvert,
  121. IN gctUINT8 MonoTransparency,
  122. IN gceSURF_TRANSPARENCY Transparency,
  123. IN gctUINT32 FgColor,
  124. IN gctUINT32 BgColor
  125. );
  126. /* Filter blit. */
  127. gceSTATUS
  128. gcoSURF_FilterBlit(
  129. IN gcoSURF SrcSurface,
  130. IN gcoSURF DestSurface,
  131. IN gcsRECT_PTR SrcRect,
  132. IN gcsRECT_PTR DestRect,
  133. IN gcsRECT_PTR DestSubRect
  134. );
  135. /* Enable alpha blending engine in the hardware and disengage the ROP engine. */
  136. gceSTATUS
  137. gcoSURF_EnableAlphaBlend(
  138. IN gcoSURF Surface,
  139. IN gctUINT8 SrcGlobalAlphaValue,
  140. IN gctUINT8 DstGlobalAlphaValue,
  141. IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode,
  142. IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode,
  143. IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode,
  144. IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode,
  145. IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode,
  146. IN gceSURF_BLEND_FACTOR_MODE DstFactorMode,
  147. IN gceSURF_PIXEL_COLOR_MODE SrcColorMode,
  148. IN gceSURF_PIXEL_COLOR_MODE DstColorMode
  149. );
  150. /* Disable alpha blending engine in the hardware and engage the ROP engine. */
  151. gceSTATUS
  152. gcoSURF_DisableAlphaBlend(
  153. IN gcoSURF Surface
  154. );
  155. /* Copy a rectangular area with format conversion. */
  156. gceSTATUS
  157. gcoSURF_CopyPixels(
  158. IN gcoSURF Source,
  159. IN gcoSURF Target,
  160. IN gctINT SourceX,
  161. IN gctINT SourceY,
  162. IN gctINT TargetX,
  163. IN gctINT TargetY,
  164. IN gctINT Width,
  165. IN gctINT Height
  166. );
  167. /* Read surface pixel. */
  168. gceSTATUS
  169. gcoSURF_ReadPixel(
  170. IN gcoSURF Surface,
  171. IN gctPOINTER Memory,
  172. IN gctINT X,
  173. IN gctINT Y,
  174. IN gceSURF_FORMAT Format,
  175. OUT gctPOINTER PixelValue
  176. );
  177. /* Write surface pixel. */
  178. gceSTATUS
  179. gcoSURF_WritePixel(
  180. IN gcoSURF Surface,
  181. IN gctPOINTER Memory,
  182. IN gctINT X,
  183. IN gctINT Y,
  184. IN gceSURF_FORMAT Format,
  185. IN gctPOINTER PixelValue
  186. );
  187. gceSTATUS
  188. gcoSURF_SetDither(
  189. IN gcoSURF Surface,
  190. IN gctBOOL Dither
  191. );
  192. gceSTATUS
  193. gcoSURF_Set2DSource(
  194. gcoSURF Surface,
  195. gceSURF_ROTATION Rotation
  196. );
  197. gceSTATUS
  198. gcoSURF_Set2DTarget(
  199. gcoSURF Surface,
  200. gceSURF_ROTATION Rotation
  201. );
  202. /******************************************************************************\
  203. ********************************** gco2D Object *********************************
  204. \******************************************************************************/
  205. /* Construct a new gco2D object. */
  206. gceSTATUS
  207. gco2D_Construct(
  208. IN gcoHAL Hal,
  209. OUT gco2D * Hardware
  210. );
  211. /* Destroy an gco2D object. */
  212. gceSTATUS
  213. gco2D_Destroy(
  214. IN gco2D Hardware
  215. );
  216. /* Sets the maximum number of brushes in the brush cache. */
  217. gceSTATUS
  218. gco2D_SetBrushLimit(
  219. IN gco2D Hardware,
  220. IN gctUINT MaxCount
  221. );
  222. /* Flush the brush. */
  223. gceSTATUS
  224. gco2D_FlushBrush(
  225. IN gco2D Engine,
  226. IN gcoBRUSH Brush,
  227. IN gceSURF_FORMAT Format
  228. );
  229. /* Program the specified solid color brush. */
  230. gceSTATUS
  231. gco2D_LoadSolidBrush(
  232. IN gco2D Engine,
  233. IN gceSURF_FORMAT Format,
  234. IN gctUINT32 ColorConvert,
  235. IN gctUINT32 Color,
  236. IN gctUINT64 Mask
  237. );
  238. gceSTATUS
  239. gco2D_LoadMonochromeBrush(
  240. IN gco2D Engine,
  241. IN gctUINT32 OriginX,
  242. IN gctUINT32 OriginY,
  243. IN gctUINT32 ColorConvert,
  244. IN gctUINT32 FgColor,
  245. IN gctUINT32 BgColor,
  246. IN gctUINT64 Bits,
  247. IN gctUINT64 Mask
  248. );
  249. gceSTATUS
  250. gco2D_LoadColorBrush(
  251. IN gco2D Engine,
  252. IN gctUINT32 OriginX,
  253. IN gctUINT32 OriginY,
  254. IN gctUINT32 Address,
  255. IN gceSURF_FORMAT Format,
  256. IN gctUINT64 Mask
  257. );
  258. /* Configure monochrome source. */
  259. gceSTATUS
  260. gco2D_SetMonochromeSource(
  261. IN gco2D Engine,
  262. IN gctBOOL ColorConvert,
  263. IN gctUINT8 MonoTransparency,
  264. IN gceSURF_MONOPACK DataPack,
  265. IN gctBOOL CoordRelative,
  266. IN gceSURF_TRANSPARENCY Transparency,
  267. IN gctUINT32 FgColor,
  268. IN gctUINT32 BgColor
  269. );
  270. /* Configure color source. */
  271. gceSTATUS
  272. gco2D_SetColorSource(
  273. IN gco2D Engine,
  274. IN gctUINT32 Address,
  275. IN gctUINT32 Stride,
  276. IN gceSURF_FORMAT Format,
  277. IN gceSURF_ROTATION Rotation,
  278. IN gctUINT32 SurfaceWidth,
  279. IN gctBOOL CoordRelative,
  280. IN gceSURF_TRANSPARENCY Transparency,
  281. IN gctUINT32 TransparencyColor
  282. );
  283. /* Configure color source extension for full rotation. */
  284. gceSTATUS
  285. gco2D_SetColorSourceEx(
  286. IN gco2D Engine,
  287. IN gctUINT32 Address,
  288. IN gctUINT32 Stride,
  289. IN gceSURF_FORMAT Format,
  290. IN gceSURF_ROTATION Rotation,
  291. IN gctUINT32 SurfaceWidth,
  292. IN gctUINT32 SurfaceHeight,
  293. IN gctBOOL CoordRelative,
  294. IN gceSURF_TRANSPARENCY Transparency,
  295. IN gctUINT32 TransparencyColor
  296. );
  297. /* Configure color source. */
  298. gceSTATUS
  299. gco2D_SetColorSourceAdvanced(
  300. IN gco2D Engine,
  301. IN gctUINT32 Address,
  302. IN gctUINT32 Stride,
  303. IN gceSURF_FORMAT Format,
  304. IN gceSURF_ROTATION Rotation,
  305. IN gctUINT32 SurfaceWidth,
  306. IN gctUINT32 SurfaceHeight,
  307. IN gctBOOL CoordRelative
  308. );
  309. gceSTATUS
  310. gco2D_SetColorSourceN(
  311. IN gco2D Engine,
  312. IN gctUINT32 Address,
  313. IN gctUINT32 Stride,
  314. IN gceSURF_FORMAT Format,
  315. IN gceSURF_ROTATION Rotation,
  316. IN gctUINT32 SurfaceWidth,
  317. IN gctUINT32 SurfaceHeight,
  318. IN gctUINT32 SurfaceNumber
  319. );
  320. /* Configure masked color source. */
  321. gceSTATUS
  322. gco2D_SetMaskedSource(
  323. IN gco2D Engine,
  324. IN gctUINT32 Address,
  325. IN gctUINT32 Stride,
  326. IN gceSURF_FORMAT Format,
  327. IN gctBOOL CoordRelative,
  328. IN gceSURF_MONOPACK MaskPack
  329. );
  330. /* Configure masked color source extension for full rotation. */
  331. gceSTATUS
  332. gco2D_SetMaskedSourceEx(
  333. IN gco2D Engine,
  334. IN gctUINT32 Address,
  335. IN gctUINT32 Stride,
  336. IN gceSURF_FORMAT Format,
  337. IN gctBOOL CoordRelative,
  338. IN gceSURF_MONOPACK MaskPack,
  339. IN gceSURF_ROTATION Rotation,
  340. IN gctUINT32 SurfaceWidth,
  341. IN gctUINT32 SurfaceHeight
  342. );
  343. /* Setup the source rectangle. */
  344. gceSTATUS
  345. gco2D_SetSource(
  346. IN gco2D Engine,
  347. IN gcsRECT_PTR SrcRect
  348. );
  349. /* Set clipping rectangle. */
  350. gceSTATUS
  351. gco2D_SetClipping(
  352. IN gco2D Engine,
  353. IN gcsRECT_PTR Rect
  354. );
  355. /* Configure destination. */
  356. gceSTATUS
  357. gco2D_SetTarget(
  358. IN gco2D Engine,
  359. IN gctUINT32 Address,
  360. IN gctUINT32 Stride,
  361. IN gceSURF_ROTATION Rotation,
  362. IN gctUINT32 SurfaceWidth
  363. );
  364. /* Configure destination extension for full rotation. */
  365. gceSTATUS
  366. gco2D_SetTargetEx(
  367. IN gco2D Engine,
  368. IN gctUINT32 Address,
  369. IN gctUINT32 Stride,
  370. IN gceSURF_ROTATION Rotation,
  371. IN gctUINT32 SurfaceWidth,
  372. IN gctUINT32 SurfaceHeight
  373. );
  374. /* Calculate and program the stretch factors. */
  375. gceSTATUS
  376. gco2D_CalcStretchFactor(
  377. IN gco2D Engine,
  378. IN gctINT32 SrcSize,
  379. IN gctINT32 DestSize,
  380. OUT gctUINT32_PTR Factor
  381. );
  382. gceSTATUS
  383. gco2D_SetStretchFactors(
  384. IN gco2D Engine,
  385. IN gctUINT32 HorFactor,
  386. IN gctUINT32 VerFactor
  387. );
  388. /* Calculate and program the stretch factors based on the rectangles. */
  389. gceSTATUS
  390. gco2D_SetStretchRectFactors(
  391. IN gco2D Engine,
  392. IN gcsRECT_PTR SrcRect,
  393. IN gcsRECT_PTR DestRect
  394. );
  395. /* Create a new solid color gcoBRUSH object. */
  396. gceSTATUS
  397. gco2D_ConstructSingleColorBrush(
  398. IN gco2D Engine,
  399. IN gctUINT32 ColorConvert,
  400. IN gctUINT32 Color,
  401. IN gctUINT64 Mask,
  402. gcoBRUSH * Brush
  403. );
  404. /* Create a new monochrome gcoBRUSH object. */
  405. gceSTATUS
  406. gco2D_ConstructMonochromeBrush(
  407. IN gco2D Engine,
  408. IN gctUINT32 OriginX,
  409. IN gctUINT32 OriginY,
  410. IN gctUINT32 ColorConvert,
  411. IN gctUINT32 FgColor,
  412. IN gctUINT32 BgColor,
  413. IN gctUINT64 Bits,
  414. IN gctUINT64 Mask,
  415. gcoBRUSH * Brush
  416. );
  417. /* Create a color gcoBRUSH object. */
  418. gceSTATUS
  419. gco2D_ConstructColorBrush(
  420. IN gco2D Engine,
  421. IN gctUINT32 OriginX,
  422. IN gctUINT32 OriginY,
  423. IN gctPOINTER Address,
  424. IN gceSURF_FORMAT Format,
  425. IN gctUINT64 Mask,
  426. gcoBRUSH * Brush
  427. );
  428. /* Clear one or more rectangular areas. */
  429. gceSTATUS
  430. gco2D_Clear(
  431. IN gco2D Engine,
  432. IN gctUINT32 RectCount,
  433. IN gcsRECT_PTR Rect,
  434. IN gctUINT32 Color32,
  435. IN gctUINT8 FgRop,
  436. IN gctUINT8 BgRop,
  437. IN gceSURF_FORMAT DestFormat
  438. );
  439. /* Draw one or more Bresenham lines. */
  440. gceSTATUS
  441. gco2D_Line(
  442. IN gco2D Engine,
  443. IN gctUINT32 LineCount,
  444. IN gcsRECT_PTR Position,
  445. IN gcoBRUSH Brush,
  446. IN gctUINT8 FgRop,
  447. IN gctUINT8 BgRop,
  448. IN gceSURF_FORMAT DestFormat
  449. );
  450. /* Draw one or more Bresenham lines based on the 32-bit color. */
  451. gceSTATUS
  452. gco2D_ColorLine(
  453. IN gco2D Engine,
  454. IN gctUINT32 LineCount,
  455. IN gcsRECT_PTR Position,
  456. IN gctUINT32 Color32,
  457. IN gctUINT8 FgRop,
  458. IN gctUINT8 BgRop,
  459. IN gceSURF_FORMAT DestFormat
  460. );
  461. /* Generic blit. */
  462. gceSTATUS
  463. gco2D_Blit(
  464. IN gco2D Engine,
  465. IN gctUINT32 RectCount,
  466. IN gcsRECT_PTR Rect,
  467. IN gctUINT8 FgRop,
  468. IN gctUINT8 BgRop,
  469. IN gceSURF_FORMAT DestFormat
  470. );
  471. gceSTATUS
  472. gco2D_Blend(
  473. IN gco2D Engine,
  474. IN gctUINT32 SrcCount,
  475. IN gctUINT32 RectCount,
  476. IN gcsRECT_PTR Rect,
  477. IN gctUINT8 FgRop,
  478. IN gctUINT8 BgRop,
  479. IN gceSURF_FORMAT DestFormat
  480. );
  481. /* Batch blit. */
  482. gceSTATUS
  483. gco2D_BatchBlit(
  484. IN gco2D Engine,
  485. IN gctUINT32 RectCount,
  486. IN gcsRECT_PTR SrcRect,
  487. IN gcsRECT_PTR DestRect,
  488. IN gctUINT8 FgRop,
  489. IN gctUINT8 BgRop,
  490. IN gceSURF_FORMAT DestFormat
  491. );
  492. /* Stretch blit. */
  493. gceSTATUS
  494. gco2D_StretchBlit(
  495. IN gco2D Engine,
  496. IN gctUINT32 RectCount,
  497. IN gcsRECT_PTR Rect,
  498. IN gctUINT8 FgRop,
  499. IN gctUINT8 BgRop,
  500. IN gceSURF_FORMAT DestFormat
  501. );
  502. /* Monochrome blit. */
  503. gceSTATUS
  504. gco2D_MonoBlit(
  505. IN gco2D Engine,
  506. IN gctPOINTER StreamBits,
  507. IN gcsPOINT_PTR StreamSize,
  508. IN gcsRECT_PTR StreamRect,
  509. IN gceSURF_MONOPACK SrcStreamPack,
  510. IN gceSURF_MONOPACK DestStreamPack,
  511. IN gcsRECT_PTR DestRect,
  512. IN gctUINT32 FgRop,
  513. IN gctUINT32 BgRop,
  514. IN gceSURF_FORMAT DestFormat
  515. );
  516. gceSTATUS
  517. gco2D_MonoBlitEx(
  518. IN gco2D Engine,
  519. IN gctPOINTER StreamBits,
  520. IN gctINT32 StreamStride,
  521. IN gctINT32 StreamWidth,
  522. IN gctINT32 StreamHeight,
  523. IN gctINT32 StreamX,
  524. IN gctINT32 StreamY,
  525. IN gctUINT32 FgColor,
  526. IN gctUINT32 BgColor,
  527. IN gcsRECT_PTR SrcRect,
  528. IN gcsRECT_PTR DstRect,
  529. IN gctUINT8 FgRop,
  530. IN gctUINT8 BgRop
  531. );
  532. /* Set kernel size. */
  533. gceSTATUS
  534. gco2D_SetKernelSize(
  535. IN gco2D Engine,
  536. IN gctUINT8 HorKernelSize,
  537. IN gctUINT8 VerKernelSize
  538. );
  539. /* Set filter type. */
  540. gceSTATUS
  541. gco2D_SetFilterType(
  542. IN gco2D Engine,
  543. IN gceFILTER_TYPE FilterType
  544. );
  545. /* Set the filter kernel by user. */
  546. gceSTATUS
  547. gco2D_SetUserFilterKernel(
  548. IN gco2D Engine,
  549. IN gceFILTER_PASS_TYPE PassType,
  550. IN gctUINT16_PTR KernelArray
  551. );
  552. /* Select the pass(es) to be done for user defined filter. */
  553. gceSTATUS
  554. gco2D_EnableUserFilterPasses(
  555. IN gco2D Engine,
  556. IN gctBOOL HorPass,
  557. IN gctBOOL VerPass
  558. );
  559. /* Frees the temporary buffer allocated by filter blit operation. */
  560. gceSTATUS
  561. gco2D_FreeFilterBuffer(
  562. IN gco2D Engine
  563. );
  564. /* Filter blit. */
  565. gceSTATUS
  566. gco2D_FilterBlit(
  567. IN gco2D Engine,
  568. IN gctUINT32 SrcAddress,
  569. IN gctUINT SrcStride,
  570. IN gctUINT32 SrcUAddress,
  571. IN gctUINT SrcUStride,
  572. IN gctUINT32 SrcVAddress,
  573. IN gctUINT SrcVStride,
  574. IN gceSURF_FORMAT SrcFormat,
  575. IN gceSURF_ROTATION SrcRotation,
  576. IN gctUINT32 SrcSurfaceWidth,
  577. IN gcsRECT_PTR SrcRect,
  578. IN gctUINT32 DestAddress,
  579. IN gctUINT DestStride,
  580. IN gceSURF_FORMAT DestFormat,
  581. IN gceSURF_ROTATION DestRotation,
  582. IN gctUINT32 DestSurfaceWidth,
  583. IN gcsRECT_PTR DestRect,
  584. IN gcsRECT_PTR DestSubRect
  585. );
  586. /* Filter blit extension for full rotation. */
  587. gceSTATUS
  588. gco2D_FilterBlitEx(
  589. IN gco2D Engine,
  590. IN gctUINT32 SrcAddress,
  591. IN gctUINT SrcStride,
  592. IN gctUINT32 SrcUAddress,
  593. IN gctUINT SrcUStride,
  594. IN gctUINT32 SrcVAddress,
  595. IN gctUINT SrcVStride,
  596. IN gceSURF_FORMAT SrcFormat,
  597. IN gceSURF_ROTATION SrcRotation,
  598. IN gctUINT32 SrcSurfaceWidth,
  599. IN gctUINT32 SrcSurfaceHeight,
  600. IN gcsRECT_PTR SrcRect,
  601. IN gctUINT32 DestAddress,
  602. IN gctUINT DestStride,
  603. IN gceSURF_FORMAT DestFormat,
  604. IN gceSURF_ROTATION DestRotation,
  605. IN gctUINT32 DestSurfaceWidth,
  606. IN gctUINT32 DestSurfaceHeight,
  607. IN gcsRECT_PTR DestRect,
  608. IN gcsRECT_PTR DestSubRect
  609. );
  610. gceSTATUS
  611. gco2D_FilterBlitEx2(
  612. IN gco2D Engine,
  613. IN gctUINT32_PTR SrcAddresses,
  614. IN gctUINT32 SrcAddressNum,
  615. IN gctUINT32_PTR SrcStrides,
  616. IN gctUINT32 SrcStrideNum,
  617. IN gceTILING SrcTiling,
  618. IN gceSURF_FORMAT SrcFormat,
  619. IN gceSURF_ROTATION SrcRotation,
  620. IN gctUINT32 SrcSurfaceWidth,
  621. IN gctUINT32 SrcSurfaceHeight,
  622. IN gcsRECT_PTR SrcRect,
  623. IN gctUINT32_PTR DestAddresses,
  624. IN gctUINT32 DestAddressNum,
  625. IN gctUINT32_PTR DestStrides,
  626. IN gctUINT32 DestStrideNum,
  627. IN gceTILING DestTiling,
  628. IN gceSURF_FORMAT DestFormat,
  629. IN gceSURF_ROTATION DestRotation,
  630. IN gctUINT32 DestSurfaceWidth,
  631. IN gctUINT32 DestSurfaceHeight,
  632. IN gcsRECT_PTR DestRect,
  633. IN gcsRECT_PTR DestSubRect
  634. );
  635. /* Enable alpha blending engine in the hardware and disengage the ROP engine. */
  636. gceSTATUS
  637. gco2D_EnableAlphaBlend(
  638. IN gco2D Engine,
  639. IN gctUINT8 SrcGlobalAlphaValue,
  640. IN gctUINT8 DstGlobalAlphaValue,
  641. IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode,
  642. IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode,
  643. IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode,
  644. IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode,
  645. IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode,
  646. IN gceSURF_BLEND_FACTOR_MODE DstFactorMode,
  647. IN gceSURF_PIXEL_COLOR_MODE SrcColorMode,
  648. IN gceSURF_PIXEL_COLOR_MODE DstColorMode
  649. );
  650. /* Enable alpha blending engine in the hardware. */
  651. gceSTATUS
  652. gco2D_EnableAlphaBlendAdvanced(
  653. IN gco2D Engine,
  654. IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode,
  655. IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode,
  656. IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode,
  657. IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode,
  658. IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode,
  659. IN gceSURF_BLEND_FACTOR_MODE DstFactorMode
  660. );
  661. /* Enable alpha blending engine with Porter Duff rule. */
  662. gceSTATUS
  663. gco2D_SetPorterDuffBlending(
  664. IN gco2D Engine,
  665. IN gce2D_PORTER_DUFF_RULE Rule
  666. );
  667. /* Disable alpha blending engine in the hardware and engage the ROP engine. */
  668. gceSTATUS
  669. gco2D_DisableAlphaBlend(
  670. IN gco2D Engine
  671. );
  672. /* Retrieve the maximum number of 32-bit data chunks for a single DE command. */
  673. gctUINT32
  674. gco2D_GetMaximumDataCount(
  675. void
  676. );
  677. /* Retrieve the maximum number of rectangles, that can be passed in a single DE command. */
  678. gctUINT32
  679. gco2D_GetMaximumRectCount(
  680. void
  681. );
  682. /* Returns the pixel alignment of the surface. */
  683. gceSTATUS
  684. gco2D_GetPixelAlignment(
  685. gceSURF_FORMAT Format,
  686. gcsPOINT_PTR Alignment
  687. );
  688. /* Retrieve monochrome stream pack size. */
  689. gceSTATUS
  690. gco2D_GetPackSize(
  691. IN gceSURF_MONOPACK StreamPack,
  692. OUT gctUINT32 * PackWidth,
  693. OUT gctUINT32 * PackHeight
  694. );
  695. /* Flush the 2D pipeline. */
  696. gceSTATUS
  697. gco2D_Flush(
  698. IN gco2D Engine
  699. );
  700. /* Load 256-entry color table for INDEX8 source surfaces. */
  701. gceSTATUS
  702. gco2D_LoadPalette(
  703. IN gco2D Engine,
  704. IN gctUINT FirstIndex,
  705. IN gctUINT IndexCount,
  706. IN gctPOINTER ColorTable,
  707. IN gctBOOL ColorConvert
  708. );
  709. /* Enable/disable 2D BitBlt mirrorring. */
  710. gceSTATUS
  711. gco2D_SetBitBlitMirror(
  712. IN gco2D Engine,
  713. IN gctBOOL HorizontalMirror,
  714. IN gctBOOL VerticalMirror
  715. );
  716. /*
  717. * Set the transparency for source, destination and pattern.
  718. * It also enable or disable the DFB color key mode.
  719. */
  720. gceSTATUS
  721. gco2D_SetTransparencyAdvancedEx(
  722. IN gco2D Engine,
  723. IN gce2D_TRANSPARENCY SrcTransparency,
  724. IN gce2D_TRANSPARENCY DstTransparency,
  725. IN gce2D_TRANSPARENCY PatTransparency,
  726. IN gctBOOL EnableDFBColorKeyMode
  727. );
  728. /* Set the transparency for source, destination and pattern. */
  729. gceSTATUS
  730. gco2D_SetTransparencyAdvanced(
  731. IN gco2D Engine,
  732. IN gce2D_TRANSPARENCY SrcTransparency,
  733. IN gce2D_TRANSPARENCY DstTransparency,
  734. IN gce2D_TRANSPARENCY PatTransparency
  735. );
  736. /* Set the source color key. */
  737. gceSTATUS
  738. gco2D_SetSourceColorKeyAdvanced(
  739. IN gco2D Engine,
  740. IN gctUINT32 ColorKey
  741. );
  742. /* Set the source color key range. */
  743. gceSTATUS
  744. gco2D_SetSourceColorKeyRangeAdvanced(
  745. IN gco2D Engine,
  746. IN gctUINT32 ColorKeyLow,
  747. IN gctUINT32 ColorKeyHigh
  748. );
  749. /* Set the target color key. */
  750. gceSTATUS
  751. gco2D_SetTargetColorKeyAdvanced(
  752. IN gco2D Engine,
  753. IN gctUINT32 ColorKey
  754. );
  755. /* Set the target color key range. */
  756. gceSTATUS
  757. gco2D_SetTargetColorKeyRangeAdvanced(
  758. IN gco2D Engine,
  759. IN gctUINT32 ColorKeyLow,
  760. IN gctUINT32 ColorKeyHigh
  761. );
  762. /* Set the YUV color space mode. */
  763. gceSTATUS
  764. gco2D_SetYUVColorMode(
  765. IN gco2D Engine,
  766. IN gce2D_YUV_COLOR_MODE Mode
  767. );
  768. /* Setup the source global color value in ARGB8 format. */
  769. gceSTATUS gco2D_SetSourceGlobalColorAdvanced(
  770. IN gco2D Engine,
  771. IN gctUINT32 Color32
  772. );
  773. /* Setup the target global color value in ARGB8 format. */
  774. gceSTATUS gco2D_SetTargetGlobalColorAdvanced(
  775. IN gco2D Engine,
  776. IN gctUINT32 Color32
  777. );
  778. /* Setup the source and target pixel multiply modes. */
  779. gceSTATUS
  780. gco2D_SetPixelMultiplyModeAdvanced(
  781. IN gco2D Engine,
  782. IN gce2D_PIXEL_COLOR_MULTIPLY_MODE SrcPremultiplySrcAlpha,
  783. IN gce2D_PIXEL_COLOR_MULTIPLY_MODE DstPremultiplyDstAlpha,
  784. IN gce2D_GLOBAL_COLOR_MULTIPLY_MODE SrcPremultiplyGlobalMode,
  785. IN gce2D_PIXEL_COLOR_MULTIPLY_MODE DstDemultiplyDstAlpha
  786. );
  787. /* Set the GPU clock cycles after which the idle engine will keep auto-flushing. */
  788. gceSTATUS
  789. gco2D_SetAutoFlushCycles(
  790. IN gco2D Engine,
  791. IN gctUINT32 Cycles
  792. );
  793. #if VIVANTE_PROFILER
  794. /* Read the profile registers available in the 2D engine and sets them in the profile.
  795. The function will also reset the pixelsRendered counter every time.
  796. */
  797. gceSTATUS
  798. gco2D_ProfileEngine(
  799. IN gco2D Engine,
  800. OPTIONAL gcs2D_PROFILE_PTR Profile
  801. );
  802. #endif
  803. /* Enable or disable 2D dithering. */
  804. gceSTATUS
  805. gco2D_EnableDither(
  806. IN gco2D Engine,
  807. IN gctBOOL Enable
  808. );
  809. gceSTATUS
  810. gco2D_SetGenericSource(
  811. IN gco2D Engine,
  812. IN gctUINT32_PTR Addresses,
  813. IN gctUINT32 AddressNum,
  814. IN gctUINT32_PTR Strides,
  815. IN gctUINT32 StrideNum,
  816. IN gceTILING Tiling,
  817. IN gceSURF_FORMAT Format,
  818. IN gceSURF_ROTATION Rotation,
  819. IN gctUINT32 SurfaceWidth,
  820. IN gctUINT32 SurfaceHeight
  821. );
  822. gceSTATUS
  823. gco2D_SetGenericTarget(
  824. IN gco2D Engine,
  825. IN gctUINT32_PTR Addresses,
  826. IN gctUINT32 AddressNum,
  827. IN gctUINT32_PTR Strides,
  828. IN gctUINT32 StrideNum,
  829. IN gceTILING Tiling,
  830. IN gceSURF_FORMAT Format,
  831. IN gceSURF_ROTATION Rotation,
  832. IN gctUINT32 SurfaceWidth,
  833. IN gctUINT32 SurfaceHeight
  834. );
  835. gceSTATUS
  836. gco2D_SetCurrentSourceIndex(
  837. IN gco2D Engine,
  838. IN gctUINT32 SrcIndex
  839. );
  840. gceSTATUS
  841. gco2D_MultiSourceBlit(
  842. IN gco2D Engine,
  843. IN gctUINT32 SourceMask,
  844. IN gcsRECT_PTR DestRect,
  845. IN gctUINT32 RectCount
  846. );
  847. gceSTATUS
  848. gco2D_SetROP(
  849. IN gco2D Engine,
  850. IN gctUINT8 FgRop,
  851. IN gctUINT8 BgRop
  852. );
  853. gceSTATUS
  854. gco2D_SetGdiStretchMode(
  855. IN gco2D Engine,
  856. IN gctBOOL Enable
  857. );
  858. gceSTATUS
  859. gco2D_SetSourceTileStatus(
  860. IN gco2D Engine,
  861. IN gce2D_TILE_STATUS_CONFIG TSControl,
  862. IN gceSURF_FORMAT CompressedFormat,
  863. IN gctUINT32 ClearValue,
  864. IN gctUINT32 GpuAddress
  865. );
  866. gceSTATUS
  867. gco2D_SetTargetTileStatus(
  868. IN gco2D Engine,
  869. IN gce2D_TILE_STATUS_CONFIG TileStatusConfig,
  870. IN gceSURF_FORMAT CompressedFormat,
  871. IN gctUINT32 ClearValue,
  872. IN gctUINT32 GpuAddress
  873. );
  874. gceSTATUS
  875. gco2D_QueryU32(
  876. IN gco2D Engine,
  877. IN gce2D_QUERY Item,
  878. OUT gctUINT32_PTR Value
  879. );
  880. gceSTATUS
  881. gco2D_SetStateU32(
  882. IN gco2D Engine,
  883. IN gce2D_STATE State,
  884. IN gctUINT32 Value
  885. );
  886. gceSTATUS
  887. gco2D_SetStateArrayI32(
  888. IN gco2D Engine,
  889. IN gce2D_STATE State,
  890. IN gctINT32_PTR Array,
  891. IN gctINT32 ArraySize
  892. );
  893. gceSTATUS
  894. gco2D_SetStateArrayU32(
  895. IN gco2D Engine,
  896. IN gce2D_STATE State,
  897. IN gctUINT32_PTR Array,
  898. IN gctINT32 ArraySize
  899. );
  900. gceSTATUS
  901. gco2D_SetTargetRect(
  902. IN gco2D Engine,
  903. IN gcsRECT_PTR Rect
  904. );
  905. gceSTATUS
  906. gco2D_Set2DEngine(
  907. IN gco2D Engine
  908. );
  909. gceSTATUS
  910. gco2D_UnSet2DEngine(
  911. IN gco2D Engine
  912. );
  913. gceSTATUS
  914. gco2D_Get2DEngine(
  915. OUT gco2D * Engine
  916. );
  917. #ifdef __cplusplus
  918. }
  919. #endif
  920. #endif /* __gc_hal_raster_h_ */