• Main Page
  • Modules
  • Files
  • File List
  • Globals

NvFlowContextExt.h

Go to the documentation of this file.
00001 /*
00002 * Copyright (c) 2014-2021, NVIDIA CORPORATION.  All rights reserved.
00003 *
00004 * NVIDIA CORPORATION and its licensors retain all intellectual property
00005 * and proprietary rights in and to this software, related documentation
00006 * and any modifications thereto.  Any use, reproduction, disclosure or
00007 * distribution of this software and related documentation without an express
00008 * license agreement from NVIDIA CORPORATION is strictly prohibited.
00009 */
00010 
00011 #pragma once
00012 
00013 #include "NvFlowContext.h"
00014 
00016 struct NvFlowContext;
00017 
00018 struct NvFlowConstantBuffer;
00019 struct NvFlowVertexBuffer;
00020 struct NvFlowIndexBuffer;
00021 struct NvFlowResource;
00022 struct NvFlowResourceRW;
00023 struct NvFlowBuffer;
00024 struct NvFlowTexture1D;
00025 struct NvFlowTexture2D;
00026 struct NvFlowTexture3D;
00027 
00029 struct NvFlowContextObject;
00030 
00031 NV_FLOW_API NvFlowUint NvFlowContextObjectAddRef(NvFlowContextObject* object);
00032 
00033 NV_FLOW_API NvFlowUint NvFlowContextObjectRelease(NvFlowContextObject* object);
00034 
00035 NV_FLOW_API NvFlowUint64 NvFlowContextObjectGetGPUBytesUsed(NvFlowContextObject* object);
00036 
00038 struct NvFlowMappedData
00039 {
00040     void* data;
00041     NvFlowUint rowPitch;
00042     NvFlowUint depthPitch;
00043 };
00044 
00046 struct NvFlowConstantBuffer;
00047 
00048 struct NvFlowConstantBufferDesc
00049 {
00050     NvFlowUint sizeInBytes;
00051     bool uploadAccess;
00052 };
00053 
00054 NV_FLOW_API void NvFlowConstantBufferGetDesc(NvFlowConstantBuffer* buffer, NvFlowConstantBufferDesc* desc);
00055 
00056 NV_FLOW_API NvFlowConstantBuffer* NvFlowCreateConstantBuffer(NvFlowContext* context, const NvFlowConstantBufferDesc* desc);
00057 
00058 NV_FLOW_API void NvFlowReleaseConstantBuffer(NvFlowConstantBuffer* buffer);
00059 
00060 NV_FLOW_API NvFlowContextObject* NvFlowConstantBufferGetContextObject(NvFlowConstantBuffer* buffer);
00061 
00062 NV_FLOW_API void* NvFlowConstantBufferMap(NvFlowContext* context, NvFlowConstantBuffer* constantBuffer);
00063 
00064 NV_FLOW_API void NvFlowConstantBufferUnmap(NvFlowContext* context, NvFlowConstantBuffer* constantBuffer);
00065 
00067 struct NvFlowVertexBuffer;
00068 
00069 struct NvFlowVertexBufferDesc
00070 {
00071     const void* data;
00072     NvFlowUint sizeInBytes;
00073 };
00074 
00075 NV_FLOW_API void NvFlowVertexBufferGetDesc(NvFlowVertexBuffer* buffer, NvFlowVertexBufferDesc* desc);
00076 
00077 NV_FLOW_API NvFlowVertexBuffer* NvFlowCreateVertexBuffer(NvFlowContext* context, const NvFlowVertexBufferDesc* desc);
00078 
00079 NV_FLOW_API void NvFlowReleaseVertexBuffer(NvFlowVertexBuffer* vertexBuffer);
00080 
00081 NV_FLOW_API NvFlowContextObject* NvFlowVertexBufferGetContextObject(NvFlowVertexBuffer* buffer);
00082 
00083 NV_FLOW_API void* NvFlowVertexBufferMap(NvFlowContext* context, NvFlowVertexBuffer* vertexBuffer);
00084 
00085 NV_FLOW_API void NvFlowVertexBufferUnmap(NvFlowContext* context, NvFlowVertexBuffer* vertexBuffer);
00086 
00088 struct NvFlowIndexBuffer;
00089 
00090 struct NvFlowIndexBufferDesc
00091 {
00092     const void* data;
00093     NvFlowUint sizeInBytes;
00094     NvFlowFormat format;
00095 };
00096 
00097 NV_FLOW_API void NvFlowIndexBufferGetDesc(NvFlowIndexBuffer* index, NvFlowIndexBufferDesc* desc);
00098 
00099 NV_FLOW_API NvFlowIndexBuffer* NvFlowCreateIndexBuffer(NvFlowContext* context, const NvFlowIndexBufferDesc* desc);
00100 
00101 NV_FLOW_API void NvFlowReleaseIndexBuffer(NvFlowIndexBuffer* buffer);
00102 
00103 NV_FLOW_API NvFlowContextObject* NvFlowIndexBufferGetContextObject(NvFlowIndexBuffer* buffer);
00104 
00105 NV_FLOW_API void* NvFlowIndexBufferMap(NvFlowContext* context, NvFlowIndexBuffer* indexBuffer);
00106 
00107 NV_FLOW_API void NvFlowIndexBufferUnmap(NvFlowContext* context, NvFlowIndexBuffer* indexBuffer);
00108 
00110 struct NvFlowResource;
00111 
00112 NV_FLOW_API NvFlowContextObject* NvFlowResourceGetContextObject(NvFlowResource* resource);
00113 
00115 struct NvFlowResourceRW;
00116 
00117 NV_FLOW_API NvFlowContextObject* NvFlowResourceRWGetContextObject(NvFlowResourceRW* resourceRW);
00118 
00119 NV_FLOW_API NvFlowResource* NvFlowResourceRWGetResource(NvFlowResourceRW* resourceRW);
00120 
00122 struct NvFlowRenderTarget;
00123 
00125 struct NvFlowViewport
00126 {
00127     float topLeftX;
00128     float topLeftY;
00129     float width;
00130     float height;
00131     float minDepth;
00132     float maxDepth;
00133 };
00134 
00135 struct NvFlowRenderTargetDesc
00136 {
00137     NvFlowViewport viewport;
00138     NvFlowFormat rt_format;
00139 };
00140 
00141 NV_FLOW_API void NvFlowRenderTargetGetDesc(NvFlowRenderTarget* rt, NvFlowRenderTargetDesc* desc);
00142 
00143 NV_FLOW_API void NvFlowRenderTargetSetViewport(NvFlowRenderTarget* rt, const NvFlowViewport* viewport);
00144 
00146 struct NvFlowDepthStencil;
00147 
00148 struct NvFlowDepthStencilDesc
00149 {
00150     NvFlowFormat ds_format;
00151     NvFlowViewport viewport;
00152     NvFlowUint width;
00153     NvFlowUint height;
00154 };
00155 
00156 NV_FLOW_API void NvFlowDepthStencilGetDesc(NvFlowDepthStencil* ds, NvFlowDepthStencilDesc* desc);
00157 
00158 NV_FLOW_API void NvFlowDepthStencilSetViewport(NvFlowDepthStencil* ds, const NvFlowViewport* viewport);
00159 
00161 struct NvFlowBuffer;
00162 
00163 struct NvFlowBufferDesc
00164 {
00165     NvFlowFormat format;
00166     NvFlowUint dim;
00167     bool uploadAccess;
00168     bool downloadAccess;
00169 };
00170 
00171 struct NvFlowBufferViewDesc
00172 {
00173     NvFlowFormat format;
00174 };
00175 
00176 NV_FLOW_API void NvFlowBufferGetDesc(NvFlowBuffer* buffer, NvFlowBufferDesc* desc);
00177 
00178 NV_FLOW_API NvFlowBuffer* NvFlowCreateBuffer(NvFlowContext* context, const NvFlowBufferDesc* desc);
00179 
00180 NV_FLOW_API NvFlowBuffer* NvFlowCreateBufferView(NvFlowContext* context, NvFlowBuffer* buffer, const NvFlowBufferViewDesc* desc);
00181 
00182 NV_FLOW_API void NvFlowReleaseBuffer(NvFlowBuffer* buffer);
00183 
00184 NV_FLOW_API NvFlowContextObject* NvFlowBufferGetContextObject(NvFlowBuffer* buffer);
00185 
00186 NV_FLOW_API NvFlowResource* NvFlowBufferGetResource(NvFlowBuffer* buffer);
00187 
00188 NV_FLOW_API NvFlowResourceRW* NvFlowBufferGetResourceRW(NvFlowBuffer* buffer);
00189 
00190 NV_FLOW_API void* NvFlowBufferMap(NvFlowContext* context, NvFlowBuffer* buffer);
00191 
00192 NV_FLOW_API void NvFlowBufferUnmap(NvFlowContext* context, NvFlowBuffer* buffer);
00193 
00194 NV_FLOW_API void NvFlowBufferUnmapRange(NvFlowContext* context, NvFlowBuffer* buffer, NvFlowUint offset, NvFlowUint numBytes);
00195 
00196 NV_FLOW_API void NvFlowBufferDownload(NvFlowContext* context, NvFlowBuffer* buffer);
00197 
00198 NV_FLOW_API void NvFlowBufferDownloadRange(NvFlowContext* context, NvFlowBuffer* buffer, NvFlowUint offset, NvFlowUint numBytes);
00199 
00200 NV_FLOW_API void* NvFlowBufferMapDownload(NvFlowContext* context, NvFlowBuffer* buffer);
00201 
00202 NV_FLOW_API void NvFlowBufferUnmapDownload(NvFlowContext* context, NvFlowBuffer* buffer);
00203 
00205 struct NvFlowTexture1D;
00206 
00207 struct NvFlowTexture1DDesc
00208 {
00209     NvFlowFormat format;
00210     NvFlowUint dim;
00211     bool uploadAccess;
00212 };
00213 
00214 NV_FLOW_API void NvFlowTexture1DGetDesc(NvFlowTexture1D* tex, NvFlowTexture1DDesc* desc);
00215 
00216 NV_FLOW_API NvFlowTexture1D* NvFlowCreateTexture1D(NvFlowContext* context, const NvFlowTexture1DDesc* desc);
00217 
00218 NV_FLOW_API void NvFlowReleaseTexture1D(NvFlowTexture1D* tex);
00219 
00220 NV_FLOW_API NvFlowContextObject* NvFlowTexture1DGetContextObject(NvFlowTexture1D* tex);
00221 
00222 NV_FLOW_API NvFlowResource* NvFlowTexture1DGetResource(NvFlowTexture1D* tex);
00223 
00224 NV_FLOW_API NvFlowResourceRW* NvFlowTexture1DGetResourceRW(NvFlowTexture1D* tex);
00225 
00226 NV_FLOW_API void* NvFlowTexture1DMap(NvFlowContext* context, NvFlowTexture1D* tex);
00227 
00228 NV_FLOW_API void NvFlowTexture1DUnmap(NvFlowContext* context, NvFlowTexture1D* tex);
00229 
00231 struct NvFlowTexture2D;
00232 
00233 struct NvFlowTexture2DDesc
00234 {
00235     NvFlowFormat format;
00236     NvFlowUint width;
00237     NvFlowUint height;
00238 };
00239 
00240 NV_FLOW_API void NvFlowTexture2DGetDesc(NvFlowTexture2D* tex, NvFlowTexture2DDesc* desc);
00241 
00242 NV_FLOW_API NvFlowTexture2D* NvFlowCreateTexture2D(NvFlowContext* context, const NvFlowTexture2DDesc* desc);
00243 
00244 NV_FLOW_API NvFlowTexture2D* NvFlowShareTexture2D(NvFlowContext* context, NvFlowTexture2D* sharedTexture);
00245 
00246 NV_FLOW_API NvFlowTexture2D* NvFlowCreateTexture2DCrossAPI(NvFlowContext* context, const NvFlowTexture2DDesc* desc);
00247 
00248 NV_FLOW_API NvFlowTexture2D* NvFlowShareTexture2DCrossAPI(NvFlowContext* context, NvFlowTexture2D* sharedTexture);
00249 
00250 NV_FLOW_API void NvFlowReleaseTexture2D(NvFlowTexture2D* tex);
00251 
00252 NV_FLOW_API NvFlowContextObject* NvFlowTexture2DGetContextObject(NvFlowTexture2D* tex);
00253 
00254 NV_FLOW_API NvFlowResource* NvFlowTexture2DGetResource(NvFlowTexture2D* tex);
00255 
00256 NV_FLOW_API NvFlowResourceRW* NvFlowTexture2DGetResourceRW(NvFlowTexture2D* tex);
00257 
00259 struct NvFlowTexture3D;
00260 
00261 struct NvFlowTexture3DDesc
00262 {
00263     NvFlowFormat format;
00264     NvFlowDim dim;
00265     bool uploadAccess;
00266     bool downloadAccess;
00267 };
00268 
00269 NV_FLOW_API void NvFlowTexture3DGetDesc(NvFlowTexture3D* tex, NvFlowTexture3DDesc* desc);
00270 
00271 NV_FLOW_API NvFlowTexture3D* NvFlowCreateTexture3D(NvFlowContext* context, const NvFlowTexture3DDesc* desc);
00272 
00273 NV_FLOW_API void NvFlowReleaseTexture3D(NvFlowTexture3D* tex);
00274 
00275 NV_FLOW_API NvFlowContextObject* NvFlowTexture3DGetContextObject(NvFlowTexture3D* tex);
00276 
00277 NV_FLOW_API NvFlowResource* NvFlowTexture3DGetResource(NvFlowTexture3D* tex);
00278 
00279 NV_FLOW_API NvFlowResourceRW* NvFlowTexture3DGetResourceRW(NvFlowTexture3D* tex);
00280 
00281 NV_FLOW_API NvFlowMappedData NvFlowTexture3DMap(NvFlowContext* context, NvFlowTexture3D* tex);
00282 
00283 NV_FLOW_API void NvFlowTexture3DUnmap(NvFlowContext* context, NvFlowTexture3D* tex);
00284 
00285 NV_FLOW_API void NvFlowTexture3DDownload(NvFlowContext* context, NvFlowTexture3D* tex);
00286 
00287 NV_FLOW_API NvFlowMappedData NvFlowTexture3DMapDownload(NvFlowContext* context, NvFlowTexture3D* tex);
00288 
00289 NV_FLOW_API void NvFlowTexture3DUnmapDownload(NvFlowContext* context, NvFlowTexture3D* tex);
00290 
00292 struct NvFlowHeapSparse;
00293 
00294 struct NvFlowHeapSparseDesc
00295 {
00296     NvFlowUint sizeInBytes;
00297 };
00298 
00299 NV_FLOW_API void NvFlowHeapSparseGetDesc(NvFlowHeapSparse* heap, NvFlowHeapSparseDesc* desc);
00300 
00301 NV_FLOW_API NvFlowHeapSparse* NvFlowCreateHeapSparse(NvFlowContext* context, const NvFlowHeapSparseDesc* desc);
00302 
00303 NV_FLOW_API void NvFlowReleaseHeapSparse(NvFlowHeapSparse* heap);
00304 
00305 NV_FLOW_API NvFlowContextObject* NvFlowHeapSparseGetContextObject(NvFlowHeapSparse* heap);
00306 
00308 struct NvFlowTexture3DSparse;
00309 
00310 struct NvFlowTexture3DSparseDesc
00311 {
00312     NvFlowFormat format;
00313     NvFlowDim dim;
00314 };
00315 
00316 NV_FLOW_API void NvFlowTexture3DSparseGetDesc(NvFlowTexture3DSparse* tex, NvFlowTexture3DSparseDesc* desc);
00317 
00318 NV_FLOW_API NvFlowTexture3DSparse* NvFlowCreateTexture3DSparse(NvFlowContext* context, const NvFlowTexture3DSparseDesc* desc);
00319 
00320 NV_FLOW_API void NvFlowReleaseTexture3DSparse(NvFlowTexture3DSparse* tex);
00321 
00322 NV_FLOW_API NvFlowContextObject* NvFlowTexture3DSparseGetContextObject(NvFlowTexture3DSparse* tex);
00323 
00324 NV_FLOW_API NvFlowResource* NvFlowTexture3DSparseGetResource(NvFlowTexture3DSparse* tex);
00325 
00326 NV_FLOW_API NvFlowResourceRW* NvFlowTexture3DSparseGetResourceRW(NvFlowTexture3DSparse* tex);
00327 
00329 struct NvFlowColorBuffer;
00330 
00331 struct NvFlowColorBufferDesc
00332 {
00333     NvFlowFormat format;
00334     NvFlowUint width;
00335     NvFlowUint height;
00336 };
00337 
00338 NV_FLOW_API void NvFlowColorBufferGetDesc(NvFlowColorBuffer* tex, NvFlowColorBufferDesc* desc);
00339 
00340 NV_FLOW_API NvFlowColorBuffer* NvFlowCreateColorBuffer(NvFlowContext* context, const NvFlowColorBufferDesc* desc);
00341 
00342 NV_FLOW_API void NvFlowReleaseColorBuffer(NvFlowColorBuffer* tex);
00343 
00344 NV_FLOW_API NvFlowContextObject* NvFlowColorBufferGetContextObject(NvFlowColorBuffer* tex);
00345 
00346 NV_FLOW_API NvFlowResource* NvFlowColorBufferGetResource(NvFlowColorBuffer* tex);
00347 
00348 NV_FLOW_API NvFlowResourceRW* NvFlowColorBufferGetResourceRW(NvFlowColorBuffer* tex);
00349 
00350 NV_FLOW_API NvFlowRenderTarget* NvFlowColorBufferGetRenderTarget(NvFlowColorBuffer* tex);
00351 
00353 struct NvFlowDepthBuffer;
00354 
00355 struct NvFlowDepthBufferDesc
00356 {
00357     NvFlowFormat format_resource;
00358     NvFlowFormat format_dsv;
00359     NvFlowFormat format_srv;
00360     NvFlowUint width;
00361     NvFlowUint height;
00362 };
00363 
00364 NV_FLOW_API void NvFlowDepthBufferGetDesc(NvFlowDepthBuffer* depthBuffer, NvFlowDepthBufferDesc* desc);
00365 
00366 NV_FLOW_API NvFlowDepthBuffer* NvFlowCreateDepthBuffer(NvFlowContext* context, const NvFlowDepthBufferDesc* desc);
00367 
00368 NV_FLOW_API void NvFlowReleaseDepthBuffer(NvFlowDepthBuffer* depthBuffer);
00369 
00370 NV_FLOW_API NvFlowContextObject* NvFlowDepthBufferGetContextObject(NvFlowDepthBuffer* depthBuffer);
00371 
00372 NV_FLOW_API NvFlowResource* NvFlowDepthBufferGetResource(NvFlowDepthBuffer* depthBuffer);
00373 
00374 NV_FLOW_API NvFlowDepthStencil* NvFlowDepthBufferGetDepthStencil(NvFlowDepthBuffer* depthBuffer);
00375 
00377 struct NvFlowDepthStencilView;
00378 
00379 NV_FLOW_API NvFlowResource* NvFlowDepthStencilViewGetResource(NvFlowDepthStencilView* dsv);
00380 
00381 NV_FLOW_API NvFlowDepthStencil* NvFlowDepthStencilViewGetDepthStencil(NvFlowDepthStencilView* dsv);
00382 
00383 NV_FLOW_API void NvFlowDepthStencilViewGetDepthBufferDesc(NvFlowDepthStencilView* dsv, NvFlowDepthBufferDesc* desc);
00384 
00386 struct NvFlowRenderTargetView;
00387 
00388 NV_FLOW_API NvFlowRenderTarget* NvFlowRenderTargetViewGetRenderTarget(NvFlowRenderTargetView* rtv);
00389 
00391 #define NV_FLOW_DISPATCH_MAX_READ_TEXTURES ( 16u )
00392 #define NV_FLOW_DISPATCH_MAX_WRITE_TEXTURES ( 8u )
00393 
00394 #define NV_FLOW_DRAW_MAX_READ_TEXTURES ( 16u )
00395 #define NV_FLOW_DRAW_MAX_WRITE_TEXTURES ( 1u )
00396 #define NV_FLOW_MAX_RENDER_TARGETS ( 8u )
00397 
00399 struct NvFlowComputeShader;
00400 
00401 struct NvFlowComputeShaderDesc
00402 {
00403     const void* cs;
00404     NvFlowUint64 cs_length;
00405     const wchar_t* label;
00406 };
00407 
00408 struct NvFlowDispatchParams
00409 {
00410     NvFlowComputeShader* shader;
00411     NvFlowDim gridDim;
00412     NvFlowConstantBuffer* rootConstantBuffer;
00413     NvFlowConstantBuffer* secondConstantBuffer;
00414     NvFlowResource* readOnly[NV_FLOW_DISPATCH_MAX_READ_TEXTURES];
00415     NvFlowResourceRW* readWrite[NV_FLOW_DISPATCH_MAX_WRITE_TEXTURES];
00416 };
00417 
00418 NV_FLOW_API NvFlowComputeShader* NvFlowCreateComputeShader(NvFlowContext* context, const NvFlowComputeShaderDesc* desc);
00419 
00420 NV_FLOW_API void NvFlowReleaseComputeShader(NvFlowComputeShader* computeShader);
00421 
00423 struct NvFlowGraphicsShader;
00424 
00425 struct NvFlowInputElementDesc
00426 {
00427     const char* semanticName;
00428     NvFlowFormat format;
00429 };
00430 
00431 enum NvFlowBlendEnum
00432 {
00433     eNvFlowBlend_Zero = 1,
00434     eNvFlowBlend_One = 2,
00435     eNvFlowBlend_SrcAlpha = 3,
00436     eNvFlowBlend_InvSrcAlpha = 4,
00437     eNvFlowBlend_DstAlpha = 5,
00438     eNvFlowBlend_InvDstAlpha = 6,
00439 
00440     eNvFlowBlend_EnumCount = 7,
00441 };
00442 
00443 enum NvFlowBlendOpEnum
00444 {
00445     eNvFlowBlendOp_Add = 1,
00446     eNvFlowBlendOp_Subtract = 2,
00447     eNvFlowBlendOp_RevSubtract = 3,
00448     eNvFlowBlendOp_Min = 4,
00449     eNvFlowBlendOp_Max = 5,
00450 
00451     eNvFlowBlendOp_EnumCount = 6
00452 };
00453 
00454 enum NvFlowComparisonEnum
00455 {
00456     eNvFlowComparison_Never = 1,
00457     eNvFlowComparison_Less = 2,
00458     eNvFlowComparison_Equal = 3,
00459     eNvFlowComparison_LessEqual = 4,
00460     eNvFlowComparison_Greater = 5,
00461     eNvFlowComparison_NotEqual = 6,
00462     eNvFlowComparison_GreaterEqual = 7,
00463     eNvFlowComparison_Always = 8,
00464 
00465     eNvFlowComparison_EnumCount = 9
00466 };
00467 
00468 struct NvFlowBlendStateDesc
00469 {
00470     bool enable;
00471     NvFlowBlendEnum srcBlendColor;
00472     NvFlowBlendEnum dstBlendColor;
00473     NvFlowBlendOpEnum blendOpColor;
00474     NvFlowBlendEnum srcBlendAlpha;
00475     NvFlowBlendEnum dstBlendAlpha;
00476     NvFlowBlendOpEnum blendOpAlpha;
00477 };
00478 
00479 enum NvFlowDepthWriteMask
00480 {
00481     eNvFlowDepthWriteMask_Zero = 0,
00482     eNvFlowDepthWriteMask_All = 1
00483 };
00484 
00485 struct NvFlowDepthStateDesc
00486 {
00487     bool depthEnable;
00488     NvFlowDepthWriteMask depthWriteMask;
00489     NvFlowComparisonEnum depthFunc;
00490 };
00491 
00492 struct NvFlowGraphicsShaderDesc
00493 {
00494     const void* vs;
00495     NvFlowUint64 vs_length;
00496     const void* ps;
00497     NvFlowUint64 ps_length;
00498     const wchar_t* label;
00499 
00500     NvFlowUint numInputElements;
00501     NvFlowInputElementDesc* inputElementDescs;
00502 
00503     NvFlowBlendStateDesc blendState;
00504     NvFlowDepthStateDesc depthState;
00505     NvFlowUint numRenderTargets;
00506     NvFlowFormat renderTargetFormat[NV_FLOW_MAX_RENDER_TARGETS];
00507     NvFlowFormat depthStencilFormat;
00508 
00509     bool uavTarget;
00510     bool depthClipEnable;
00511     bool lineList;
00512 };
00513 
00514 NV_FLOW_API void NvFlowGraphicsShaderGetDesc(NvFlowGraphicsShader* shader, NvFlowGraphicsShaderDesc* desc);
00515 
00516 struct NvFlowDrawParams
00517 {
00518     NvFlowGraphicsShader* shader;
00519     NvFlowConstantBuffer* rootConstantBuffer;
00520     NvFlowResource* vs_readOnly[NV_FLOW_DRAW_MAX_READ_TEXTURES];
00521     NvFlowResource* ps_readOnly[NV_FLOW_DRAW_MAX_READ_TEXTURES];
00522     NvFlowResourceRW* ps_readWrite[NV_FLOW_DRAW_MAX_WRITE_TEXTURES];
00523     bool frontCounterClockwise;
00524 };
00525 
00526 NV_FLOW_API NvFlowGraphicsShader* NvFlowCreateGraphicsShader(NvFlowContext* context, const NvFlowGraphicsShaderDesc* desc);
00527 
00528 NV_FLOW_API void NvFlowReleaseGraphicsShader(NvFlowGraphicsShader* shader);
00529 
00530 NV_FLOW_API void NvFlowGraphicsShaderSetFormats(NvFlowContext* context, NvFlowGraphicsShader* shader, NvFlowFormat renderTargetFormat, NvFlowFormat depthStencilFormat);
00531 
00533 struct NvFlowContextTimer;
00534 
00535 NV_FLOW_API NvFlowContextTimer* NvFlowCreateContextTimer(NvFlowContext* context);
00536 
00537 NV_FLOW_API void NvFlowReleaseContextTimer(NvFlowContextTimer* timer);
00538 
00540 struct NvFlowContextEventQueue;
00541 
00542 NV_FLOW_API NvFlowContextEventQueue* NvFlowCreateContextEventQueue(NvFlowContext* context);
00543 
00544 NV_FLOW_API void NvFlowReleaseContextEventQueue(NvFlowContextEventQueue* eventQueue);
00545 
00547 struct NvFlowContext;
00548 
00549 NV_FLOW_API void NvFlowContextCopyConstantBuffer(NvFlowContext* context, NvFlowConstantBuffer* dst, NvFlowBuffer* src);
00550 
00551 NV_FLOW_API void NvFlowContextCopyBuffer(NvFlowContext* context, NvFlowBuffer* dst, NvFlowBuffer* src, NvFlowUint offset, NvFlowUint numBytes);
00552 
00553 NV_FLOW_API void NvFlowContextCopyTexture3D(NvFlowContext* context, NvFlowTexture3D* dst, NvFlowTexture3D* src);
00554 
00555 NV_FLOW_API void NvFlowContextCopyResource(NvFlowContext* context, NvFlowResourceRW* resourceRW, NvFlowResource* resource);
00556 
00557 NV_FLOW_API void NvFlowContextDispatch(NvFlowContext* context, const NvFlowDispatchParams* params);
00558 
00559 NV_FLOW_API void NvFlowContextSetVertexBuffer(NvFlowContext* context, NvFlowVertexBuffer* vertexBuffer, NvFlowUint stride, NvFlowUint offset);
00560 
00561 NV_FLOW_API void NvFlowContextSetIndexBuffer(NvFlowContext* context, NvFlowIndexBuffer* indexBuffer, NvFlowUint offset);
00562 
00563 NV_FLOW_API void NvFlowContextDrawIndexedInstanced(NvFlowContext* context, NvFlowUint indicesPerInstance, NvFlowUint numInstances, const NvFlowDrawParams* params);
00564 
00565 NV_FLOW_API void NvFlowContextSetRenderTarget(NvFlowContext* context, NvFlowRenderTarget* rt, NvFlowDepthStencil* ds);
00566 
00567 NV_FLOW_API void NvFlowContextSetViewport(NvFlowContext* context, const NvFlowViewport* viewport);
00568 
00569 NV_FLOW_API void NvFlowContextClearRenderTarget(NvFlowContext* context, NvFlowRenderTarget* rt, const NvFlowFloat4 color);
00570 
00571 NV_FLOW_API void NvFlowContextClearDepthStencil(NvFlowContext* context, NvFlowDepthStencil* ds, const float depth);
00572 
00573 NV_FLOW_API void NvFlowContextRestoreResourceState(NvFlowContext* context, NvFlowResource* resource);
00574 
00575 NV_FLOW_API bool NvFlowContextIsSparseTextureSupported(NvFlowContext* context);
00576 
00577 NV_FLOW_API void NvFlowContextUpdateSparseMapping(NvFlowContext* context, NvFlowTexture3DSparse* tex, NvFlowHeapSparse* heap, NvFlowUint* blockTableImage, NvFlowUint rowPitch, NvFlowUint depthPitch);
00578 
00579 NV_FLOW_API void NvFlowContextTimerBegin(NvFlowContext* context, NvFlowContextTimer* timer);
00580 
00581 NV_FLOW_API void NvFlowContextTimerEnd(NvFlowContext* context, NvFlowContextTimer* timer);
00582 
00583 NV_FLOW_API void NvFlowContextTimerGetResult(NvFlowContext* context, NvFlowContextTimer* timer, float* timeGPU, float* timeCPU);
00584 
00585 NV_FLOW_API void NvFlowContextEventQueuePush(NvFlowContext* context, NvFlowContextEventQueue* eventQueue, NvFlowUint64 uid);
00586 
00587 NV_FLOW_API NvFlowResult NvFlowContextEventQueuePop(NvFlowContext* context, NvFlowContextEventQueue* eventQueue, NvFlowUint64* pUid);
00588 
00589 NV_FLOW_API void NvFlowContextProfileGroupBegin(NvFlowContext* context, const wchar_t* label);
00590 
00591 NV_FLOW_API void NvFlowContextProfileGroupEnd(NvFlowContext* context);
00592 
00593 NV_FLOW_API void NvFlowContextProfileItemBegin(NvFlowContext* context, const wchar_t* label);
00594 
00595 NV_FLOW_API void NvFlowContextProfileItemEnd(NvFlowContext* context);
00596 
00598 struct NvFlowFence;
00599 
00600 struct NvFlowFenceDesc
00601 {
00602     bool crossAdapterShared;
00603 };
00604 
00605 NV_FLOW_API void NvFlowFenceGetDesc(NvFlowFence* fence, NvFlowFenceDesc* desc);
00606 
00607 NV_FLOW_API NvFlowFence* NvFlowCreateFence(NvFlowContext* context, const NvFlowFenceDesc* desc);
00608 
00609 NV_FLOW_API NvFlowFence* NvFlowShareFence(NvFlowContext* context, NvFlowFence* fence);
00610 
00611 NV_FLOW_API void NvFlowReleaseFence(NvFlowFence* fence);
00612 
00613 NV_FLOW_API void NvFlowContextWaitOnFence(NvFlowContext* context, NvFlowFence* fence, NvFlowUint64 fenceValue);
00614 
00615 NV_FLOW_API void NvFlowContextSignalFence(NvFlowContext* context, NvFlowFence* fence, NvFlowUint64 fenceValue);
00616 
00618 struct NvFlowTexture2DCrossAdapter;
00619 
00620 NV_FLOW_API NvFlowTexture2DCrossAdapter* NvFlowCreateTexture2DCrossAdapter(NvFlowContext* context, const NvFlowTexture2DDesc* desc);
00621 
00622 NV_FLOW_API NvFlowTexture2DCrossAdapter* NvFlowShareTexture2DCrossAdapter(NvFlowContext* context, NvFlowTexture2DCrossAdapter* sharedTexture);
00623 
00624 NV_FLOW_API void NvFlowReleaseTexture2DCrossAdapter(NvFlowTexture2DCrossAdapter* tex);
00625 
00626 NV_FLOW_API void NvFlowContextTransitionToCommonState(NvFlowContext* context, NvFlowResource* resource);
00627 
00628 NV_FLOW_API void NvFlowContextCopyToTexture2DCrossAdapter(NvFlowContext* context, NvFlowTexture2DCrossAdapter* dst, NvFlowTexture2D* src, NvFlowUint height);
00629 
00630 NV_FLOW_API void NvFlowContextCopyFromTexture2DCrossAdapter(NvFlowContext* context, NvFlowTexture2D* dst, NvFlowTexture2DCrossAdapter* src, NvFlowUint height);
00631 
00633 struct NvFlowResourceReference;
00634 
00635 NV_FLOW_API NvFlowResourceReference* NvFlowShareResourceReference(NvFlowContext* context, NvFlowResource* resource);
00636 
00637 NV_FLOW_API void NvFlowReleaseResourceReference(NvFlowResourceReference* resource);
Copyright © 2014-2016 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com