ENGR00156850 gpu-viv: add gpu-viv driver source
[wandboard.git] / drivers / mxc / gpu-viv / hal / kernel / inc / gc_hal_engine.h
blob83897238c0bdb74d312e26cbdaa9b2c4a507b142
1 /****************************************************************************
3 * Copyright (C) 2005 - 2011 by Vivante Corp.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the license, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 *****************************************************************************/
24 #ifndef __gc_hal_engine_h_
25 #define __gc_hal_engine_h_
27 #ifndef VIVANTE_NO_3D
28 #include "gc_hal_types.h"
29 #include "gc_hal_enum.h"
31 #if gcdENABLE_VG
32 #include "gc_hal_engine_vg.h"
33 #endif
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
39 /******************************************************************************\
40 ****************************** Object Declarations *****************************
41 \******************************************************************************/
43 typedef struct _gcoSTREAM * gcoSTREAM;
44 typedef struct _gcoVERTEX * gcoVERTEX;
45 typedef struct _gcoTEXTURE * gcoTEXTURE;
46 typedef struct _gcoINDEX * gcoINDEX;
47 typedef struct _gcsVERTEX_ATTRIBUTES * gcsVERTEX_ATTRIBUTES_PTR;
48 typedef struct _gcoVERTEXARRAY * gcoVERTEXARRAY;
50 #define gcdATTRIBUTE_COUNT 16
52 /******************************************************************************\
53 ********************************* Enumerations *********************************
54 \******************************************************************************/
56 /* Shading format. */
57 typedef enum _gceSHADING
59 gcvSHADING_SMOOTH,
60 gcvSHADING_FLAT_D3D,
61 gcvSHADING_FLAT_OPENGL,
63 gceSHADING;
65 /* Culling modes. */
66 typedef enum _gceCULL
68 gcvCULL_NONE,
69 gcvCULL_CCW,
70 gcvCULL_CW,
72 gceCULL;
74 /* Fill modes. */
75 typedef enum _gceFILL
77 gcvFILL_POINT,
78 gcvFILL_WIRE_FRAME,
79 gcvFILL_SOLID,
81 gceFILL;
83 /* Compare modes. */
84 typedef enum _gceCOMPARE
86 gcvCOMPARE_NEVER,
87 gcvCOMPARE_NOT_EQUAL,
88 gcvCOMPARE_LESS,
89 gcvCOMPARE_LESS_OR_EQUAL,
90 gcvCOMPARE_EQUAL,
91 gcvCOMPARE_GREATER,
92 gcvCOMPARE_GREATER_OR_EQUAL,
93 gcvCOMPARE_ALWAYS,
94 gcvCOMPARE_INVALID = -1
96 gceCOMPARE;
98 /* Stencil modes. */
99 typedef enum _gceSTENCIL_MODE
101 gcvSTENCIL_NONE,
102 gcvSTENCIL_SINGLE_SIDED,
103 gcvSTENCIL_DOUBLE_SIDED,
105 gceSTENCIL_MODE;
107 /* Stencil operations. */
108 typedef enum _gceSTENCIL_OPERATION
110 gcvSTENCIL_KEEP,
111 gcvSTENCIL_REPLACE,
112 gcvSTENCIL_ZERO,
113 gcvSTENCIL_INVERT,
114 gcvSTENCIL_INCREMENT,
115 gcvSTENCIL_DECREMENT,
116 gcvSTENCIL_INCREMENT_SATURATE,
117 gcvSTENCIL_DECREMENT_SATURATE,
118 gcvSTENCIL_OPERATION_INVALID = -1
120 gceSTENCIL_OPERATION;
122 /* Stencil selection. */
123 typedef enum _gceSTENCIL_WHERE
125 gcvSTENCIL_FRONT,
126 gcvSTENCIL_BACK,
128 gceSTENCIL_WHERE;
130 /* Texture addressing selection. */
131 typedef enum _gceTEXTURE_WHICH
133 gcvTEXTURE_S,
134 gcvTEXTURE_T,
135 gcvTEXTURE_R,
137 gceTEXTURE_WHICH;
139 /* Texture addressing modes. */
140 typedef enum _gceTEXTURE_ADDRESSING
142 gcvTEXTURE_WRAP,
143 gcvTEXTURE_CLAMP,
144 gcvTEXTURE_BORDER,
145 gcvTEXTURE_MIRROR,
146 gcvTEXTURE_MIRROR_ONCE,
148 gceTEXTURE_ADDRESSING;
150 /* Texture filters. */
151 typedef enum _gceTEXTURE_FILTER
153 gcvTEXTURE_NONE,
154 gcvTEXTURE_POINT,
155 gcvTEXTURE_LINEAR,
156 gcvTEXTURE_ANISOTROPIC,
158 gceTEXTURE_FILTER;
160 /* Primitive types. */
161 typedef enum _gcePRIMITIVE
163 gcvPRIMITIVE_POINT_LIST,
164 gcvPRIMITIVE_LINE_LIST,
165 gcvPRIMITIVE_LINE_STRIP,
166 gcvPRIMITIVE_LINE_LOOP,
167 gcvPRIMITIVE_TRIANGLE_LIST,
168 gcvPRIMITIVE_TRIANGLE_STRIP,
169 gcvPRIMITIVE_TRIANGLE_FAN,
171 gcePRIMITIVE;
173 /* Index types. */
174 typedef enum _gceINDEX_TYPE
176 gcvINDEX_8,
177 gcvINDEX_16,
178 gcvINDEX_32,
180 gceINDEX_TYPE;
182 /******************************************************************************\
183 ********************************* gcoHAL Object *********************************
184 \******************************************************************************/
186 /* Query the target capabilities. */
187 gceSTATUS
188 gcoHAL_QueryTargetCaps(
189 IN gcoHAL Hal,
190 OUT gctUINT * MaxWidth,
191 OUT gctUINT * MaxHeight,
192 OUT gctUINT * MultiTargetCount,
193 OUT gctUINT * MaxSamples
196 gceSTATUS
197 gcoHAL_SetDepthOnly(
198 IN gcoHAL Hal,
199 IN gctBOOL Enable
202 gceSTATUS
203 gcoHAL_QueryShaderCaps(
204 IN gcoHAL Hal,
205 OUT gctUINT * VertexUniforms,
206 OUT gctUINT * FragmentUniforms,
207 OUT gctUINT * Varyings
210 gceSTATUS
211 gcoHAL_QueryTextureCaps(
212 IN gcoHAL Hal,
213 OUT gctUINT * MaxWidth,
214 OUT gctUINT * MaxHeight,
215 OUT gctUINT * MaxDepth,
216 OUT gctBOOL * Cubic,
217 OUT gctBOOL * NonPowerOfTwo,
218 OUT gctUINT * VertexSamplers,
219 OUT gctUINT * PixelSamplers
222 gceSTATUS
223 gcoHAL_QueryTextureMaxAniso(
224 IN gcoHAL Hal,
225 OUT gctUINT * MaxAnisoValue
228 gceSTATUS
229 gcoHAL_QueryStreamCaps(
230 IN gcoHAL Hal,
231 OUT gctUINT32 * MaxAttributes,
232 OUT gctUINT32 * MaxStreamSize,
233 OUT gctUINT32 * NumberOfStreams,
234 OUT gctUINT32 * Alignment
237 /******************************************************************************\
238 ********************************* gcoSURF Object ********************************
239 \******************************************************************************/
241 /*----------------------------------------------------------------------------*/
242 /*--------------------------------- gcoSURF 3D --------------------------------*/
244 /* Copy surface. */
245 gceSTATUS
246 gcoSURF_Copy(
247 IN gcoSURF Surface,
248 IN gcoSURF Source
251 /* Clear surface. */
252 gceSTATUS
253 gcoSURF_Clear(
254 IN gcoSURF Surface,
255 IN gctUINT Flags
258 /* Set number of samples for a gcoSURF object. */
259 gceSTATUS
260 gcoSURF_SetSamples(
261 IN gcoSURF Surface,
262 IN gctUINT Samples
265 /* Get the number of samples per pixel. */
266 gceSTATUS
267 gcoSURF_GetSamples(
268 IN gcoSURF Surface,
269 OUT gctUINT_PTR Samples
272 /* Clear rectangular surface. */
273 gceSTATUS
274 gcoSURF_ClearRect(
275 IN gcoSURF Surface,
276 IN gctINT Left,
277 IN gctINT Top,
278 IN gctINT Right,
279 IN gctINT Bottom,
280 IN gctUINT Flags
283 /* TO BE REMOVED */
284 gceSTATUS
285 depr_gcoSURF_Resolve(
286 IN gcoSURF SrcSurface,
287 IN gcoSURF DestSurface,
288 IN gctUINT32 DestAddress,
289 IN gctPOINTER DestBits,
290 IN gctINT DestStride,
291 IN gceSURF_TYPE DestType,
292 IN gceSURF_FORMAT DestFormat,
293 IN gctUINT DestWidth,
294 IN gctUINT DestHeight
297 gceSTATUS
298 depr_gcoSURF_ResolveRect(
299 IN gcoSURF SrcSurface,
300 IN gcoSURF DestSurface,
301 IN gctUINT32 DestAddress,
302 IN gctPOINTER DestBits,
303 IN gctINT DestStride,
304 IN gceSURF_TYPE DestType,
305 IN gceSURF_FORMAT DestFormat,
306 IN gctUINT DestWidth,
307 IN gctUINT DestHeight,
308 IN gcsPOINT_PTR SrcOrigin,
309 IN gcsPOINT_PTR DestOrigin,
310 IN gcsPOINT_PTR RectSize
313 /* Resample surface. */
314 gceSTATUS
315 gcoSURF_Resample(
316 IN gcoSURF SrcSurface,
317 IN gcoSURF DestSurface
320 /* Resolve surface. */
321 gceSTATUS
322 gcoSURF_Resolve(
323 IN gcoSURF SrcSurface,
324 IN gcoSURF DestSurface
327 /* Export the render target */
328 gceSTATUS
329 gcoSURF_ExportRenderTarget(
330 IN gcoSURF SrcSurface
333 /* Import the render target */
334 gceSTATUS
335 gcoSURF_ImportRenderTarget(
336 IN gctUINT32 Pid,
337 IN gcoSURF SrcSurface
340 /* Save the Resolve info to kernel. */
341 gceSTATUS
342 gcoSURF_PrepareRemoteResolveRect(
343 IN gcoSURF SrcSurface,
344 IN gcsPOINT_PTR SrcOrigin,
345 IN gcsPOINT_PTR DestOrigin,
346 IN gcsPOINT_PTR RectSize
349 /* Using the info that Process Pid saved to do resolve. */
350 gceSTATUS
351 gcoSURF_RemoteResolveRect(
352 IN gcoSURF SrcSurface,
353 IN gcoSURF DestSurface
357 Return the "resolve submitted indicator" signal. */
358 gceSTATUS
359 gcoSURF_GetRTSignal(
360 IN gcoSURF RTSurface,
361 OUT gctSIGNAL * resolveSubmittedSignal
364 /* Resolve rectangular area of a surface. */
365 gceSTATUS
366 gcoSURF_ResolveRect(
367 IN gcoSURF SrcSurface,
368 IN gcoSURF DestSurface,
369 IN gcsPOINT_PTR SrcOrigin,
370 IN gcsPOINT_PTR DestOrigin,
371 IN gcsPOINT_PTR RectSize
374 /* Set surface resolvability. */
375 gceSTATUS
376 gcoSURF_SetResolvability(
377 IN gcoSURF Surface,
378 IN gctBOOL Resolvable
381 /* Perform CPU cache operation on surface */
382 gceSTATUS
383 gcoSURF_CPUCacheOperation(
384 IN gcoSURF Surface,
385 IN gceCACHEOPERATION Operation
388 gceSTATUS
389 gcoSURF_NODE_Cache(
390 IN gcsSURF_NODE_PTR Node,
391 IN gctPOINTER Logical,
392 IN gctSIZE_T Bytes,
393 IN gceCACHEOPERATION Operation
396 /******************************************************************************\
397 ******************************** gcoINDEX Object *******************************
398 \******************************************************************************/
400 /* Construct a new gcoINDEX object. */
401 gceSTATUS
402 gcoINDEX_Construct(
403 IN gcoHAL Hal,
404 OUT gcoINDEX * Index
407 /* Destroy a gcoINDEX object. */
408 gceSTATUS
409 gcoINDEX_Destroy(
410 IN gcoINDEX Index
413 /* Lock index in memory. */
414 gceSTATUS
415 gcoINDEX_Lock(
416 IN gcoINDEX Index,
417 OUT gctUINT32 * Address,
418 OUT gctPOINTER * Memory
421 /* Unlock index that was previously locked with gcoINDEX_Lock. */
422 gceSTATUS
423 gcoINDEX_Unlock(
424 IN gcoINDEX Index
427 /* Upload index data into the memory. */
428 gceSTATUS
429 gcoINDEX_Load(
430 IN gcoINDEX Index,
431 IN gceINDEX_TYPE IndexType,
432 IN gctUINT32 IndexCount,
433 IN gctPOINTER IndexBuffer
436 /* Bind an index object to the hardware. */
437 gceSTATUS
438 gcoINDEX_Bind(
439 IN gcoINDEX Index,
440 IN gceINDEX_TYPE Type
443 /* Bind an index object to the hardware. */
444 gceSTATUS
445 gcoINDEX_BindOffset(
446 IN gcoINDEX Index,
447 IN gceINDEX_TYPE Type,
448 IN gctUINT32 Offset
451 /* Free existing index buffer. */
452 gceSTATUS
453 gcoINDEX_Free(
454 IN gcoINDEX Index
457 /* Upload data into an index buffer. */
458 gceSTATUS
459 gcoINDEX_Upload(
460 IN gcoINDEX Index,
461 IN gctCONST_POINTER Buffer,
462 IN gctSIZE_T Bytes
465 /* Upload data into an index buffer starting at an offset. */
466 gceSTATUS
467 gcoINDEX_UploadOffset(
468 IN gcoINDEX Index,
469 IN gctUINT32 Offset,
470 IN gctCONST_POINTER Buffer,
471 IN gctSIZE_T Bytes
474 /* Query the index capabilities. */
475 gceSTATUS
476 gcoINDEX_QueryCaps(
477 OUT gctBOOL * Index8,
478 OUT gctBOOL * Index16,
479 OUT gctBOOL * Index32,
480 OUT gctUINT * MaxIndex
483 /* Determine the index range in the current index buffer. */
484 gceSTATUS
485 gcoINDEX_GetIndexRange(
486 IN gcoINDEX Index,
487 IN gceINDEX_TYPE Type,
488 IN gctUINT32 Offset,
489 IN gctUINT32 Count,
490 OUT gctUINT32 * MinimumIndex,
491 OUT gctUINT32 * MaximumIndex
494 /* Dynamic buffer management. */
495 gceSTATUS
496 gcoINDEX_SetDynamic(
497 IN gcoINDEX Index,
498 IN gctSIZE_T Bytes,
499 IN gctUINT Buffers
502 gceSTATUS
503 gcoINDEX_UploadDynamic(
504 IN gcoINDEX Index,
505 IN gctCONST_POINTER Data,
506 IN gctSIZE_T Bytes
509 /******************************************************************************\
510 ********************************** gco3D Object *********************************
511 \******************************************************************************/
513 /* Clear flags. */
514 typedef enum _gceCLEAR
516 gcvCLEAR_COLOR = 0x1,
517 gcvCLEAR_DEPTH = 0x2,
518 gcvCLEAR_STENCIL = 0x4,
519 gcvCLEAR_HZ = 0x8,
520 gcvCLEAR_HAS_VAA = 0x10,
522 gceCLEAR;
524 /* Blending targets. */
525 typedef enum _gceBLEND_UNIT
527 gcvBLEND_SOURCE,
528 gcvBLEND_TARGET,
530 gceBLEND_UNIT;
532 /* Construct a new gco3D object. */
533 gceSTATUS
534 gco3D_Construct(
535 IN gcoHAL Hal,
536 OUT gco3D * Engine
539 /* Destroy an gco3D object. */
540 gceSTATUS
541 gco3D_Destroy(
542 IN gco3D Engine
545 /* Set 3D API type. */
546 gceSTATUS
547 gco3D_SetAPI(
548 IN gco3D Engine,
549 IN gceAPI ApiType
552 /* Set render target. */
553 gceSTATUS
554 gco3D_SetTarget(
555 IN gco3D Engine,
556 IN gcoSURF Surface
559 /* Unset render target. */
560 gceSTATUS
561 gco3D_UnsetTarget(
562 IN gco3D Engine,
563 IN gcoSURF Surface
566 /* Set depth buffer. */
567 gceSTATUS
568 gco3D_SetDepth(
569 IN gco3D Engine,
570 IN gcoSURF Surface
573 /* Unset depth buffer. */
574 gceSTATUS
575 gco3D_UnsetDepth(
576 IN gco3D Engine,
577 IN gcoSURF Surface
580 /* Set viewport. */
581 gceSTATUS
582 gco3D_SetViewport(
583 IN gco3D Engine,
584 IN gctINT32 Left,
585 IN gctINT32 Top,
586 IN gctINT32 Right,
587 IN gctINT32 Bottom
590 /* Set scissors. */
591 gceSTATUS
592 gco3D_SetScissors(
593 IN gco3D Engine,
594 IN gctINT32 Left,
595 IN gctINT32 Top,
596 IN gctINT32 Right,
597 IN gctINT32 Bottom
600 /* Set clear color. */
601 gceSTATUS
602 gco3D_SetClearColor(
603 IN gco3D Engine,
604 IN gctUINT8 Red,
605 IN gctUINT8 Green,
606 IN gctUINT8 Blue,
607 IN gctUINT8 Alpha
610 /* Set fixed point clear color. */
611 gceSTATUS
612 gco3D_SetClearColorX(
613 IN gco3D Engine,
614 IN gctFIXED_POINT Red,
615 IN gctFIXED_POINT Green,
616 IN gctFIXED_POINT Blue,
617 IN gctFIXED_POINT Alpha
620 /* Set floating point clear color. */
621 gceSTATUS
622 gco3D_SetClearColorF(
623 IN gco3D Engine,
624 IN gctFLOAT Red,
625 IN gctFLOAT Green,
626 IN gctFLOAT Blue,
627 IN gctFLOAT Alpha
630 /* Set fixed point clear depth. */
631 gceSTATUS
632 gco3D_SetClearDepthX(
633 IN gco3D Engine,
634 IN gctFIXED_POINT Depth
637 /* Set floating point clear depth. */
638 gceSTATUS
639 gco3D_SetClearDepthF(
640 IN gco3D Engine,
641 IN gctFLOAT Depth
644 /* Set clear stencil. */
645 gceSTATUS
646 gco3D_SetClearStencil(
647 IN gco3D Engine,
648 IN gctUINT32 Stencil
651 /* Clear a Rect sub-surface. */
652 gceSTATUS
653 gco3D_ClearRect(
654 IN gco3D Engine,
655 IN gctUINT32 Address,
656 IN gctPOINTER Memory,
657 IN gctUINT32 Stride,
658 IN gceSURF_FORMAT Format,
659 IN gctINT32 Left,
660 IN gctINT32 Top,
661 IN gctINT32 Right,
662 IN gctINT32 Bottom,
663 IN gctUINT32 Width,
664 IN gctUINT32 Height,
665 IN gctUINT32 Flags
668 /* Clear surface. */
669 gceSTATUS
670 gco3D_Clear(
671 IN gco3D Engine,
672 IN gctUINT32 Address,
673 IN gctUINT32 Stride,
674 IN gceSURF_FORMAT Format,
675 IN gctUINT32 Width,
676 IN gctUINT32 Height,
677 IN gctUINT32 Flags
681 /* Clear tile status. */
682 gceSTATUS
683 gco3D_ClearTileStatus(
684 IN gco3D Engine,
685 IN gcsSURF_INFO_PTR Surface,
686 IN gctUINT32 TileStatusAddress,
687 IN gctUINT32 Flags
690 /* Set shading mode. */
691 gceSTATUS
692 gco3D_SetShading(
693 IN gco3D Engine,
694 IN gceSHADING Shading
697 /* Set blending mode. */
698 gceSTATUS
699 gco3D_EnableBlending(
700 IN gco3D Engine,
701 IN gctBOOL Enable
704 /* Set blending function. */
705 gceSTATUS
706 gco3D_SetBlendFunction(
707 IN gco3D Engine,
708 IN gceBLEND_UNIT Unit,
709 IN gceBLEND_FUNCTION FunctionRGB,
710 IN gceBLEND_FUNCTION FunctionAlpha
713 /* Set blending mode. */
714 gceSTATUS
715 gco3D_SetBlendMode(
716 IN gco3D Engine,
717 IN gceBLEND_MODE ModeRGB,
718 IN gceBLEND_MODE ModeAlpha
721 /* Set blending color. */
722 gceSTATUS
723 gco3D_SetBlendColor(
724 IN gco3D Engine,
725 IN gctUINT Red,
726 IN gctUINT Green,
727 IN gctUINT Blue,
728 IN gctUINT Alpha
731 /* Set fixed point blending color. */
732 gceSTATUS
733 gco3D_SetBlendColorX(
734 IN gco3D Engine,
735 IN gctFIXED_POINT Red,
736 IN gctFIXED_POINT Green,
737 IN gctFIXED_POINT Blue,
738 IN gctFIXED_POINT Alpha
741 /* Set floating point blending color. */
742 gceSTATUS
743 gco3D_SetBlendColorF(
744 IN gco3D Engine,
745 IN gctFLOAT Red,
746 IN gctFLOAT Green,
747 IN gctFLOAT Blue,
748 IN gctFLOAT Alpha
751 /* Set culling mode. */
752 gceSTATUS
753 gco3D_SetCulling(
754 IN gco3D Engine,
755 IN gceCULL Mode
758 /* Enable point size */
759 gceSTATUS
760 gco3D_SetPointSizeEnable(
761 IN gco3D Engine,
762 IN gctBOOL Enable
765 /* Set point sprite */
766 gceSTATUS
767 gco3D_SetPointSprite(
768 IN gco3D Engine,
769 IN gctBOOL Enable
772 /* Set fill mode. */
773 gceSTATUS
774 gco3D_SetFill(
775 IN gco3D Engine,
776 IN gceFILL Mode
779 /* Set depth compare mode. */
780 gceSTATUS
781 gco3D_SetDepthCompare(
782 IN gco3D Engine,
783 IN gceCOMPARE Compare
786 /* Enable depth writing. */
787 gceSTATUS
788 gco3D_EnableDepthWrite(
789 IN gco3D Engine,
790 IN gctBOOL Enable
793 /* Set depth mode. */
794 gceSTATUS
795 gco3D_SetDepthMode(
796 IN gco3D Engine,
797 IN gceDEPTH_MODE Mode
800 /* Set depth range. */
801 gceSTATUS
802 gco3D_SetDepthRangeX(
803 IN gco3D Engine,
804 IN gceDEPTH_MODE Mode,
805 IN gctFIXED_POINT Near,
806 IN gctFIXED_POINT Far
809 /* Set depth range. */
810 gceSTATUS
811 gco3D_SetDepthRangeF(
812 IN gco3D Engine,
813 IN gceDEPTH_MODE Mode,
814 IN gctFLOAT Near,
815 IN gctFLOAT Far
818 /* Set last pixel enable */
819 gceSTATUS
820 gco3D_SetLastPixelEnable(
821 IN gco3D Engine,
822 IN gctBOOL Enable
825 /* Set depth Bias and Scale */
826 gceSTATUS
827 gco3D_SetDepthScaleBiasX(
828 IN gco3D Engine,
829 IN gctFIXED_POINT DepthScale,
830 IN gctFIXED_POINT DepthBias
833 gceSTATUS
834 gco3D_SetDepthScaleBiasF(
835 IN gco3D Engine,
836 IN gctFLOAT DepthScale,
837 IN gctFLOAT DepthBias
840 /* Enable or disable dithering. */
841 gceSTATUS
842 gco3D_EnableDither(
843 IN gco3D Engine,
844 IN gctBOOL Enable
847 /* Set color write enable bits. */
848 gceSTATUS
849 gco3D_SetColorWrite(
850 IN gco3D Engine,
851 IN gctUINT8 Enable
854 /* Enable or disable early depth. */
855 gceSTATUS
856 gco3D_SetEarlyDepth(
857 IN gco3D Engine,
858 IN gctBOOL Enable
861 /* Enable or disable all early depth operations. */
862 gceSTATUS
863 gco3D_SetAllEarlyDepthModes(
864 IN gco3D Engine,
865 IN gctBOOL Disable
868 /* Enable or disable depth-only mode. */
869 gceSTATUS
870 gco3D_SetDepthOnly(
871 IN gco3D Engine,
872 IN gctBOOL Enable
875 typedef struct _gcsSTENCIL_INFO * gcsSTENCIL_INFO_PTR;
876 typedef struct _gcsSTENCIL_INFO
878 gceSTENCIL_MODE mode;
880 gctUINT8 mask;
881 gctUINT8 writeMask;
883 gctUINT8 referenceFront;
885 gceCOMPARE compareFront;
886 gceSTENCIL_OPERATION passFront;
887 gceSTENCIL_OPERATION failFront;
888 gceSTENCIL_OPERATION depthFailFront;
890 gctUINT8 referenceBack;
891 gceCOMPARE compareBack;
892 gceSTENCIL_OPERATION passBack;
893 gceSTENCIL_OPERATION failBack;
894 gceSTENCIL_OPERATION depthFailBack;
896 gcsSTENCIL_INFO;
898 /* Set stencil mode. */
899 gceSTATUS
900 gco3D_SetStencilMode(
901 IN gco3D Engine,
902 IN gceSTENCIL_MODE Mode
905 /* Set stencil mask. */
906 gceSTATUS
907 gco3D_SetStencilMask(
908 IN gco3D Engine,
909 IN gctUINT8 Mask
912 /* Set stencil write mask. */
913 gceSTATUS
914 gco3D_SetStencilWriteMask(
915 IN gco3D Engine,
916 IN gctUINT8 Mask
919 /* Set stencil reference. */
920 gceSTATUS
921 gco3D_SetStencilReference(
922 IN gco3D Engine,
923 IN gctUINT8 Reference,
924 IN gctBOOL Front
927 /* Set stencil compare. */
928 gceSTATUS
929 gco3D_SetStencilCompare(
930 IN gco3D Engine,
931 IN gceSTENCIL_WHERE Where,
932 IN gceCOMPARE Compare
935 /* Set stencil operation on pass. */
936 gceSTATUS
937 gco3D_SetStencilPass(
938 IN gco3D Engine,
939 IN gceSTENCIL_WHERE Where,
940 IN gceSTENCIL_OPERATION Operation
943 /* Set stencil operation on fail. */
944 gceSTATUS
945 gco3D_SetStencilFail(
946 IN gco3D Engine,
947 IN gceSTENCIL_WHERE Where,
948 IN gceSTENCIL_OPERATION Operation
951 /* Set stencil operation on depth fail. */
952 gceSTATUS
953 gco3D_SetStencilDepthFail(
954 IN gco3D Engine,
955 IN gceSTENCIL_WHERE Where,
956 IN gceSTENCIL_OPERATION Operation
959 /* Set all stencil states in one blow. */
960 gceSTATUS
961 gco3D_SetStencilAll(
962 IN gco3D Engine,
963 IN gcsSTENCIL_INFO_PTR Info
966 typedef struct _gcsALPHA_INFO * gcsALPHA_INFO_PTR;
967 typedef struct _gcsALPHA_INFO
969 /* Alpha test states. */
970 gctBOOL test;
971 gceCOMPARE compare;
972 gctUINT8 reference;
974 /* Alpha blending states. */
975 gctBOOL blend;
977 gceBLEND_FUNCTION srcFuncColor;
978 gceBLEND_FUNCTION srcFuncAlpha;
979 gceBLEND_FUNCTION trgFuncColor;
980 gceBLEND_FUNCTION trgFuncAlpha;
982 gceBLEND_MODE modeColor;
983 gceBLEND_MODE modeAlpha;
985 gctUINT32 color;
987 gcsALPHA_INFO;
989 /* Enable or disable alpha test. */
990 gceSTATUS
991 gco3D_SetAlphaTest(
992 IN gco3D Engine,
993 IN gctBOOL Enable
996 /* Set alpha test compare. */
997 gceSTATUS
998 gco3D_SetAlphaCompare(
999 IN gco3D Engine,
1000 IN gceCOMPARE Compare
1003 /* Set alpha test reference in unsigned integer. */
1004 gceSTATUS
1005 gco3D_SetAlphaReference(
1006 IN gco3D Engine,
1007 IN gctUINT8 Reference
1010 /* Set alpha test reference in fixed point. */
1011 gceSTATUS
1012 gco3D_SetAlphaReferenceX(
1013 IN gco3D Engine,
1014 IN gctFIXED_POINT Reference
1017 /* Set alpha test reference in floating point. */
1018 gceSTATUS
1019 gco3D_SetAlphaReferenceF(
1020 IN gco3D Engine,
1021 IN gctFLOAT Reference
1024 /* Enable/Disable anti-alias line. */
1025 gceSTATUS
1026 gco3D_SetAntiAliasLine(
1027 IN gco3D Engine,
1028 IN gctBOOL Enable
1031 /* Set texture slot for anti-alias line. */
1032 gceSTATUS
1033 gco3D_SetAALineTexSlot(
1034 IN gco3D Engine,
1035 IN gctUINT TexSlot
1038 /* Set anti-alias line width scale. */
1039 gceSTATUS
1040 gco3D_SetAALineWidth(
1041 IN gco3D Engine,
1042 IN gctFLOAT Width
1045 /* Draw a number of primitives. */
1046 gceSTATUS
1047 gco3D_DrawPrimitives(
1048 IN gco3D Engine,
1049 IN gcePRIMITIVE Type,
1050 IN gctINT StartVertex,
1051 IN gctSIZE_T PrimitiveCount
1054 gceSTATUS
1055 gco3D_DrawPrimitivesCount(
1056 IN gco3D Engine,
1057 IN gcePRIMITIVE Type,
1058 IN gctINT* StartVertex,
1059 IN gctSIZE_T* VertexCount,
1060 IN gctSIZE_T PrimitiveCount
1064 /* Draw a number of primitives using offsets. */
1065 gceSTATUS
1066 gco3D_DrawPrimitivesOffset(
1067 IN gco3D Engine,
1068 IN gcePRIMITIVE Type,
1069 IN gctINT32 StartOffset,
1070 IN gctSIZE_T PrimitiveCount
1073 /* Draw a number of indexed primitives. */
1074 gceSTATUS
1075 gco3D_DrawIndexedPrimitives(
1076 IN gco3D Engine,
1077 IN gcePRIMITIVE Type,
1078 IN gctINT BaseVertex,
1079 IN gctINT StartIndex,
1080 IN gctSIZE_T PrimitiveCount
1083 /* Draw a number of indexed primitives using offsets. */
1084 gceSTATUS
1085 gco3D_DrawIndexedPrimitivesOffset(
1086 IN gco3D Engine,
1087 IN gcePRIMITIVE Type,
1088 IN gctINT32 BaseOffset,
1089 IN gctINT32 StartOffset,
1090 IN gctSIZE_T PrimitiveCount
1093 /* Enable or disable anti-aliasing. */
1094 gceSTATUS
1095 gco3D_SetAntiAlias(
1096 IN gco3D Engine,
1097 IN gctBOOL Enable
1100 /* Write data into the command buffer. */
1101 gceSTATUS
1102 gco3D_WriteBuffer(
1103 IN gco3D Engine,
1104 IN gctCONST_POINTER Data,
1105 IN gctSIZE_T Bytes,
1106 IN gctBOOL Aligned
1109 /* Send sempahore and stall until sempahore is signalled. */
1110 gceSTATUS
1111 gco3D_Semaphore(
1112 IN gco3D Engine,
1113 IN gceWHERE From,
1114 IN gceWHERE To,
1115 IN gceHOW How);
1117 /* Set the subpixels center. */
1118 gceSTATUS
1119 gco3D_SetCentroids(
1120 IN gco3D Engine,
1121 IN gctUINT32 Index,
1122 IN gctPOINTER Centroids
1125 gceSTATUS
1126 gco3D_SetLogicOp(
1127 IN gco3D Engine,
1128 IN gctUINT8 Rop
1131 /* OCL thread walker information. */
1132 typedef struct _gcsTHREAD_WALKER_INFO * gcsTHREAD_WALKER_INFO_PTR;
1133 typedef struct _gcsTHREAD_WALKER_INFO
1135 gctUINT32 dimensions;
1136 gctUINT32 traverseOrder;
1137 gctUINT32 enableSwathX;
1138 gctUINT32 enableSwathY;
1139 gctUINT32 enableSwathZ;
1140 gctUINT32 swathSizeX;
1141 gctUINT32 swathSizeY;
1142 gctUINT32 swathSizeZ;
1143 gctUINT32 valueOrder;
1145 gctUINT32 globalSizeX;
1146 gctUINT32 globalOffsetX;
1147 gctUINT32 globalSizeY;
1148 gctUINT32 globalOffsetY;
1149 gctUINT32 globalSizeZ;
1150 gctUINT32 globalOffsetZ;
1152 gctUINT32 workGroupSizeX;
1153 gctUINT32 workGroupCountX;
1154 gctUINT32 workGroupSizeY;
1155 gctUINT32 workGroupCountY;
1156 gctUINT32 workGroupSizeZ;
1157 gctUINT32 workGroupCountZ;
1159 gctUINT32 threadAllocation;
1161 gcsTHREAD_WALKER_INFO;
1163 /* Start OCL thread walker. */
1164 gceSTATUS
1165 gco3D_InvokeThreadWalker(
1166 IN gco3D Engine,
1167 IN gcsTHREAD_WALKER_INFO_PTR Info
1170 /*----------------------------------------------------------------------------*/
1171 /*-------------------------- gco3D Fragment Processor ------------------------*/
1173 /* Set the fragment processor configuration. */
1174 gceSTATUS
1175 gco3D_SetFragmentConfiguration(
1176 IN gco3D Engine,
1177 IN gctBOOL ColorFromStream,
1178 IN gctBOOL EnableFog,
1179 IN gctBOOL EnableSmoothPoint,
1180 IN gctUINT32 ClipPlanes
1183 /* Enable/disable texture stage operation. */
1184 gceSTATUS
1185 gco3D_EnableTextureStage(
1186 IN gco3D Engine,
1187 IN gctINT Stage,
1188 IN gctBOOL Enable
1191 /* Program the channel enable masks for the color texture function. */
1192 gceSTATUS
1193 gco3D_SetTextureColorMask(
1194 IN gco3D Engine,
1195 IN gctINT Stage,
1196 IN gctBOOL ColorEnabled,
1197 IN gctBOOL AlphaEnabled
1200 /* Program the channel enable masks for the alpha texture function. */
1201 gceSTATUS
1202 gco3D_SetTextureAlphaMask(
1203 IN gco3D Engine,
1204 IN gctINT Stage,
1205 IN gctBOOL ColorEnabled,
1206 IN gctBOOL AlphaEnabled
1209 /* Program the constant fragment color. */
1210 gceSTATUS
1211 gco3D_SetFragmentColorX(
1212 IN gco3D Engine,
1213 IN gctFIXED_POINT Red,
1214 IN gctFIXED_POINT Green,
1215 IN gctFIXED_POINT Blue,
1216 IN gctFIXED_POINT Alpha
1219 gceSTATUS
1220 gco3D_SetFragmentColorF(
1221 IN gco3D Engine,
1222 IN gctFLOAT Red,
1223 IN gctFLOAT Green,
1224 IN gctFLOAT Blue,
1225 IN gctFLOAT Alpha
1228 /* Program the constant fog color. */
1229 gceSTATUS
1230 gco3D_SetFogColorX(
1231 IN gco3D Engine,
1232 IN gctFIXED_POINT Red,
1233 IN gctFIXED_POINT Green,
1234 IN gctFIXED_POINT Blue,
1235 IN gctFIXED_POINT Alpha
1238 gceSTATUS
1239 gco3D_SetFogColorF(
1240 IN gco3D Engine,
1241 IN gctFLOAT Red,
1242 IN gctFLOAT Green,
1243 IN gctFLOAT Blue,
1244 IN gctFLOAT Alpha
1247 /* Program the constant texture color. */
1248 gceSTATUS
1249 gco3D_SetTetxureColorX(
1250 IN gco3D Engine,
1251 IN gctINT Stage,
1252 IN gctFIXED_POINT Red,
1253 IN gctFIXED_POINT Green,
1254 IN gctFIXED_POINT Blue,
1255 IN gctFIXED_POINT Alpha
1258 gceSTATUS
1259 gco3D_SetTetxureColorF(
1260 IN gco3D Engine,
1261 IN gctINT Stage,
1262 IN gctFLOAT Red,
1263 IN gctFLOAT Green,
1264 IN gctFLOAT Blue,
1265 IN gctFLOAT Alpha
1268 /* Configure color texture function. */
1269 gceSTATUS
1270 gco3D_SetColorTextureFunction(
1271 IN gco3D Engine,
1272 IN gctINT Stage,
1273 IN gceTEXTURE_FUNCTION Function,
1274 IN gceTEXTURE_SOURCE Source0,
1275 IN gceTEXTURE_CHANNEL Channel0,
1276 IN gceTEXTURE_SOURCE Source1,
1277 IN gceTEXTURE_CHANNEL Channel1,
1278 IN gceTEXTURE_SOURCE Source2,
1279 IN gceTEXTURE_CHANNEL Channel2,
1280 IN gctINT Scale
1283 /* Configure alpha texture function. */
1284 gceSTATUS
1285 gco3D_SetAlphaTextureFunction(
1286 IN gco3D Engine,
1287 IN gctINT Stage,
1288 IN gceTEXTURE_FUNCTION Function,
1289 IN gceTEXTURE_SOURCE Source0,
1290 IN gceTEXTURE_CHANNEL Channel0,
1291 IN gceTEXTURE_SOURCE Source1,
1292 IN gceTEXTURE_CHANNEL Channel1,
1293 IN gceTEXTURE_SOURCE Source2,
1294 IN gceTEXTURE_CHANNEL Channel2,
1295 IN gctINT Scale
1298 /* Invoke OCL thread walker. */
1299 gceSTATUS
1300 gcoHARDWARE_InvokeThreadWalker(
1301 IN gcsTHREAD_WALKER_INFO_PTR Info
1304 /******************************************************************************\
1305 ******************************* gcoTEXTURE Object *******************************
1306 \******************************************************************************/
1308 /* Cube faces. */
1309 typedef enum _gceTEXTURE_FACE
1311 gcvFACE_NONE,
1312 gcvFACE_POSITIVE_X,
1313 gcvFACE_NEGATIVE_X,
1314 gcvFACE_POSITIVE_Y,
1315 gcvFACE_NEGATIVE_Y,
1316 gcvFACE_POSITIVE_Z,
1317 gcvFACE_NEGATIVE_Z,
1319 gceTEXTURE_FACE;
1321 typedef struct _gcsTEXTURE
1323 /* Addressing modes. */
1324 gceTEXTURE_ADDRESSING s;
1325 gceTEXTURE_ADDRESSING t;
1326 gceTEXTURE_ADDRESSING r;
1328 /* Border color. */
1329 gctUINT8 border[4];
1331 /* Filters. */
1332 gceTEXTURE_FILTER minFilter;
1333 gceTEXTURE_FILTER magFilter;
1334 gceTEXTURE_FILTER mipFilter;
1335 gctUINT anisoFilter;
1337 /* Level of detail. */
1338 gctFIXED_POINT lodBias;
1339 gctFIXED_POINT lodMin;
1340 gctFIXED_POINT lodMax;
1342 gcsTEXTURE, * gcsTEXTURE_PTR;
1344 /* Construct a new gcoTEXTURE object. */
1345 gceSTATUS
1346 gcoTEXTURE_Construct(
1347 IN gcoHAL Hal,
1348 OUT gcoTEXTURE * Texture
1351 /* Construct a new sized gcoTEXTURE object. */
1352 gceSTATUS
1353 gcoTEXTURE_ConstructSized(
1354 IN gcoHAL Hal,
1355 IN gceSURF_FORMAT Format,
1356 IN gctUINT Width,
1357 IN gctUINT Height,
1358 IN gctUINT Depth,
1359 IN gctUINT Faces,
1360 IN gctUINT MipMapCount,
1361 IN gcePOOL Pool,
1362 OUT gcoTEXTURE * Texture
1365 /* Destroy an gcoTEXTURE object. */
1366 gceSTATUS
1367 gcoTEXTURE_Destroy(
1368 IN gcoTEXTURE Texture
1371 /* Upload data to an gcoTEXTURE object. */
1372 gceSTATUS
1373 gcoTEXTURE_Upload(
1374 IN gcoTEXTURE Texture,
1375 IN gceTEXTURE_FACE Face,
1376 IN gctUINT Width,
1377 IN gctUINT Height,
1378 IN gctUINT Slice,
1379 IN gctCONST_POINTER Memory,
1380 IN gctINT Stride,
1381 IN gceSURF_FORMAT Format
1384 /* Upload data to an gcoTEXTURE object. */
1385 gceSTATUS
1386 gcoTEXTURE_UploadSub(
1387 IN gcoTEXTURE Texture,
1388 IN gctUINT MipMap,
1389 IN gceTEXTURE_FACE Face,
1390 IN gctUINT X,
1391 IN gctUINT Y,
1392 IN gctUINT Width,
1393 IN gctUINT Height,
1394 IN gctUINT Slice,
1395 IN gctCONST_POINTER Memory,
1396 IN gctINT Stride,
1397 IN gceSURF_FORMAT Format
1400 /* Upload compressed data to an gcoTEXTURE object. */
1401 gceSTATUS
1402 gcoTEXTURE_UploadCompressed(
1403 IN gcoTEXTURE Texture,
1404 IN gceTEXTURE_FACE Face,
1405 IN gctUINT Width,
1406 IN gctUINT Height,
1407 IN gctUINT Slice,
1408 IN gctCONST_POINTER Memory,
1409 IN gctSIZE_T Bytes
1412 /* Get gcoSURF object for a mipmap level. */
1413 gceSTATUS
1414 gcoTEXTURE_GetMipMap(
1415 IN gcoTEXTURE Texture,
1416 IN gctUINT MipMap,
1417 OUT gcoSURF * Surface
1420 /* Get gcoSURF object for a mipmap level and face offset. */
1421 gceSTATUS
1422 gcoTEXTURE_GetMipMapFace(
1423 IN gcoTEXTURE Texture,
1424 IN gctUINT MipMap,
1425 IN gceTEXTURE_FACE Face,
1426 OUT gcoSURF * Surface,
1427 OUT gctUINT32_PTR Offset
1430 gceSTATUS
1431 gcoTEXTURE_AddMipMap(
1432 IN gcoTEXTURE Texture,
1433 IN gctINT Level,
1434 IN gceSURF_FORMAT Format,
1435 IN gctUINT Width,
1436 IN gctUINT Height,
1437 IN gctUINT Depth,
1438 IN gctUINT Faces,
1439 IN gcePOOL Pool,
1440 OUT gcoSURF * Surface
1443 gceSTATUS
1444 gcoTEXTURE_AddMipMapFromClient(
1445 IN gcoTEXTURE Texture,
1446 IN gctINT Level,
1447 IN gcoSURF Surface
1450 gceSTATUS
1451 gcoTEXTURE_AddMipMapFromSurface(
1452 IN gcoTEXTURE Texture,
1453 IN gctINT Level,
1454 IN gcoSURF Surface
1457 gceSTATUS
1458 gcoTEXTURE_SetEndianHint(
1459 IN gcoTEXTURE Texture,
1460 IN gceENDIAN_HINT EndianHint
1463 gceSTATUS
1464 gcoTEXTURE_Disable(
1465 IN gcoHAL Hal,
1466 IN gctINT Sampler
1469 gceSTATUS
1470 gcoTEXTURE_Flush(
1471 IN gcoTEXTURE Texture
1474 gceSTATUS
1475 gcoTEXTURE_QueryCaps(
1476 IN gcoHAL Hal,
1477 OUT gctUINT * MaxWidth,
1478 OUT gctUINT * MaxHeight,
1479 OUT gctUINT * MaxDepth,
1480 OUT gctBOOL * Cubic,
1481 OUT gctBOOL * NonPowerOfTwo,
1482 OUT gctUINT * VertexSamplers,
1483 OUT gctUINT * PixelSamplers
1486 gceSTATUS
1487 gcoTEXTURE_GetClosestFormat(
1488 IN gcoHAL Hal,
1489 IN gceSURF_FORMAT InFormat,
1490 OUT gceSURF_FORMAT* OutFormat
1493 gceSTATUS
1494 gcoTEXTURE_RenderIntoMipMap(
1495 IN gcoTEXTURE Texture,
1496 IN gctINT Level
1499 gceSTATUS
1500 gcoTEXTURE_IsRenderable(
1501 IN gcoTEXTURE Texture,
1502 IN gctUINT Level
1505 gceSTATUS
1506 gcoTEXTURE_IsComplete(
1507 IN gcoTEXTURE Texture,
1508 IN gctINT MaxLevel
1511 gceSTATUS
1512 gcoTEXTURE_BindTexture(
1513 IN gcoTEXTURE Texture,
1514 IN gctINT Target,
1515 IN gctINT Sampler,
1516 IN gcsTEXTURE_PTR Info
1519 /******************************************************************************\
1520 ******************************* gcoSTREAM Object ******************************
1521 \******************************************************************************/
1523 typedef enum _gceVERTEX_FORMAT
1525 gcvVERTEX_BYTE,
1526 gcvVERTEX_UNSIGNED_BYTE,
1527 gcvVERTEX_SHORT,
1528 gcvVERTEX_UNSIGNED_SHORT,
1529 gcvVERTEX_INT,
1530 gcvVERTEX_UNSIGNED_INT,
1531 gcvVERTEX_FIXED,
1532 gcvVERTEX_HALF,
1533 gcvVERTEX_FLOAT,
1534 gcvVERTEX_UNSIGNED_INT_10_10_10_2,
1535 gcvVERTEX_INT_10_10_10_2,
1537 gceVERTEX_FORMAT;
1539 gceSTATUS
1540 gcoSTREAM_Construct(
1541 IN gcoHAL Hal,
1542 OUT gcoSTREAM * Stream
1545 gceSTATUS
1546 gcoSTREAM_Destroy(
1547 IN gcoSTREAM Stream
1550 gceSTATUS
1551 gcoSTREAM_Upload(
1552 IN gcoSTREAM Stream,
1553 IN gctCONST_POINTER Buffer,
1554 IN gctUINT32 Offset,
1555 IN gctSIZE_T Bytes,
1556 IN gctBOOL Dynamic
1559 gceSTATUS
1560 gcoSTREAM_SetStride(
1561 IN gcoSTREAM Stream,
1562 IN gctUINT32 Stride
1565 gceSTATUS
1566 gcoSTREAM_Lock(
1567 IN gcoSTREAM Stream,
1568 OUT gctPOINTER * Logical,
1569 OUT gctUINT32 * Physical
1572 gceSTATUS
1573 gcoSTREAM_Unlock(
1574 IN gcoSTREAM Stream
1577 gceSTATUS
1578 gcoSTREAM_Reserve(
1579 IN gcoSTREAM Stream,
1580 IN gctSIZE_T Bytes
1583 gceSTATUS
1584 gcoSTREAM_Flush(
1585 IN gcoSTREAM Stream
1588 /* Dynamic buffer API. */
1589 gceSTATUS
1590 gcoSTREAM_SetDynamic(
1591 IN gcoSTREAM Stream,
1592 IN gctSIZE_T Bytes,
1593 IN gctUINT Buffers
1596 typedef struct _gcsSTREAM_INFO
1598 gctUINT index;
1599 gceVERTEX_FORMAT format;
1600 gctBOOL normalized;
1601 gctUINT components;
1602 gctSIZE_T size;
1603 gctCONST_POINTER data;
1604 gctUINT stride;
1606 gcsSTREAM_INFO, * gcsSTREAM_INFO_PTR;
1608 gceSTATUS
1609 gcoSTREAM_UploadDynamic(
1610 IN gcoSTREAM Stream,
1611 IN gctUINT VertexCount,
1612 IN gctUINT InfoCount,
1613 IN gcsSTREAM_INFO_PTR Info,
1614 IN gcoVERTEX Vertex
1617 gceSTATUS
1618 gcoSTREAM_CPUCacheOperation(
1619 IN gcoSTREAM Stream,
1620 IN gceCACHEOPERATION Operation
1623 /******************************************************************************\
1624 ******************************** gcoVERTEX Object ******************************
1625 \******************************************************************************/
1627 typedef struct _gcsVERTEX_ATTRIBUTES
1629 gceVERTEX_FORMAT format;
1630 gctBOOL normalized;
1631 gctUINT32 components;
1632 gctSIZE_T size;
1633 gctUINT32 stream;
1634 gctUINT32 offset;
1635 gctUINT32 stride;
1637 gcsVERTEX_ATTRIBUTES;
1639 gceSTATUS
1640 gcoVERTEX_Construct(
1641 IN gcoHAL Hal,
1642 OUT gcoVERTEX * Vertex
1645 gceSTATUS
1646 gcoVERTEX_Destroy(
1647 IN gcoVERTEX Vertex
1650 gceSTATUS
1651 gcoVERTEX_Reset(
1652 IN gcoVERTEX Vertex
1655 gceSTATUS
1656 gcoVERTEX_EnableAttribute(
1657 IN gcoVERTEX Vertex,
1658 IN gctUINT32 Index,
1659 IN gceVERTEX_FORMAT Format,
1660 IN gctBOOL Normalized,
1661 IN gctUINT32 Components,
1662 IN gcoSTREAM Stream,
1663 IN gctUINT32 Offset,
1664 IN gctUINT32 Stride
1667 gceSTATUS
1668 gcoVERTEX_DisableAttribute(
1669 IN gcoVERTEX Vertex,
1670 IN gctUINT32 Index
1673 gceSTATUS
1674 gcoVERTEX_Bind(
1675 IN gcoVERTEX Vertex
1678 /*******************************************************************************
1679 ***** gcoVERTEXARRAY Object ***************************************************/
1681 typedef struct _gcsVERTEXARRAY
1683 /* Enabled. */
1684 gctBOOL enable;
1686 /* Number of components. */
1687 gctINT size;
1689 /* Attribute format. */
1690 gceVERTEX_FORMAT format;
1692 /* Flag whether the attribute is normalized or not. */
1693 gctBOOL normalized;
1695 /* Stride of the component. */
1696 gctUINT stride;
1698 /* Pointer to the attribute data. */
1699 gctCONST_POINTER pointer;
1701 /* Stream object owning the attribute data. */
1702 gcoSTREAM stream;
1704 /* Generic values for attribute. */
1705 gctFLOAT genericValue[4];
1707 /* Vertex shader linkage. */
1708 gctUINT linkage;
1710 gcsVERTEXARRAY,
1711 * gcsVERTEXARRAY_PTR;
1713 gceSTATUS
1714 gcoVERTEXARRAY_Construct(
1715 IN gcoHAL Hal,
1716 OUT gcoVERTEXARRAY * Vertex
1719 gceSTATUS
1720 gcoVERTEXARRAY_Destroy(
1721 IN gcoVERTEXARRAY Vertex
1724 gceSTATUS
1725 gcoVERTEXARRAY_Bind(
1726 IN gcoVERTEXARRAY Vertex,
1727 IN gctUINT32 EnableBits,
1728 IN gcsVERTEXARRAY_PTR VertexArray,
1729 IN gctUINT First,
1730 IN gctSIZE_T Count,
1731 IN gceINDEX_TYPE IndexType,
1732 IN gcoINDEX IndexObject,
1733 IN gctPOINTER IndexMemory,
1734 IN OUT gcePRIMITIVE * PrimitiveType,
1735 IN OUT gctUINT * PrimitiveCount
1738 /*******************************************************************************
1739 ***** Composition *************************************************************/
1741 typedef enum _gceCOMPOSITION
1743 gcvCOMPOSE_CLEAR = 1,
1744 gcvCOMPOSE_BLUR,
1745 gcvCOMPOSE_DIM,
1746 gcvCOMPOSE_LAYER
1748 gceCOMPOSITION;
1750 typedef struct _gcsCOMPOSITION * gcsCOMPOSITION_PTR;
1751 typedef struct _gcsCOMPOSITION
1753 /* Structure size. */
1754 gctUINT structSize;
1756 /* Composition operation. */
1757 gceCOMPOSITION operation;
1759 /* Layer to be composed. */
1760 gcoSURF layer;
1762 /* Rotation angle. */
1763 gceSURF_ROTATION rotation;
1765 /* Source and target coordinates. */
1766 gcsRECT srcRect;
1767 gcsRECT trgRect;
1769 /* Blending parameters. */
1770 gctBOOL enableBlending;
1771 gctBOOL premultiplied;
1772 gctUINT8 alphaValue;
1774 /* Clear color. */
1775 gctFLOAT r;
1776 gctFLOAT g;
1777 gctFLOAT b;
1778 gctFLOAT a;
1780 gcsCOMPOSITION;
1782 gceSTATUS
1783 gco3D_ProbeComposition(
1784 gctBOOL ResetIfEmpty
1787 gceSTATUS
1788 gco3D_CompositionBegin(
1789 void
1792 gceSTATUS
1793 gco3D_ComposeLayer(
1794 IN gcsCOMPOSITION_PTR Layer
1797 gceSTATUS
1798 gco3D_CompositionSignals(
1799 IN gctHANDLE Process,
1800 IN gctSIGNAL Signal1,
1801 IN gctSIGNAL Signal2
1804 gceSTATUS
1805 gco3D_CompositionEnd(
1806 IN gcoSURF Target,
1807 IN gctBOOL Synchronous
1810 /* Frame Database */
1811 gceSTATUS
1812 gcoHAL_AddFrameDB(
1813 void
1816 gceSTATUS
1817 gcoHAL_DumpFrameDB(
1818 gctCONST_STRING Filename OPTIONAL
1821 gceSTATUS
1822 gcoHAL_GetSharedInfo(
1823 IN gctUINT32 Pid,
1824 IN gctUINT32 DataId,
1825 OUT gctUINT8_PTR Data,
1826 IN gctSIZE_T Bytes,
1827 IN gcuVIDMEM_NODE_PTR Node,
1828 OUT gctUINT8_PTR NodeData
1831 gceSTATUS
1832 gcoHAL_SetSharedInfo(
1833 IN gctUINT32 DataId,
1834 IN gctUINT8_PTR Data,
1835 IN gctSIZE_T Bytes,
1836 IN gcuVIDMEM_NODE_PTR Node,
1837 IN gctUINT8_PTR NodeData
1840 #ifdef __cplusplus
1842 #endif
1844 #endif /* VIVANTE_NO_3D */
1845 #endif /* __gc_hal_engine_h_ */