GFXFence *GFXD3D9Device::createFence() { // Figure out what fence type we should be making if we don't know if( mCreateFenceType == -1 ) { IDirect3DQuery9 *testQuery = NULL; mCreateFenceType = ( mD3DDevice->CreateQuery( D3DQUERYTYPE_EVENT, &testQuery ) == D3DERR_NOTAVAILABLE ); SAFE_RELEASE( testQuery ); } // Cool, use queries if( !mCreateFenceType ) { GFXFence* fence = new GFXD3D9QueryFence( this ); fence->registerResourceWithDevice(this); return fence; } // CodeReview: At some point I would like a specialized D3D9 implementation of // the method used by the general fence, only without the overhead incurred // by using the GFX constructs. Primarily the lock() method on texture handles // will do a data copy, and this method doesn't require a copy, just a lock // [5/10/2007 Pat] GFXFence* fence = new GFXGeneralFence( this ); fence->registerResourceWithDevice(this); return fence; }
GFXFence * GFXGLDevice::createFence() { GFXFence* fence = _createPlatformSpecificFence(); if(!fence) fence = new GFXGeneralFence( this ); fence->registerResourceWithDevice(this); return fence; }