Flutter Engine
The Flutter Engine
Classes | Public Member Functions | Static Public Member Functions | List of all members
GrD3DGpu Class Reference

#include <GrD3DGpu.h>

Inheritance diagram for GrD3DGpu:
GrGpu

Public Member Functions

 ~GrD3DGpu () override
 
const GrD3DCapsd3dCaps () const
 
GrD3DResourceProviderresourceProvider ()
 
GrThreadSafePipelineBuilderpipelineBuilder () override
 
sk_sp< GrThreadSafePipelineBuilderrefPipelineBuilder () override
 
ID3D12Device * device () const
 
ID3D12CommandQueue * queue () const
 
GrD3DMemoryAllocatormemoryAllocator () const
 
GrD3DDirectCommandListcurrentCommandList () const
 
GrStagingBufferManagerstagingBufferManager () override
 
void takeOwnershipOfBuffer (sk_sp< GrGpuBuffer >) override
 
GrRingBufferuniformsRingBuffer () override
 
bool protectedContext () const
 
void xferBarrier (GrRenderTarget *, GrXferBarrierType) override
 
void deleteBackendTexture (const GrBackendTexture &) override
 
bool compile (const GrProgramDesc &, const GrProgramInfo &) override
 
sk_sp< GrAttachmentmakeStencilAttachment (const GrBackendFormat &, SkISize dimensions, int numStencilSamples) override
 
GrBackendFormat getPreferredStencilFormat (const GrBackendFormat &) override
 
sk_sp< GrAttachmentmakeMSAAAttachment (SkISize dimensions, const GrBackendFormat &format, int numSamples, GrProtected isProtected, GrMemoryless isMemoryless) override
 
void addResourceBarriers (sk_sp< GrManagedResource > resource, int numBarriers, D3D12_RESOURCE_TRANSITION_BARRIER *barriers) const
 
void addBufferResourceBarriers (GrD3DBuffer *buffer, int numBarriers, D3D12_RESOURCE_TRANSITION_BARRIER *barriers) const
 
std::unique_ptr< GrSemaphoremakeSemaphore (bool isOwned) override
 
std::unique_ptr< GrSemaphorewrapBackendSemaphore (const GrBackendSemaphore &, GrSemaphoreWrapType, GrWrapOwnership) override
 
void insertSemaphore (GrSemaphore *semaphore) override
 
void waitSemaphore (GrSemaphore *semaphore) override
 
std::unique_ptr< GrSemaphoreprepareTextureForCrossContextUsage (GrTexture *) override
 
void submit (GrOpsRenderPass *renderPass) override
 
void endRenderPass (GrRenderTarget *target, GrSurfaceOrigin origin, const SkIRect &bounds)
 
void checkFinishProcs () override
 
void finishOutstandingGpuWork () override
 
- Public Member Functions inherited from GrGpu
 GrGpu (GrDirectContext *direct)
 
virtual ~GrGpu ()
 
GrDirectContextgetContext ()
 
const GrDirectContextgetContext () const
 
const GrCapscaps () const
 
sk_sp< const GrCapsrefCaps () const
 
virtual GrStagingBufferManagerstagingBufferManager ()
 
virtual GrRingBufferuniformsRingBuffer ()
 
virtual void disconnect (DisconnectType)
 
virtual GrThreadSafePipelineBuilderpipelineBuilder ()=0
 
virtual sk_sp< GrThreadSafePipelineBuilderrefPipelineBuilder ()=0
 
virtual bool isDeviceLost () const
 
void markContextDirty (uint32_t state=kAll_GrBackendState)
 
sk_sp< GrTexturecreateTexture (SkISize dimensions, const GrBackendFormat &format, GrTextureType textureType, GrRenderable renderable, int renderTargetSampleCnt, skgpu::Budgeted budgeted, GrProtected isProtected, GrColorType textureColorType, GrColorType srcColorType, const GrMipLevel texels[], int texelLevelCount, std::string_view label)
 
sk_sp< GrTexturecreateTexture (SkISize dimensions, const GrBackendFormat &format, GrTextureType textureType, GrRenderable renderable, int renderTargetSampleCnt, skgpu::Mipmapped mipmapped, skgpu::Budgeted budgeted, GrProtected isProtected, std::string_view label)
 
