#ifndef _CLASS_H_ #define _CLASS_H_ /***************************************************************************\ |* *| |* Copyright 1993-2000 NVIDIA, Corporation. All rights reserved. *| |* *| |* NOTICE TO USER: The source code is copyrighted under U.S. and *| |* international laws. Users and possessors of this source code are *| |* hereby granted a nonexclusive, royalty-free copyright license to *| |* use this code in individual and commercial software. *| |* *| |* Any use of this source code must include, in the user documenta- *| |* tion and internal comments to the code, notices to the end user *| |* as follows: *| |* *| |* Copyright 1993-2000 NVIDIA, Corporation. All rights reserved. *| |* *| |* NVIDIA, CORPORATION MAKES NO REPRESENTATION ABOUT THE SUITABILITY *| |* OF THIS SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" *| |* WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. NVIDIA, CORPOR- *| |* ATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOURCE CODE, *| |* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGE- *| |* MENT, AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL *| |* NVIDIA, CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT, INCI- *| |* DENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RE- *| |* SULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION *| |* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF *| |* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE. *| |* *| |* U.S. Government End Users. This source code is a "commercial *| |* item," as that term is defined at 48 C.F.R. 2.101 (OCT 1995), *| |* consisting of "commercial computer software" and "commercial *| |* computer software documentation," as such terms are used in *| |* 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern- *| |* ment only as a commercial end item. Consistent with 48 C.F.R. *| |* 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), *| |* all U.S. Government End Users acquire the source code with only *| |* those rights set forth herein. *| |* *| \***************************************************************************/ /****************************** Object Manager *****************************\ * * * Module: CLASS.H * * User Object management. * * * ***************************************************************************** * * * History: * * * \***************************************************************************/ //--------------------------------------------------------------------------- // // Includes. // //--------------------------------------------------------------------------- #ifndef _BTREE_H_ #include #endif // _BTREE_H_ //--------------------------------------------------------------------------- // // Defines. // //--------------------------------------------------------------------------- #define RESERVED_NAMES 4096 #define MAX_OS_NAME_LENGTH 80 //--------------------------------------------------------------------------- // // Types and structures. // //--------------------------------------------------------------------------- // // Forward declarations of structures. // typedef struct _def_method METHOD, *PMETHOD; typedef struct _def_object OBJECT, *POBJECT; typedef struct _def_class CLASS, *PCLASS; // // Methods. // typedef RM_STATUS (*METHODPROC)(PHWINFO, POBJECT, PMETHOD, U032, V032); struct _def_method { METHODPROC Proc; U032 Low; U032 High; }; // // Objects. // typedef struct _def_class_object CLASSOBJECT, *PCLASSOBJECT; typedef struct _def_dma_object DMAOBJECT, *PDMAOBJECT; typedef struct _def_patch_object PATCHOBJECT, *PPATCHOBJECT; typedef struct _def_context_time_object TIMEOBJECT, *PTIMEOBJECT; typedef struct _def_event_notification EVENTNOTIFICATION, *PEVENTNOTIFICATION; typedef struct _def_engine_info ENGINEINFO, *PENGINEINFO; struct _def_object { U032 Name; U032 ChID; PCLASS Class; U032 Subchannel; NODE Node; POBJECT Next; PDMAOBJECT NotifyXlate; U032 NotifyAction; U032 NotifyTrigger; PEVENTNOTIFICATION NotifyEvent; PCLASS ThisClass; //KJK I don't like this!! }; // // Patch structure. // struct _def_patch_object { OBJECT Base; POBJECT Destination; POBJECT Source; }; // // NV_CLASS structure and create/destroy function prototypes. // typedef RM_STATUS (*CREATEOBJECTPROC)(PHWINFO, PCLASSOBJECT, U032, POBJECT *); typedef RM_STATUS (*DELETEOBJECTPROC)(PHWINFO, POBJECT); struct _def_class_create { U032 Class; CREATEOBJECTPROC Function; }; // // Classes. // typedef struct _def_class_methods { U032 Type; PMETHOD Method; U032 MethodMax; } CLASSMETHODS, *PCLASSMETHODS; struct _def_class { U032 Type; PMETHOD Method; U032 MethodMax; //U032 StateSize; PCLASSDESCRIPTOR ClassDecl; PCLASSDESCRIPTOR ClassInstMalloc; PENGINEDESCRIPTOR EngineDecl; PENGINEINFO EngineInfo; }; struct _def_class_object { OBJECT Base; }; //=========================================================================== // // Class Defines. // //=========================================================================== #define NV_CONTEXT_DMA_TO_MEM 3 #define NV_NULL_OBJECT 0 //--------------------------------------------------------------------------- // // Method prototypes. // //--------------------------------------------------------------------------- RM_STATUS mthdNoOperation(PHWINFO, POBJECT, PMETHOD, U032, U032); RM_STATUS mthdValidate(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetNotifyCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetNotify(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdCreateLegacy(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdCreate(PHWINFO, POBJECT, PMETHOD, U032, V032, VOID*); RM_STATUS mthdDestroy(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetNameCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetNameStart(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetNameLength(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetEnumerateCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetEnumerateStart(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetEnumerateLength(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdEnumerate(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetDmaSpecifier(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAlarmTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAlarmTimeRelative(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAlarmNotifyCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAlarmNotify(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdTmrStopTransfer(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdGetChipToken(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetOrdinal(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetSwitchNotifyCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetSwitchNotify(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetGamePortOutput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetGamePortInput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetGamePortFormat(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetStartTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetStartCtxTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetSampleRate(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetNumberChannels(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferNotifyCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferStart(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferLength(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferNotify(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferNotifyCount(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferPosNotifyCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferPosNotify(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferInCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferOutCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferInStart(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferOutStart(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferMemNotifyCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferMemLength(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferMemNotify(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetVideoInput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetVideoOutput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetCtxOrdinal(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetColormapCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetColormapFormat(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetColormapStart(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetColormapLength(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdColormapDirtyStart(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdColormapDirtyLength(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetImageOutput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetImageInput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBetaInput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBetaOutput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetRopInput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetRopOutput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetColorFormat(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetMonochromeFormat(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetGraphicsCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAudioInput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAudioFormat(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetSampleRateAdjust(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetStopLoopingCtxTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetPortamento(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetVibratoDepth(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetVibratoFrequency(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetVibratoAttackCtxTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetVibratoAttack(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetDiscardPriority(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferLoopStart(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetBufferLoopLength(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAudioOutput(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetOutputGain(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetInputGain(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAttack(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetDecay(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetSustain(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetRelease(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetAttackCtxTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetReleaseCtxTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetSustainLevel(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetTremoloDepth(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetTremoloAttackCtxTime(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetTremoloAttack(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdSetTremoloFrequency(PHWINFO, POBJECT, PMETHOD, U032, V032); // // Method aliases to common method procedure. // RM_STATUS mthdStaticImage(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdRender(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdRenderBeta(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdRender3d(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdImageToMem(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdDmaRender(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdImageBlit(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdGrSetNotify(PHWINFO, POBJECT, PMETHOD, U032, V032); RM_STATUS mthdGrSetNotifyCtxDma(PHWINFO, POBJECT, PMETHOD, U032, V032); #define mthdSetBeta mthdStaticImage #define mthdSetRop mthdStaticImage #define mthdSetColor mthdStaticImage #define mthdSetPatternShape mthdStaticImage #define mthdSetColor0 mthdStaticImage #define mthdSetColor1 mthdStaticImage #define mthdSetPattern mthdStaticImage #define mthdSetRectangle mthdStaticImage #define mthdColor mthdRender #define mthdPoint mthdRender #define mthdPoint32 mthdRender #define mthdColorPoint mthdRender #define mthdLine mthdRender #define mthdLine32 mthdRender #define mthdPolyLine mthdRender #define mthdPolyLine32 mthdRender #define mthdColorPolyLine mthdRender #define mthdLin mthdRender #define mthdLin32 mthdRender #define mthdPolyLin mthdRender #define mthdPolyLin32 mthdRender #define mthdColorPolyLin mthdRender #define mthdTriangle mthdRender #define mthdTriangle32 mthdRender #define mthdTrimesh mthdRender #define mthdTrimesh32 mthdRender #define mthdColorTriangle mthdRender #define mthdColorTrimesh mthdRender #define mthdRectangle mthdRender #define mthdControlPointIn mthdRender #define mthdControlPointOut mthdRender #define mthdControlPointOutFP mthdRender #define mthdSize mthdRender #define mthdImagePitch mthdRender #define mthdImageStart mthdRender #define mthdSizeIn mthdRender #define mthdColor0 mthdRender #define mthdColor1 mthdRender #define mthdMonochrome mthdRender #define mthdSubdivideIn mthdRender #define mthdColorBeta mthdRenderBeta #define mthdControlBetaOut mthdRenderBeta #define mthdSubdivideInBeta mthdRenderBeta #define mthdFilterBeta mthdRenderBeta #define mthdControlPointOutBeta mthdRenderBeta #define mthdControlPointOutFPBeta mthdRenderBeta #define mthdBlitPointIn mthdImageBlit #define mthdBlitPointOut mthdImageBlit #define mthdBlitSize mthdImageBlit #define mthdImageToMemPoint mthdImageToMem #define mthdImageToMemSize mthdImageToMem #define mthdImageToMemPitch mthdImageToMem #define mthdImageToMemStart mthdImageToMem #define mthdGraphicsFromMemPoint mthdDmaRender #define mthdGraphicsFromMemSize mthdDmaRender #define mthdGraphicsFromMemPitch mthdDmaRender #define mthdGraphicsFromMemStart mthdDmaRender #define mthdGraphicsFromMemSize mthdDmaRender //--------------------------------------------------------------------------- // // Class object prototypes. // //--------------------------------------------------------------------------- RM_STATUS classCreateWellKnownObjects(PHWINFO, U032); RM_STATUS classDeleteWellKnownObjects(VOID*, POBJECT); RM_STATUS classInitCommonObject(POBJECT, PCLASSOBJECT, U032); RM_STATUS classCreate(VOID*, PCLASSOBJECT, U032, POBJECT *, VOID*); RM_STATUS classDestroy(VOID*, POBJECT); RM_STATUS nopCreate(VOID*, PCLASSOBJECT, U032, POBJECT *, VOID*); RM_STATUS nopDestroy(VOID*, POBJECT); RM_STATUS classSoftwareMethod(PHWINFO, POBJECT, U032, V032); RM_STATUS classDirectSoftwareMethod(PHWINFO, POBJECT, U032, V032); // JJV - Moved this structure from class66.c and class63.c typedef struct _def_surface_attributes { U032 StartAddress; U032 Type; // tells you whether this is an interleaved surface or other U032 Pitch; U032 Length; U032 FittedSize; // not used for overlay } SURFACEATTRIBUTES, * PSURFACEATTRIBUTES ; // JJV - Moved these defines from class66.c // defined digitisers #define PHILIPS_DEVICE_110 0 #define PHILIPS_DEVICE_111A 1 #define ITT_VPX3225D_A1 0x20 #define ITT_VPX3225D_C3 0x23 #define SAMSUNG_DEVICE_127 0xF0 #define ST_NTSC 0x0 #define ST_PAL 0x10 #define ST_UNDECODED 0xFFFFFFFF #define IS_FLIP_FOR_OVERLAY_SURFACE_0 0x10 #define IS_FLIP_FOR_OVERLAY_SURFACE_1 0x20 #define NV_VCTM_IMAGE_FORMAT_NEXT_FIELD_EVEN 0x0 #define NV_VCTM_IMAGE_FORMAT_NEXT_FIELD_ODD 0x80000000 #define NV_VCTM_IMAGE_FORMAT_COLOR_LE_Y8V8Y8U8 0x00020001 #define NV_VCTM_VBI_FORMAT_NEXT_FIELD_EVEN 0x0 #define NV_VCTM_VBI_FORMAT_NEXT_FIELD_ODD 0x80000000 #define NV_VCTM_VBI_FORMAT_COLOR_LE_Y8_P4 0x01010000 //--------------------------------------------------------------------------- // // Engine structures and prototypes. // //--------------------------------------------------------------------------- // // Engine info structure. // typedef RM_STATUS (*ENGINECREATEOBJECT)(VOID*, PCLASSOBJECT, U032, POBJECT *, VOID*); typedef RM_STATUS (*ENGINEDELETEOBJECT)(VOID*, POBJECT); struct _def_engine_info { U032 Tag; // cross-ref with rom data tables PMETHOD Methods; // default methods U032 MethodMax; // default method max ENGINECREATEOBJECT CreateObject; ENGINEDELETEOBJECT DestroyObject; }; typedef struct _def_engine_db { PENGINEINFO pEngineInfos; PENGINEDESCRIPTOR pEngineDescriptors; U032 numEngineDescriptors; } ENGINEDB, *PENGINEDB; // kernel/hal/haleng.c RM_STATUS engineGetInfo(PENGINEDB, U032, PENGINEINFO *, PENGINEDESCRIPTOR *); U032 engineGetBufferSize(PENGINEDB, U032, U032); //--------------------------------------------------------------------------- // // Class database structure. // // This state is pulled from the HAL tables. // //--------------------------------------------------------------------------- typedef struct _def_class_db { PCLASS pClasses; U032 numClasses; PCLASSDESCRIPTOR pClassDescriptors; U032 numClassDescriptors; } CLASSDB, *PCLASSDB; RM_STATUS classBuildDB(PENGINEDB, PCLASSDB); RM_STATUS classDestroyDB(PCLASSDB); RM_STATUS classGetClass(PCLASSDB, U032, PCLASS *); #endif // _CLASS_H_