
/*
** Copyright 1998-2014, NVIDIA Corporation.
** All Rights Reserved.
** 
** THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL TO
** NVIDIA, CORPORATION.  USE, REPRODUCTION OR DISCLOSURE TO ANY THIRD PARTY
** IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORPORATION.
*/

/* THIS FILE IS AUTOMATICALLY GENERATED - DO NOT EDIT */



#ifndef __radfnptrinit_h_
#define __radfnptrinit_h_

#include <RAD/rad.h>

#ifdef __cplusplus
extern "C" {
#endif
extern PFNRADCREATEDEVICEPROC radCreateDevice;
extern PFNRADREFERENCEDEVICEPROC radReferenceDevice;
extern PFNRADRELEASEDEVICEPROC radReleaseDevice;
extern PFNRADGETTOKENHEADERPROC radGetTokenHeader;
extern PFNRADCREATEQUEUEPROC radCreateQueue;
extern PFNRADREFERENCEQUEUEPROC radReferenceQueue;
extern PFNRADRELEASEQUEUEPROC radReleaseQueue;
extern PFNRADQUEUETAGBUFFERPROC radQueueTagBuffer;
extern PFNRADQUEUETAGTEXTUREPROC radQueueTagTexture;
extern PFNRADQUEUESUBMITCOMMANDSPROC radQueueSubmitCommands;
extern PFNRADFLUSHQUEUEPROC radFlushQueue;
extern PFNRADFINISHQUEUEPROC radFinishQueue;
extern PFNRADQUEUEVIEWPORTPROC radQueueViewport;
extern PFNRADQUEUESCISSORPROC radQueueScissor;
extern PFNRADQUEUECOPYBUFFERTOIMAGEPROC radQueueCopyBufferToImage;
extern PFNRADQUEUECOPYIMAGETOBUFFERPROC radQueueCopyImageToBuffer;
extern PFNRADQUEUECOPYBUFFERPROC radQueueCopyBuffer;
extern PFNRADQUEUECLEARCOLORPROC radQueueClearColor;
extern PFNRADQUEUECLEARDEPTHPROC radQueueClearDepth;
extern PFNRADQUEUECLEARSTENCILPROC radQueueClearStencil;
extern PFNRADQUEUEPRESENTPROC radQueuePresent;
extern PFNRADQUEUEDRAWARRAYSPROC radQueueDrawArrays;
extern PFNRADQUEUEDRAWELEMENTSPROC radQueueDrawElements;
extern PFNRADQUEUEBINDPIPELINEPROC radQueueBindPipeline;
extern PFNRADQUEUEBINDGROUPPROC radQueueBindGroup;
extern PFNRADQUEUEBEGINPASSPROC radQueueBeginPass;
extern PFNRADQUEUEENDPASSPROC radQueueEndPass;
extern PFNRADQUEUESUBMITDYNAMICPROC radQueueSubmitDynamic;
extern PFNRADQUEUESTENCILVALUEMASKPROC radQueueStencilValueMask;
extern PFNRADQUEUESTENCILMASKPROC radQueueStencilMask;
extern PFNRADQUEUESTENCILREFPROC radQueueStencilRef;
extern PFNRADQUEUEBLENDCOLORPROC radQueueBlendColor;
extern PFNRADQUEUEPOINTSIZEPROC radQueuePointSize;
extern PFNRADQUEUELINEWIDTHPROC radQueueLineWidth;
extern PFNRADQUEUEPOLYGONOFFSETCLAMPPROC radQueuePolygonOffsetClamp;
extern PFNRADQUEUESAMPLEMASKPROC radQueueSampleMask;
extern PFNRADCREATEPROGRAMPROC radCreateProgram;
extern PFNRADREFERENCEPROGRAMPROC radReferenceProgram;
extern PFNRADRELEASEPROGRAMPROC radReleaseProgram;
extern PFNRADPROGRAMSOURCEPROC radProgramSource;
extern PFNRADCREATEBUFFERPROC radCreateBuffer;
extern PFNRADREFERENCEBUFFERPROC radReferenceBuffer;
extern PFNRADRELEASEBUFFERPROC radReleaseBuffer;
extern PFNRADBUFFERACCESSPROC radBufferAccess;
extern PFNRADBUFFERMAPACCESSPROC radBufferMapAccess;
extern PFNRADBUFFERSTORAGEPROC radBufferStorage;
extern PFNRADMAPBUFFERPROC radMapBuffer;
extern PFNRADGETVERTEXHANDLEPROC radGetVertexHandle;
extern PFNRADGETINDEXHANDLEPROC radGetIndexHandle;
extern PFNRADGETUNIFORMHANDLEPROC radGetUniformHandle;
extern PFNRADGETBINDGROUPHANDLEPROC radGetBindGroupHandle;
extern PFNRADCREATETEXTUREPROC radCreateTexture;
extern PFNRADREFERENCETEXTUREPROC radReferenceTexture;
extern PFNRADRELEASETEXTUREPROC radReleaseTexture;
extern PFNRADTEXTUREACCESSPROC radTextureAccess;
extern PFNRADTEXTURESTORAGEPROC radTextureStorage;
extern PFNRADGETTEXTURESAMPLERHANDLEPROC radGetTextureSamplerHandle;
extern PFNRADGETTEXTURERENDERTARGETHANDLEPROC radGetTextureRenderTargetHandle;
extern PFNRADCREATESAMPLERPROC radCreateSampler;
extern PFNRADREFERENCESAMPLERPROC radReferenceSampler;
extern PFNRADRELEASESAMPLERPROC radReleaseSampler;
extern PFNRADSAMPLERDEFAULTPROC radSamplerDefault;
extern PFNRADSAMPLERMINMAGFILTERPROC radSamplerMinMagFilter;
extern PFNRADSAMPLERWRAPMODEPROC radSamplerWrapMode;
extern PFNRADSAMPLERLODCLAMPPROC radSamplerLodClamp;
extern PFNRADSAMPLERLODBIASPROC radSamplerLodBias;
extern PFNRADSAMPLERCOMPAREPROC radSamplerCompare;
extern PFNRADSAMPLERBORDERCOLORFLOATPROC radSamplerBorderColorFloat;
extern PFNRADSAMPLERBORDERCOLORINTPROC radSamplerBorderColorInt;
extern PFNRADCREATECOLORSTATEPROC radCreateColorState;
extern PFNRADREFERENCECOLORSTATEPROC radReferenceColorState;
extern PFNRADRELEASECOLORSTATEPROC radReleaseColorState;
extern PFNRADCOLORDEFAULTPROC radColorDefault;
extern PFNRADCOLORBLENDENABLEPROC radColorBlendEnable;
extern PFNRADCOLORBLENDFUNCPROC radColorBlendFunc;
extern PFNRADCOLORBLENDEQUATIONPROC radColorBlendEquation;
extern PFNRADCOLORMASKPROC radColorMask;
extern PFNRADCOLORNUMTARGETSPROC radColorNumTargets;
extern PFNRADCOLORLOGICOPENABLEPROC radColorLogicOpEnable;
extern PFNRADCOLORLOGICOPPROC radColorLogicOp;
extern PFNRADCOLORALPHATOCOVERAGEENABLEPROC radColorAlphaToCoverageEnable;
extern PFNRADCOLORBLENDCOLORPROC radColorBlendColor;
extern PFNRADCOLORDYNAMICPROC radColorDynamic;
extern PFNRADCREATERASTERSTATEPROC radCreateRasterState;
extern PFNRADREFERENCERASTERSTATEPROC radReferenceRasterState;
extern PFNRADRELEASERASTERSTATEPROC radReleaseRasterState;
extern PFNRADRASTERDEFAULTPROC radRasterDefault;
extern PFNRADRASTERPOINTSIZEPROC radRasterPointSize;
extern PFNRADRASTERLINEWIDTHPROC radRasterLineWidth;
extern PFNRADRASTERCULLFACEPROC radRasterCullFace;
extern PFNRADRASTERFRONTFACEPROC radRasterFrontFace;
extern PFNRADRASTERPOLYGONMODEPROC radRasterPolygonMode;
extern PFNRADRASTERPOLYGONOFFSETCLAMPPROC radRasterPolygonOffsetClamp;
extern PFNRADRASTERPOLYGONOFFSETENABLESPROC radRasterPolygonOffsetEnables;
extern PFNRADRASTERDISCARDENABLEPROC radRasterDiscardEnable;
extern PFNRADRASTERMULTISAMPLEENABLEPROC radRasterMultisampleEnable;
extern PFNRADRASTERSAMPLESPROC radRasterSamples;
extern PFNRADRASTERSAMPLEMASKPROC radRasterSampleMask;
extern PFNRADRASTERDYNAMICPROC radRasterDynamic;
extern PFNRADCREATEDEPTHSTENCILSTATEPROC radCreateDepthStencilState;
extern PFNRADREFERENCEDEPTHSTENCILSTATEPROC radReferenceDepthStencilState;
extern PFNRADRELEASEDEPTHSTENCILSTATEPROC radReleaseDepthStencilState;
extern PFNRADDEPTHSTENCILDEFAULTPROC radDepthStencilDefault;
extern PFNRADDEPTHSTENCILDEPTHTESTENABLEPROC radDepthStencilDepthTestEnable;
extern PFNRADDEPTHSTENCILDEPTHWRITEENABLEPROC radDepthStencilDepthWriteEnable;
extern PFNRADDEPTHSTENCILDEPTHFUNCPROC radDepthStencilDepthFunc;
extern PFNRADDEPTHSTENCILSTENCILTESTENABLEPROC radDepthStencilStencilTestEnable;
extern PFNRADDEPTHSTENCILSTENCILFUNCPROC radDepthStencilStencilFunc;
extern PFNRADDEPTHSTENCILSTENCILOPPROC radDepthStencilStencilOp;
extern PFNRADDEPTHSTENCILSTENCILMASKPROC radDepthStencilStencilMask;
extern PFNRADDEPTHSTENCILDYNAMICPROC radDepthStencilDynamic;
extern PFNRADCREATEVERTEXSTATEPROC radCreateVertexState;
extern PFNRADREFERENCEVERTEXSTATEPROC radReferenceVertexState;
extern PFNRADRELEASEVERTEXSTATEPROC radReleaseVertexState;
extern PFNRADVERTEXDEFAULTPROC radVertexDefault;
extern PFNRADVERTEXATTRIBFORMATPROC radVertexAttribFormat;
extern PFNRADVERTEXATTRIBBINDINGPROC radVertexAttribBinding;
extern PFNRADVERTEXBINDINGGROUPPROC radVertexBindingGroup;
extern PFNRADVERTEXATTRIBENABLEPROC radVertexAttribEnable;
extern PFNRADVERTEXBINDINGSTRIDEPROC radVertexBindingStride;
extern PFNRADCREATERTFORMATSTATEPROC radCreateRtFormatState;
extern PFNRADREFERENCERTFORMATSTATEPROC radReferenceRtFormatState;
extern PFNRADRELEASERTFORMATSTATEPROC radReleaseRtFormatState;
extern PFNRADRTFORMATDEFAULTPROC radRtFormatDefault;
extern PFNRADRTFORMATCOLORFORMATPROC radRtFormatColorFormat;
extern PFNRADRTFORMATDEPTHFORMATPROC radRtFormatDepthFormat;
extern PFNRADRTFORMATSTENCILFORMATPROC radRtFormatStencilFormat;
extern PFNRADRTFORMATCOLORSAMPLESPROC radRtFormatColorSamples;
extern PFNRADRTFORMATDEPTHSTENCILSAMPLESPROC radRtFormatDepthStencilSamples;
extern PFNRADCREATEPIPELINEPROC radCreatePipeline;
extern PFNRADREFERENCEPIPELINEPROC radReferencePipeline;
extern PFNRADRELEASEPIPELINEPROC radReleasePipeline;
extern PFNRADPIPELINEPROGRAMSTAGESPROC radPipelineProgramStages;
extern PFNRADPIPELINEVERTEXSTATEPROC radPipelineVertexState;
extern PFNRADPIPELINECOLORSTATEPROC radPipelineColorState;
extern PFNRADPIPELINERASTERSTATEPROC radPipelineRasterState;
extern PFNRADPIPELINEDEPTHSTENCILSTATEPROC radPipelineDepthStencilState;
extern PFNRADPIPELINERTFORMATSTATEPROC radPipelineRtFormatState;
extern PFNRADPIPELINEPRIMITIVETYPEPROC radPipelinePrimitiveType;
extern PFNRADCOMPILEPIPELINEPROC radCompilePipeline;
extern PFNRADGETPIPELINEHANDLEPROC radGetPipelineHandle;
extern PFNRADCREATECOMMANDBUFFERPROC radCreateCommandBuffer;
extern PFNRADREFERENCECOMMANDBUFFERPROC radReferenceCommandBuffer;
extern PFNRADRELEASECOMMANDBUFFERPROC radReleaseCommandBuffer;
extern PFNRADCMDBINDPIPELINEPROC radCmdBindPipeline;
extern PFNRADCMDBINDGROUPPROC radCmdBindGroup;
extern PFNRADCMDDRAWARRAYSPROC radCmdDrawArrays;
extern PFNRADCMDDRAWELEMENTSPROC radCmdDrawElements;
extern PFNRADCOMPILECOMMANDBUFFERPROC radCompileCommandBuffer;
extern PFNRADGETCOMMANDHANDLEPROC radGetCommandHandle;
extern PFNRADCMDSTENCILVALUEMASKPROC radCmdStencilValueMask;
extern PFNRADCMDSTENCILMASKPROC radCmdStencilMask;
extern PFNRADCMDSTENCILREFPROC radCmdStencilRef;
extern PFNRADCMDBLENDCOLORPROC radCmdBlendColor;
extern PFNRADCMDPOINTSIZEPROC radCmdPointSize;
extern PFNRADCMDLINEWIDTHPROC radCmdLineWidth;
extern PFNRADCMDPOLYGONOFFSETCLAMPPROC radCmdPolygonOffsetClamp;
extern PFNRADCMDSAMPLEMASKPROC radCmdSampleMask;
extern PFNRADCREATEPASSPROC radCreatePass;
extern PFNRADREFERENCEPASSPROC radReferencePass;
extern PFNRADRELEASEPASSPROC radReleasePass;
extern PFNRADPASSDEFAULTPROC radPassDefault;
extern PFNRADCOMPILEPASSPROC radCompilePass;
extern PFNRADPASSRENDERTARGETSPROC radPassRenderTargets;
extern PFNRADPASSPRESERVEENABLEPROC radPassPreserveEnable;
extern PFNRADPASSDISCARDPROC radPassDiscard;
extern PFNRADPASSRESOLVEPROC radPassResolve;
extern PFNRADPASSSTOREPROC radPassStore;
extern PFNRADPASSCLIPPROC radPassClip;
extern PFNRADPASSDEPENDENCIESPROC radPassDependencies;
extern PFNRADPASSTILINGBOUNDARYPROC radPassTilingBoundary;
extern PFNRADPASSTILEFILTERWIDTHPROC radPassTileFilterWidth;
extern PFNRADPASSTILEFOOTPRINTPROC radPassTileFootprint;
extern PFNRADCREATESYNCPROC radCreateSync;
extern PFNRADREFERENCESYNCPROC radReferenceSync;
extern PFNRADRELEASESYNCPROC radReleaseSync;
extern PFNRADQUEUEFENCESYNCPROC radQueueFenceSync;
extern PFNRADWAITSYNCPROC radWaitSync;
extern PFNRADQUEUEWAITSYNCPROC radQueueWaitSync;


void radLoadProcs(PFNRADGETPROCADDRESSPROC getProc);

#ifdef __cplusplus
} // extern "C"
#endif
#endif // __radfnptrinit_h_