sk_sp< GrTexturecreateCompressedTexture (SkISize dimensions, const GrBackendFormat &format, skgpu::Budgeted budgeted, skgpu::Mipmapped mipmapped, GrProtected isProtected, const void *data, size_t dataSize)
 
sk_sp< GrTexturewrapBackendTexture (const GrBackendTexture &, GrWrapOwnership, GrWrapCacheable, GrIOType)
 
sk_sp< GrTexturewrapCompressedBackendTexture (const GrBackendTexture &, GrWrapOwnership, GrWrapCacheable)
 
sk_sp< GrTexturewrapRenderableBackendTexture (const GrBackendTexture &, int sampleCnt, GrWrapOwnership, GrWrapCacheable)
 
sk_sp< GrRenderTargetwrapBackendRenderTarget (const GrBackendRenderTarget &)
 
sk_sp< GrRenderTargetwrapVulkanSecondaryCBAsRenderTarget (const SkImageInfo &, const GrVkDrawableInfo &)
 
sk_sp< GrGpuBuffercreateBuffer (size_t size, GrGpuBufferType intendedType, GrAccessPattern accessPattern)
 
void resolveRenderTarget (GrRenderTarget *, const SkIRect &resolveRect)
 
bool regenerateMipMapLevels (GrTexture *)
 
void resetTextureBindings ()
 
bool readPixels (GrSurface *surface, SkIRect rect, GrColorType surfaceColorType, GrColorType dstColorType, void *buffer, size_t rowBytes)
 
bool writePixels (GrSurface *surface, SkIRect rect, GrColorType surfaceColorType, GrColorType srcColorType, const GrMipLevel texels[], int mipLevelCount, bool prepForTexSampling=false)
 
bool writePixels (GrSurface *surface, SkIRect rect, GrColorType surfaceColorType, GrColorType srcColorType, const void *buffer, size_t rowBytes, bool prepForTexSampling=false)
 
bool transferFromBufferToBuffer (sk_sp< GrGpuBuffer > src, size_t srcOffset, sk_sp< GrGpuBuffer > dst, size_t dstOffset, size_t size)
 
bool transferPixelsTo (GrTexture *texture, SkIRect rect, GrColorType textureColorType, GrColorType bufferColorType, sk_sp< GrGpuBuffer > transferBuffer, size_t offset, size_t rowBytes)
 
bool transferPixelsFrom (GrSurface *surface, SkIRect rect, GrColorType surfaceColorType, GrColorType bufferColorType, sk_sp< GrGpuBuffer > transferBuffer, size_t offset)
 
bool copySurface (GrSurface *dst, const SkIRect &dstRect, GrSurface *src, const SkIRect &srcRect, GrSamplerState::Filter filter)
 
GrOpsRenderPassgetOpsRenderPass (GrRenderTarget *renderTarget, bool useMSAASurface, GrAttachment *stencil, GrSurfaceOrigin, const SkIRect &bounds, const GrOpsRenderPass::LoadAndStoreInfo &, const GrOpsRenderPass::StencilLoadAndStoreInfo &, const skia_private::TArray< GrSurfaceProxy *, true > &sampledProxies, GrXferBarrierFlags renderPassXferBarriers)
 
void executeFlushInfo (SkSpan< GrSurfaceProxy * >, SkSurfaces::BackendSurfaceAccess access, const GrFlushInfo &, const skgpu::MutableTextureState *newState)
 
virtual void willExecute ()
 
bool submitToGpu (GrSyncCpu sync)
 
virtual void submit (GrOpsRenderPass *)=0
 
virtual std::unique_ptr< GrSemaphoremakeSemaphore (bool isOwned=true)=0
 
virtual std::unique_ptr< GrSemaphorewrapBackendSemaphore (const GrBackendSemaphore &, GrSemaphoreWrapType, GrWrapOwnership)=0
 
virtual void insertSemaphore (GrSemaphore *semaphore)=0
 
virtual void waitSemaphore (GrSemaphore *semaphore)=0
 
virtual void addFinishedProc (GrGpuFinishedProc finishedProc, GrGpuFinishedContext finishedContext)=0
 
virtual void checkFinishProcs ()=0
 
virtual void finishOutstandingGpuWork ()=0
 
