ENGR00156850 gpu-viv: add gpu-viv driver source
[wandboard.git] / drivers / mxc / gpu-viv / hal / kernel / inc / gc_hal_driver.h
blob9574eb02f06eb285bc9d8127b555d461b8e2774f
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_driver_h_
25 #define __gc_hal_driver_h_
27 #include "gc_hal_enum.h"
28 #include "gc_hal_types.h"
30 #if gcdENABLE_VG
31 #include "gc_hal_driver_vg.h"
32 #endif
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
38 /******************************************************************************\
39 ******************************* I/O Control Codes ******************************
40 \******************************************************************************/
42 #define gcvHAL_CLASS "galcore"
43 #define IOCTL_GCHAL_INTERFACE 30000
44 #define IOCTL_GCHAL_KERNEL_INTERFACE 30001
45 #define IOCTL_GCHAL_TERMINATE 30002
47 /******************************************************************************\
48 ********************************* Command Codes ********************************
49 \******************************************************************************/
51 typedef enum _gceHAL_COMMAND_CODES
53 /* Generic query. */
54 gcvHAL_QUERY_VIDEO_MEMORY,
55 gcvHAL_QUERY_CHIP_IDENTITY,
57 /* Contiguous memory. */
58 gcvHAL_ALLOCATE_NON_PAGED_MEMORY,
59 gcvHAL_FREE_NON_PAGED_MEMORY,
60 gcvHAL_ALLOCATE_CONTIGUOUS_MEMORY,
61 gcvHAL_FREE_CONTIGUOUS_MEMORY,
63 /* Video memory allocation. */
64 gcvHAL_ALLOCATE_VIDEO_MEMORY, /* Enforced alignment. */
65 gcvHAL_ALLOCATE_LINEAR_VIDEO_MEMORY, /* No alignment. */
66 gcvHAL_FREE_VIDEO_MEMORY,
68 /* Physical-to-logical mapping. */
69 gcvHAL_MAP_MEMORY,
70 gcvHAL_UNMAP_MEMORY,
72 /* Logical-to-physical mapping. */
73 gcvHAL_MAP_USER_MEMORY,
74 gcvHAL_UNMAP_USER_MEMORY,
76 /* Surface lock/unlock. */
77 gcvHAL_LOCK_VIDEO_MEMORY,
78 gcvHAL_UNLOCK_VIDEO_MEMORY,
80 /* Event queue. */
81 gcvHAL_EVENT_COMMIT,
83 gcvHAL_USER_SIGNAL,
84 gcvHAL_SIGNAL,
85 gcvHAL_WRITE_DATA,
87 gcvHAL_COMMIT,
88 gcvHAL_STALL,
90 gcvHAL_READ_REGISTER,
91 gcvHAL_WRITE_REGISTER,
93 gcvHAL_GET_PROFILE_SETTING,
94 gcvHAL_SET_PROFILE_SETTING,
96 gcvHAL_READ_ALL_PROFILE_REGISTERS,
97 gcvHAL_PROFILE_REGISTERS_2D,
99 /* Power management. */
100 gcvHAL_SET_POWER_MANAGEMENT_STATE,
101 gcvHAL_QUERY_POWER_MANAGEMENT_STATE,
103 gcvHAL_GET_BASE_ADDRESS,
105 gcvHAL_SET_IDLE, /* reserved */
107 /* Queries. */
108 gcvHAL_QUERY_KERNEL_SETTINGS,
110 /* Reset. */
111 gcvHAL_RESET,
113 /* Map physical address into handle. */
114 gcvHAL_MAP_PHYSICAL,
116 /* Debugger stuff. */
117 gcvHAL_DEBUG,
119 /* Cache stuff. */
120 gcvHAL_CACHE,
122 /* TimeStamp */
123 gcvHAL_TIMESTAMP,
125 /* Database. */
126 gcvHAL_DATABASE,
128 /* Version. */
129 gcvHAL_VERSION,
131 /* Chip info */
132 gcvHAL_CHIP_INFO,
134 /* Process attaching/detaching. */
135 gcvHAL_ATTACH,
136 gcvHAL_DETACH,
138 /* Composition. */
139 gcvHAL_COMPOSE,
141 /* Set timeOut value */
142 gcvHAL_SET_TIMEOUT,
144 /* Frame database. */
145 gcvHAL_GET_FRAME_INFO,
147 #if gcdENABLE_SHARED_INFO
148 /* Shared info for each process */
149 gcvHAL_GET_SHARED_INFO,
150 gcvHAL_SET_SHARED_INFO,
151 #endif
152 gcvHAL_QUERY_COMMAND_BUFFER
154 gceHAL_COMMAND_CODES;
156 /******************************************************************************\
157 ****************************** Interface Structure *****************************
158 \******************************************************************************/
160 #define gcdMAX_PROFILE_FILE_NAME 128
162 /* Kernel settings. */
163 typedef struct _gcsKERNEL_SETTINGS
165 /* Used RealTime signal between kernel and user. */
166 gctINT signal;
168 gcsKERNEL_SETTINGS;
170 /* gcvHAL_COMPOSE. */
171 typedef struct _gcsHAL_COMPOSE * gcsHAL_COMPOSE_PTR;
172 typedef struct _gcsHAL_COMPOSE
174 /* Composition state buffer. */
175 IN gctSIZE_T size;
176 IN gctPHYS_ADDR physical;
177 IN gctPOINTER logical;
179 /* Composition end signal. */
180 IN gctHANDLE process;
181 IN gctSIGNAL signal;
183 /* User signals. */
184 IN gctHANDLE userProcess;
185 IN gctSIGNAL userSignal1;
186 IN gctSIGNAL userSignal2;
188 #if defined(__QNXNTO__)
189 /* Client pulse side-channel connection ID. */
190 IN gctINT32 coid;
192 /* Set by server. */
193 IN gctINT32 rcvid;
194 #endif
196 gcsHAL_COMPOSE;
198 typedef struct _gcsHAL_INTERFACE
200 /* Command code. */
201 gceHAL_COMMAND_CODES command;
203 /* Hardware type. */
204 gceHARDWARE_TYPE hardwareType;
206 /* Status value. */
207 gceSTATUS status;
209 /* Handle to this interface channel. */
210 gctHANDLE handle;
212 /* Pid of the client. */
213 gctUINT32 pid;
215 /* Union of command structures. */
216 union _u
218 /* gcvHAL_GET_BASE_ADDRESS */
219 struct _gcsHAL_GET_BASE_ADDRESS
221 /* Physical memory address of internal memory. */
222 OUT gctUINT32 baseAddress;
224 GetBaseAddress;
226 /* gcvHAL_QUERY_VIDEO_MEMORY */
227 struct _gcsHAL_QUERY_VIDEO_MEMORY
229 /* Physical memory address of internal memory. */
230 OUT gctPHYS_ADDR internalPhysical;
232 /* Size in bytes of internal memory.*/
233 OUT gctSIZE_T internalSize;
235 /* Physical memory address of external memory. */
236 OUT gctPHYS_ADDR externalPhysical;
238 /* Size in bytes of external memory.*/
239 OUT gctSIZE_T externalSize;
241 /* Physical memory address of contiguous memory. */
242 OUT gctPHYS_ADDR contiguousPhysical;
244 /* Size in bytes of contiguous memory.*/
245 OUT gctSIZE_T contiguousSize;
247 QueryVideoMemory;
249 /* gcvHAL_QUERY_CHIP_IDENTITY */
250 struct _gcsHAL_QUERY_CHIP_IDENTITY
253 /* Chip model. */
254 OUT gceCHIPMODEL chipModel;
256 /* Revision value.*/
257 OUT gctUINT32 chipRevision;
259 /* Supported feature fields. */
260 OUT gctUINT32 chipFeatures;
262 /* Supported minor feature fields. */
263 OUT gctUINT32 chipMinorFeatures;
265 /* Supported minor feature 1 fields. */
266 OUT gctUINT32 chipMinorFeatures1;
268 /* Supported minor feature 2 fields. */
269 OUT gctUINT32 chipMinorFeatures2;
271 /* Supported minor feature 3 fields. */
272 OUT gctUINT32 chipMinorFeatures3;
274 /* Number of streams supported. */
275 OUT gctUINT32 streamCount;
277 /* Total number of temporary registers per thread. */
278 OUT gctUINT32 registerMax;
280 /* Maximum number of threads. */
281 OUT gctUINT32 threadCount;
283 /* Number of shader cores. */
284 OUT gctUINT32 shaderCoreCount;
286 /* Size of the vertex cache. */
287 OUT gctUINT32 vertexCacheSize;
289 /* Number of entries in the vertex output buffer. */
290 OUT gctUINT32 vertexOutputBufferSize;
292 /* Number of pixel pipes. */
293 OUT gctUINT32 pixelPipes;
295 /* Number of instructions. */
296 OUT gctUINT32 instructionCount;
298 /* Number of constants. */
299 OUT gctUINT32 numConstants;
301 /* Buffer size */
302 OUT gctUINT32 bufferSize;
305 QueryChipIdentity;
307 /* gcvHAL_MAP_MEMORY */
308 struct _gcsHAL_MAP_MEMORY
310 /* Physical memory address to map. */
311 IN gctPHYS_ADDR physical;
313 /* Number of bytes in physical memory to map. */
314 IN gctSIZE_T bytes;
316 /* Address of mapped memory. */
317 OUT gctPOINTER logical;
319 MapMemory;
321 /* gcvHAL_UNMAP_MEMORY */
322 struct _gcsHAL_UNMAP_MEMORY
324 /* Physical memory address to unmap. */
325 IN gctPHYS_ADDR physical;
327 /* Number of bytes in physical memory to unmap. */
328 IN gctSIZE_T bytes;
330 /* Address of mapped memory to unmap. */
331 IN gctPOINTER logical;
333 UnmapMemory;
335 /* gcvHAL_ALLOCATE_LINEAR_VIDEO_MEMORY */
336 struct _gcsHAL_ALLOCATE_LINEAR_VIDEO_MEMORY
338 /* Number of bytes to allocate. */
339 IN OUT gctUINT bytes;
341 /* Buffer alignment. */
342 IN gctUINT alignment;
344 /* Type of allocation. */
345 IN gceSURF_TYPE type;
347 /* Memory pool to allocate from. */
348 IN OUT gcePOOL pool;
350 /* Allocated video memory. */
351 OUT gcuVIDMEM_NODE_PTR node;
353 AllocateLinearVideoMemory;
355 /* gcvHAL_ALLOCATE_VIDEO_MEMORY */
356 struct _gcsHAL_ALLOCATE_VIDEO_MEMORY
358 /* Width of rectangle to allocate. */
359 IN OUT gctUINT width;
361 /* Height of rectangle to allocate. */
362 IN OUT gctUINT height;
364 /* Depth of rectangle to allocate. */
365 IN gctUINT depth;
367 /* Format rectangle to allocate in gceSURF_FORMAT. */
368 IN gceSURF_FORMAT format;
370 /* Type of allocation. */
371 IN gceSURF_TYPE type;
373 /* Memory pool to allocate from. */
374 IN OUT gcePOOL pool;
376 /* Allocated video memory. */
377 OUT gcuVIDMEM_NODE_PTR node;
379 AllocateVideoMemory;
381 /* gcvHAL_FREE_VIDEO_MEMORY */
382 struct _gcsHAL_FREE_VIDEO_MEMORY
384 /* Allocated video memory. */
385 IN gcuVIDMEM_NODE_PTR node;
387 #ifdef __QNXNTO__
388 /* TODO: This is part of the unlock - why is it here? */
389 /* Mapped logical address to unmap in user space. */
390 OUT gctPOINTER memory;
392 /* Number of bytes to allocated. */
393 OUT gctSIZE_T bytes;
394 #endif
396 FreeVideoMemory;
398 /* gcvHAL_LOCK_VIDEO_MEMORY */
399 struct _gcsHAL_LOCK_VIDEO_MEMORY
401 /* Allocated video memory. */
402 IN gcuVIDMEM_NODE_PTR node;
404 /* Cache configuration. */
405 /* Only gcvPOOL_CONTIGUOUS and gcvPOOL_VIRUTAL
406 ** can be configured */
407 IN gctBOOL cacheable;
409 /* Hardware specific address. */
410 OUT gctUINT32 address;
412 /* Mapped logical address. */
413 OUT gctPOINTER memory;
415 LockVideoMemory;
417 /* gcvHAL_UNLOCK_VIDEO_MEMORY */
418 struct _gcsHAL_UNLOCK_VIDEO_MEMORY
420 /* Allocated video memory. */
421 IN gcuVIDMEM_NODE_PTR node;
423 /* Type of surface. */
424 IN gceSURF_TYPE type;
426 /* Flag to unlock surface asynchroneously. */
427 IN OUT gctBOOL asynchroneous;
429 UnlockVideoMemory;
431 /* gcvHAL_ALLOCATE_NON_PAGED_MEMORY */
432 struct _gcsHAL_ALLOCATE_NON_PAGED_MEMORY
434 /* Number of bytes to allocate. */
435 IN OUT gctSIZE_T bytes;
437 /* Physical address of allocation. */
438 OUT gctPHYS_ADDR physical;
440 /* Logical address of allocation. */
441 OUT gctPOINTER logical;
443 AllocateNonPagedMemory;
445 /* gcvHAL_FREE_NON_PAGED_MEMORY */
446 struct _gcsHAL_FREE_NON_PAGED_MEMORY
448 /* Number of bytes allocated. */
449 IN gctSIZE_T bytes;
451 /* Physical address of allocation. */
452 IN gctPHYS_ADDR physical;
454 /* Logical address of allocation. */
455 IN gctPOINTER logical;
457 FreeNonPagedMemory;
459 /* gcvHAL_EVENT_COMMIT. */
460 struct _gcsHAL_EVENT_COMMIT
462 /* Event queue. */
463 IN gcsQUEUE_PTR queue;
465 Event;
467 /* gcvHAL_COMMIT */
468 struct _gcsHAL_COMMIT
470 /* Context buffer object. */
471 IN gckCONTEXT context;
473 /* Command buffer. */
474 IN gcoCMDBUF commandBuffer;
476 /* State delta buffer. */
477 gcsSTATE_DELTA_PTR delta;
479 /* Event queue. */
480 IN gcsQUEUE_PTR queue;
482 Commit;
484 /* gcvHAL_MAP_USER_MEMORY */
485 struct _gcsHAL_MAP_USER_MEMORY
487 /* Base address of user memory to map. */
488 IN gctPOINTER memory;
490 /* Size of user memory in bytes to map. */
491 IN gctSIZE_T size;
493 /* Info record required by gcvHAL_UNMAP_USER_MEMORY. */
494 OUT gctPOINTER info;
496 /* Physical address of mapped memory. */
497 OUT gctUINT32 address;
499 MapUserMemory;
501 /* gcvHAL_UNMAP_USER_MEMORY */
502 struct _gcsHAL_UNMAP_USER_MEMORY
504 /* Base address of user memory to unmap. */
505 IN gctPOINTER memory;
507 /* Size of user memory in bytes to unmap. */
508 IN gctSIZE_T size;
510 /* Info record returned by gcvHAL_MAP_USER_MEMORY. */
511 IN gctPOINTER info;
513 /* Physical address of mapped memory as returned by
514 gcvHAL_MAP_USER_MEMORY. */
515 IN gctUINT32 address;
517 UnmapUserMemory;
518 #if !USE_NEW_LINUX_SIGNAL
519 /* gcsHAL_USER_SIGNAL */
520 struct _gcsHAL_USER_SIGNAL
522 /* Command. */
523 gceUSER_SIGNAL_COMMAND_CODES command;
525 /* Signal ID. */
526 IN OUT gctINT id;
528 /* Reset mode. */
529 IN gctBOOL manualReset;
531 /* Wait timedout. */
532 IN gctUINT32 wait;
534 /* State. */
535 IN gctBOOL state;
537 UserSignal;
538 #endif
540 /* gcvHAL_SIGNAL. */
541 struct _gcsHAL_SIGNAL
543 /* Signal handle to signal. */
544 IN gctSIGNAL signal;
546 /* Reserved. */
547 IN gctSIGNAL auxSignal;
549 /* Process owning the signal. */
550 IN gctHANDLE process;
552 #if defined(__QNXNTO__)
553 /* Client pulse side-channel connection ID. Set by client in gcoOS_CreateSignal. */
554 IN gctINT32 coid;
556 /* Set by server. */
557 IN gctINT32 rcvid;
558 #endif
559 /* Event generated from where of pipeline */
560 IN gceKERNEL_WHERE fromWhere;
562 Signal;
564 /* gcvHAL_WRITE_DATA. */
565 struct _gcsHAL_WRITE_DATA
567 /* Address to write data to. */
568 IN gctUINT32 address;
570 /* Data to write. */
571 IN gctUINT32 data;
573 WriteData;
575 /* gcvHAL_ALLOCATE_CONTIGUOUS_MEMORY */
576 struct _gcsHAL_ALLOCATE_CONTIGUOUS_MEMORY
578 /* Number of bytes to allocate. */
579 IN OUT gctSIZE_T bytes;
581 /* Hardware address of allocation. */
582 OUT gctUINT32 address;
584 /* Physical address of allocation. */
585 OUT gctPHYS_ADDR physical;
587 /* Logical address of allocation. */
588 OUT gctPOINTER logical;
590 AllocateContiguousMemory;
592 /* gcvHAL_FREE_CONTIGUOUS_MEMORY */
593 struct _gcsHAL_FREE_CONTIGUOUS_MEMORY
595 /* Number of bytes allocated. */
596 IN gctSIZE_T bytes;
598 /* Physical address of allocation. */
599 IN gctPHYS_ADDR physical;
601 /* Logical address of allocation. */
602 IN gctPOINTER logical;
604 FreeContiguousMemory;
606 /* gcvHAL_READ_REGISTER */
607 struct _gcsHAL_READ_REGISTER
609 /* Logical address of memory to write data to. */
610 IN gctUINT32 address;
612 /* Data read. */
613 OUT gctUINT32 data;
615 ReadRegisterData;
617 /* gcvHAL_WRITE_REGISTER */
618 struct _gcsHAL_WRITE_REGISTER
620 /* Logical address of memory to write data to. */
621 IN gctUINT32 address;
623 /* Data read. */
624 IN gctUINT32 data;
626 WriteRegisterData;
628 #if VIVANTE_PROFILER
629 /* gcvHAL_GET_PROFILE_SETTING */
630 struct _gcsHAL_GET_PROFILE_SETTING
632 /* Enable profiling */
633 OUT gctBOOL enable;
635 /* The profile file name */
636 OUT gctCHAR fileName[gcdMAX_PROFILE_FILE_NAME];
638 GetProfileSetting;
640 /* gcvHAL_SET_PROFILE_SETTING */
641 struct _gcsHAL_SET_PROFILE_SETTING
643 /* Enable profiling */
644 IN gctBOOL enable;
646 /* The profile file name */
647 IN gctCHAR fileName[gcdMAX_PROFILE_FILE_NAME];
649 SetProfileSetting;
651 /* gcvHAL_READ_ALL_PROFILE_REGISTERS */
652 struct _gcsHAL_READ_ALL_PROFILE_REGISTERS
654 /* Data read. */
655 OUT gcsPROFILER_COUNTERS counters;
657 RegisterProfileData;
659 /* gcvHAL_PROFILE_REGISTERS_2D */
660 struct _gcsHAL_PROFILE_REGISTERS_2D
662 /* Data read. */
663 OUT gcs2D_PROFILE_PTR hwProfile2D;
665 RegisterProfileData2D;
666 #endif
667 /* Power management. */
668 /* gcvHAL_SET_POWER_MANAGEMENT_STATE */
669 struct _gcsHAL_SET_POWER_MANAGEMENT
671 /* Data read. */
672 IN gceCHIPPOWERSTATE state;
674 SetPowerManagement;
676 /* gcvHAL_QUERY_POWER_MANAGEMENT_STATE */
677 struct _gcsHAL_QUERY_POWER_MANAGEMENT
679 /* Data read. */
680 OUT gceCHIPPOWERSTATE state;
682 /* Idle query. */
683 OUT gctBOOL isIdle;
685 QueryPowerManagement;
687 /* gcvHAL_QUERY_KERNEL_SETTINGS */
688 struct _gcsHAL_QUERY_KERNEL_SETTINGS
690 /* Settings.*/
691 OUT gcsKERNEL_SETTINGS settings;
693 QueryKernelSettings;
695 /* gcvHAL_MAP_PHYSICAL */
696 struct _gcsHAL_MAP_PHYSICAL
698 /* gcvTRUE to map, gcvFALSE to unmap. */
699 IN gctBOOL map;
701 /* Physical address. */
702 IN OUT gctPHYS_ADDR physical;
704 MapPhysical;
706 /* gcvHAL_DEBUG */
707 struct _gcsHAL_DEBUG
709 /* If gcvTRUE, set the debug information. */
710 IN gctBOOL set;
711 IN gctUINT32 level;
712 IN gctUINT32 zones;
713 IN gctBOOL enable;
715 IN gceDEBUG_MESSAGE_TYPE type;
716 IN gctUINT32 messageSize;
718 /* Message to print if not empty. */
719 IN gctCHAR message[80];
721 Debug;
723 /* gcvHAL_CACHE */
724 struct _gcsHAL_CACHE
726 IN gceCACHEOPERATION operation;
727 IN gctHANDLE process;
728 IN gctPOINTER logical;
729 IN gctSIZE_T bytes;
730 IN gcuVIDMEM_NODE_PTR node;
732 Cache;
734 /* gcvHAL_TIMESTAMP */
735 struct _gcsHAL_TIMESTAMP
737 /* Timer select. */
738 IN gctUINT32 timer;
740 /* Timer request type (0-stop, 1-start, 2-send delta). */
741 IN gctUINT32 request;
743 /* Result of delta time in microseconds. */
744 OUT gctINT32 timeDelta;
746 TimeStamp;
748 /* gcvHAL_DATABASE */
749 struct _gcsHAL_DATABASE
751 /* Set to gcvTRUE if you want to query a particular process ID.
752 ** Set to gcvFALSE to query the last detached process. */
753 IN gctBOOL validProcessID;
755 /* Process ID to query. */
756 IN gctUINT32 processID;
758 /* Information. */
759 OUT gcuDATABASE_INFO vidMem;
760 OUT gcuDATABASE_INFO nonPaged;
761 OUT gcuDATABASE_INFO contiguous;
762 OUT gcuDATABASE_INFO gpuIdle;
764 Database;
766 /* gcvHAL_VERSION */
767 struct _gcsHAL_VERSION
769 /* Major version: N.n.n. */
770 OUT gctINT32 major;
772 /* Minor version: n.N.n. */
773 OUT gctINT32 minor;
775 /* Patch version: n.n.N. */
776 OUT gctINT32 patch;
778 /* Build version. */
779 OUT gctUINT32 build;
781 Version;
783 /* gcvHAL_CHIP_INFO */
784 struct _gcsHAL_CHIP_INFO
786 /* Chip count. */
787 OUT gctINT32 count;
789 /* Chip types. */
790 OUT gceHARDWARE_TYPE types[gcdCHIP_COUNT];
792 ChipInfo;
794 /* gcvHAL_ATTACH */
795 struct _gcsHAL_ATTACH
797 /* Context buffer object. */
798 OUT gckCONTEXT context;
800 /* Number of states in the buffer. */
801 OUT gctSIZE_T stateCount;
803 Attach;
805 /* gcvHAL_DETACH */
806 struct _gcsHAL_DETACH
808 /* Context buffer object. */
809 IN gckCONTEXT context;
811 Detach;
813 /* gcvHAL_COMPOSE. */
814 gcsHAL_COMPOSE Compose;
816 /* gcvHAL_GET_FRAME_INFO. */
817 struct _gcsHAL_GET_FRAME_INFO
819 OUT gcsHAL_FRAME_INFO * frameInfo;
821 GetFrameInfo;
823 /* gcvHAL_SET_TIME_OUT. */
824 struct _gcsHAL_SET_TIMEOUT
826 gctUINT32 timeOut;
828 SetTimeOut;
830 #if gcdENABLE_VG
831 /* gcvHAL_COMMIT */
832 struct _gcsHAL_VGCOMMIT
834 /* Context buffer. */
835 IN gcsVGCONTEXT_PTR context;
837 /* Command queue. */
838 IN gcsVGCMDQUEUE_PTR queue;
840 /* Number of entries in the queue. */
841 IN gctUINT entryCount;
843 /* Task table. */
844 IN gcsTASK_MASTER_TABLE_PTR taskTable;
846 VGCommit;
848 /* gcvHAL_QUERY_COMMAND_BUFFER */
849 struct _gcsHAL_QUERY_COMMAND_BUFFER
851 /* Command buffer attributes. */
852 OUT gcsCOMMAND_BUFFER_INFO information;
854 QueryCommandBuffer;
856 #endif
858 #if gcdENABLE_SHARED_INFO
859 struct _gcsHAL_GET_SHARED_INFO
861 IN gctUINT32 pid;
862 IN gctUINT32 dataId;
863 IN gcuVIDMEM_NODE_PTR node;
864 OUT gctUINT8_PTR data;
865 /* fix size */
866 OUT gctUINT8_PTR nodeData;
867 gctSIZE_T size;
869 GetSharedInfo;
871 struct _gcsHAL_SET_SHARED_INFO
873 IN gctUINT32 dataId;
874 IN gcuVIDMEM_NODE_PTR node;
875 IN gctUINT8_PTR data;
876 IN gctUINT8_PTR nodeData;
877 IN gctSIZE_T size;
879 SetSharedInfo;
880 #endif
884 gcsHAL_INTERFACE;
887 #ifdef __cplusplus
889 #endif
891 #endif /* __gc_hal_driver_h_ */