virtual void takeOwnershipOfBuffer (sk_sp< GrGpuBuffer >)
 
bool checkAndResetOOMed ()
 
virtual std::unique_ptr< GrSemaphoreprepareTextureForCrossContextUsage (GrTexture *)=0
 
virtual void releaseUnlockedBackendObjects ()
 
Statsstats ()
 
void dumpJSON (SkJSONWriter *) const
 
GrBackendTexture createBackendTexture (SkISize dimensions, const GrBackendFormat &, GrRenderable, skgpu::Mipmapped, GrProtected, std::string_view label)
 
bool clearBackendTexture (const GrBackendTexture &, sk_sp< skgpu::RefCntedCallback > finishedCallback, std::array< float, 4 > color)
 
GrBackendTexture createCompressedBackendTexture (SkISize dimensions, const GrBackendFormat &, skgpu::Mipmapped, GrProtected)
 
bool updateCompressedBackendTexture (const GrBackendTexture &, sk_sp< skgpu::RefCntedCallback > finishedCallback, const void *data, size_t length)
 
virtual bool setBackendTextureState (const GrBackendTexture &, const skgpu::MutableTextureState &, skgpu::MutableTextureState *previousState, sk_sp< skgpu::RefCntedCallback > finishedCallback)
 
virtual bool setBackendRenderTargetState (const GrBackendRenderTarget &, const skgpu::MutableTextureState &, skgpu::MutableTextureState *previousState, sk_sp< skgpu::RefCntedCallback > finishedCallback)
 
virtual void deleteBackendTexture (const GrBackendTexture &)=0
 
virtual bool compile (const GrProgramDesc &, const GrProgramInfo &)=0
 
virtual bool precompileShader (const SkData &key, const SkData &data)
 
virtual sk_sp< GrAttachmentmakeStencilAttachment (const GrBackendFormat &colorFormat, SkISize dimensions, int numStencilSamples)=0
 
virtual GrBackendFormat getPreferredStencilFormat (const GrBackendFormat &)=0
 
virtual sk_sp< GrAttachmentmakeMSAAAttachment (SkISize dimensions, const GrBackendFormat &format, int numSamples, GrProtected isProtected, GrMemoryless isMemoryless)=0
 
void handleDirtyContext ()
 
virtual void storeVkPipelineCacheData ()
 
virtual void xferBarrier (GrRenderTarget *, GrXferBarrierType)=0
 

Static Public Member Functions

static std::unique_ptr< GrGpuMake (const GrD3DBackendContext &backendContext, const GrContextOptions &, GrDirectContext *)
 

Additional Inherited Members

- Public Types inherited from GrGpu
enum class  DisconnectType { kAbandon , kCleanup }
 
- Protected Member Functions inherited from GrGpu
void didWriteToSurface (GrSurface *surface, GrSurfaceOrigin origin, const SkIRect *bounds, uint32_t mipLevels=1) const
 
void setOOMed ()
 
void initCaps (sk_sp< const GrCaps > caps)
 
- Static Protected Member Functions inherited from GrGpu
static bool CompressedDataIsCorrect (SkISize dimensions, SkTextureCompressionType, skgpu::Mipmapped, const void *data, size_t length)
 
- Protected Attributes inherited from GrGpu
Stats fStats
 

Detailed Description

Definition at line 28 of file GrD3DGpu.h.

Constructor & Destructor Documentation

◆ ~GrD3DGpu()

GrD3DGpu::~GrD3DGpu ( )
override

Definition at line 109 of file GrD3DGpu.cpp.

109 {
110 this->destroyResources();
111}

Member Function Documentation

◆ addBufferResourceBarriers()

void GrD3DGpu::addBufferResourceBarriers ( GrD3DBuffer buffer,
int  numBarriers,
D3D12_RESOURCE_TRANSITION_BARRIER *  barriers 
) const

Definition at line 1729 of file GrD3DGpu.cpp.

1731 {
1732 SkASSERT(fCurrentDirectCommandList);
1734
1735 fCurrentDirectCommandList->resourceBarrier(nullptr, numBarriers, barriers);
1736 fCurrentDirectCommandList->addGrBuffer(sk_ref_sp<const GrBuffer>(buffer));
1737}
#define SkASSERT(cond)
Definition: SkAssert.h:116
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir Path to the cache directory This is different from the persistent_cache_path in embedder which is used for Skia shader cache icu native lib Path to the library file that exports the ICU data vm service The hostname IP address on which the Dart VM Service should be served If not defaults to or::depending on whether ipv6 is specified vm service A custom Dart VM Service port The default is to pick a randomly available open port disable vm Disable the Dart VM Service The Dart VM Service is never available in release mode disable vm service Disable mDNS Dart VM Service publication Bind to the IPv6 localhost address for the Dart VM Service Ignored if vm service host is set endless trace buffer
Definition: switches.h:126

◆ addResourceBarriers()

void GrD3DGpu::addResourceBarriers ( sk_sp< GrManagedResource resource,
int  numBarriers,
D3D12_RESOURCE_TRANSITION_BARRIER *  barriers 
) const

Definition at line 1720 of file GrD3DGpu.cpp.

1722 {
1723 SkASSERT(fCurrentDirectCommandList);
1725
1726 fCurrentDirectCommandList->resourceBarrier(std::move(resource), numBarriers, barriers);
1727}
static SkString resource(SkPDFResourceType type, int index)

◆ checkFinishProcs()

void GrD3DGpu::checkFinishProcs ( )
inlineoverridevirtual

Implements GrGpu.

Definition at line 117 of file GrD3DGpu.h.

117{ this->checkForFinishedCommandLists(); }

◆ compile()

bool GrD3DGpu::compile ( const GrProgramDesc ,
const GrProgramInfo  
)
overridevirtual

In this case we have a program descriptor and a program info but no render target.

Implements GrGpu.

Definition at line 1649 of file GrD3DGpu.cpp.

1649 {
1650 return false;
1651}

◆ currentCommandList()

GrD3DDirectCommandList * GrD3DGpu::currentCommandList ( ) const
inline

Definition at line 48 of file GrD3DGpu.h.

48{ return fCurrentDirectCommandList.get(); }

◆ d3dCaps()

const GrD3DCaps & GrD3DGpu::d3dCaps ( ) const
inline

Definition at line 36 of file GrD3DGpu.h.

36{ return static_cast<const GrD3DCaps&>(*this->caps()); }
const GrCaps * caps() const
Definition: GrGpu.h:73

◆ deleteBackendTexture()

void GrD3DGpu::deleteBackendTexture ( const GrBackendTexture )
overridevirtual

Frees a texture created by createBackendTexture(). If ownership of the backend texture has been transferred to a context using adopt semantics this should not be called.

Implements GrGpu.

Definition at line 1644 of file GrD3DGpu.cpp.

1644 {
1645 SkASSERT(GrBackendApi::kDirect3D == tex.fBackend);
1646 // Nothing to do here, will get cleaned up when the GrBackendTexture object goes away
1647}

◆ device()

ID3D12Device * GrD3DGpu::device ( ) const
inline

Definition at line 43 of file GrD3DGpu.h.

43{ return fDevice.get(); }
T * get() const
Definition: GrD3DTypes.h:108

◆ endRenderPass()

void GrD3DGpu::endRenderPass ( GrRenderTarget target,
GrSurfaceOrigin  origin,
const SkIRect bounds 
)

Definition at line 240 of file GrD3DGpu.cpp.

241 {
242 this->didWriteToSurface(target, origin, &bounds);
243}
void didWriteToSurface(GrSurface *surface, GrSurfaceOrigin origin, const SkIRect *bounds, uint32_t mipLevels=1) const
Definition: GrGpu.cpp:665
Optional< SkRect > bounds
Definition: SkRecords.h:189

◆ finishOutstandingGpuWork()

void GrD3DGpu::finishOutstandingGpuWork ( )
overridevirtual

Implements GrGpu.

Definition at line 1800 of file GrD3DGpu.cpp.

1800 {
1801 this->waitForQueueCompletion();
1802}

◆ getPreferredStencilFormat()

GrBackendFormat GrD3DGpu::getPreferredStencilFormat ( const GrBackendFormat )
inlineoverridevirtual

Implements GrGpu.

Definition at line 83 of file GrD3DGpu.h.

83 {
84 return GrBackendFormat::MakeDxgi(this->d3dCaps().preferredStencilFormat());
85 }
const GrD3DCaps & d3dCaps() const
Definition: GrD3DGpu.h:36

◆ insertSemaphore()

void GrD3DGpu::insertSemaphore ( GrSemaphore semaphore)
overridevirtual

Implements GrGpu.

Definition at line 1786 of file GrD3DGpu.cpp.

1786 {
1787 SkASSERT(semaphore);
1788 GrD3DSemaphore* d3dSem = static_cast<GrD3DSemaphore*>(semaphore);
1789 // TODO: Do we need to track the lifetime of this? How do we know it's done?
1790 fQueue->Signal(d3dSem->fence(), d3dSem->value());
1791}
uint64_t value() const
ID3D12Fence * fence() const

◆ Make()

std::unique_ptr< GrGpu > GrD3DGpu::Make ( const GrD3DBackendContext backendContext,
const GrContextOptions contextOptions,
GrDirectContext direct 
)
static

Definition at line 50 of file GrD3DGpu.cpp.

52 {
54 if (!memoryAllocator) {
55 // We were not given a memory allocator at creation
57 backendContext.fAdapter.get(), backendContext.fDevice.get());
58 }
59 if (!memoryAllocator) {
60 SkDEBUGFAIL("No supplied Direct3D memory allocator and unable to create one internally.");
61 return nullptr;
62 }
63
64 return std::unique_ptr<GrGpu>(new GrD3DGpu(direct,
65 contextOptions,
66 backendContext,
68}
#define SkDEBUGFAIL(message)
Definition: SkAssert.h:118
static sk_sp< GrD3DMemoryAllocator > Make(IDXGIAdapter *adapter, ID3D12Device *device)
GrD3DMemoryAllocator * memoryAllocator() const
Definition: GrD3DGpu.h:46
gr_cp< ID3D12Device > fDevice
sk_sp< GrD3DMemoryAllocator > fMemoryAllocator
gr_cp< IDXGIAdapter1 > fAdapter

◆ makeMSAAAttachment()

sk_sp< GrAttachment > GrD3DGpu::makeMSAAAttachment ( SkISize  dimensions,
const GrBackendFormat format,
int  numSamples,
GrProtected  isProtected,
GrMemoryless  isMemoryless 
)
inlineoverridevirtual

Implements GrGpu.

Definition at line 87 of file GrD3DGpu.h.

91 {
92 return nullptr;
93 }

◆ makeSemaphore()

std::unique_ptr< GrSemaphore > GrD3DGpu::makeSemaphore ( bool  isOwned)
overridevirtual

Implements GrGpu.

Definition at line 1772 of file GrD3DGpu.cpp.

1772 {
1773 return GrD3DSemaphore::Make(this);
1774}
static std::unique_ptr< GrD3DSemaphore > Make(GrD3DGpu *gpu)

◆ makeStencilAttachment()

sk_sp< GrAttachment > GrD3DGpu::makeStencilAttachment ( const GrBackendFormat ,
SkISize  dimensions,
int  numStencilSamples 
)
overridevirtual

Implements GrGpu.

Definition at line 1324 of file GrD3DGpu.cpp.

1325 {
1326 DXGI_FORMAT sFmt = this->d3dCaps().preferredStencilFormat();
1327
1329 return GrD3DAttachment::MakeStencil(this, dimensions, numStencilSamples, sFmt);
1330}
static sk_sp< GrD3DAttachment > MakeStencil(GrD3DGpu *gpu, SkISize dimensions, int sampleCnt, DXGI_FORMAT format)
DXGI_FORMAT preferredStencilFormat() const
Definition: GrD3DCaps.h:62
void incStencilAttachmentCreates()
Definition: GrGpu.h:539
Stats fStats
Definition: GrGpu.h:703

◆ memoryAllocator()

GrD3DMemoryAllocator * GrD3DGpu::memoryAllocator ( ) const
inline

Definition at line 46 of file GrD3DGpu.h.

46{ return fMemoryAllocator.get(); }
T * get() const
Definition: SkRefCnt.h:303

◆ pipelineBuilder()

GrThreadSafePipelineBuilder * GrD3DGpu::pipelineBuilder ( )
overridevirtual

Implements GrGpu.

Definition at line 41 of file GrD3DGpu.cpp.

41 {
42 return nullptr;
43}

◆ prepareTextureForCrossContextUsage()

std::unique_ptr< GrSemaphore > GrD3DGpu::prepareTextureForCrossContextUsage ( GrTexture )
inlineoverridevirtual

Put this texture in a safe and known state for use across multiple contexts. Depending on the backend, this may return a GrSemaphore. If so, other contexts should wait on that semaphore before using this texture.

Implements GrGpu.

Definition at line 109 of file GrD3DGpu.h.

109 {
110 return nullptr;
111 }

◆ protectedContext()

bool GrD3DGpu::protectedContext ( ) const
inline

Definition at line 55 of file GrD3DGpu.h.

55{ return false; }

◆ queue()

ID3D12CommandQueue * GrD3DGpu::queue ( ) const
inline

Definition at line 44 of file GrD3DGpu.h.

44{ return fQueue.get(); }

◆ refPipelineBuilder()

sk_sp< GrThreadSafePipelineBuilder > GrD3DGpu::refPipelineBuilder ( )
overridevirtual

Implements GrGpu.

Definition at line 45 of file GrD3DGpu.cpp.

45 {
46 return nullptr;
47}

◆ resourceProvider()

GrD3DResourceProvider & GrD3DGpu::resourceProvider ( )
inline

Definition at line 38 of file GrD3DGpu.h.

38{ return fResourceProvider; }

◆ stagingBufferManager()

GrStagingBufferManager * GrD3DGpu::stagingBufferManager ( )
inlineoverridevirtual

Reimplemented from GrGpu.

Definition at line 50 of file GrD3DGpu.h.

50{ return &fStagingBufferManager; }

◆ submit()

void GrD3DGpu::submit ( GrOpsRenderPass renderPass)
overridevirtual

Implements GrGpu.

Definition at line 233 of file GrD3DGpu.cpp.

233 {
234 SkASSERT(fCachedOpsRenderPass.get() == renderPass);
235
236 fCachedOpsRenderPass->submit();
237 fCachedOpsRenderPass.reset();
238}

◆ takeOwnershipOfBuffer()

void GrD3DGpu::takeOwnershipOfBuffer ( sk_sp< GrGpuBuffer buffer)
overridevirtual

Reimplemented from GrGpu.

Definition at line 1760 of file GrD3DGpu.cpp.

1760 {
1761 fCurrentDirectCommandList->addGrBuffer(std::move(buffer));
1762}

◆ uniformsRingBuffer()

GrRingBuffer * GrD3DGpu::uniformsRingBuffer ( )
inlineoverridevirtual

Reimplemented from GrGpu.

Definition at line 53 of file GrD3DGpu.h.

53{ return &fConstantsRingBuffer; }

◆ waitSemaphore()

void GrD3DGpu::waitSemaphore ( GrSemaphore semaphore)
overridevirtual

Implements GrGpu.

Definition at line 1793 of file GrD3DGpu.cpp.

1793 {
1794 SkASSERT(semaphore);
1795 GrD3DSemaphore* d3dSem = static_cast<GrD3DSemaphore*>(semaphore);
1796 // TODO: Do we need to track the lifetime of this?
1797 fQueue->Wait(d3dSem->fence(), d3dSem->value());
1798}

◆ wrapBackendSemaphore()

std::unique_ptr< GrSemaphore > GrD3DGpu::wrapBackendSemaphore ( const GrBackendSemaphore semaphore,
GrSemaphoreWrapType  ,
GrWrapOwnership   
)
overridevirtual

Implements GrGpu.

Definition at line 1775 of file GrD3DGpu.cpp.

1777 {
1778 SkASSERT(this->caps()->backendSemaphoreSupport());
1779 GrD3DFenceInfo fenceInfo;
1780 if (!semaphore.getD3DFenceInfo(&fenceInfo)) {
1781 return nullptr;
1782 }
1783 return GrD3DSemaphore::MakeWrapped(fenceInfo);
1784}
static std::unique_ptr< GrD3DSemaphore > MakeWrapped(const GrD3DFenceInfo &)

◆ xferBarrier()

void GrD3DGpu::xferBarrier ( GrRenderTarget ,
GrXferBarrierType   
)
inlineoverridevirtual

Implements GrGpu.

Definition at line 57 of file GrD3DGpu.h.

57{}

The documentation for this class was generated from the following files: