void TextureHostDXGID3D11::UpdateImpl(const SurfaceDescriptor& aImage, nsIntRegion *aRegion) { MOZ_ASSERT(aImage.type() == SurfaceDescriptor::TSurfaceDescriptorD3D10); mDevice->OpenSharedResource((HANDLE)aImage.get_SurfaceDescriptorD3D10().handle(), __uuidof(ID3D11Texture2D), (void**)(ID3D11Texture2D**)byRef(mTextures[0])); mFormat = aImage.get_SurfaceDescriptorD3D10().hasAlpha() ? FORMAT_B8G8R8A8 : FORMAT_B8G8R8X8; D3D11_TEXTURE2D_DESC desc; mTextures[0]->GetDesc(&desc); mSize = IntSize(desc.Width, desc.Height); }
already_AddRefed<TextureHost> CreateTextureHostD3D11(const SurfaceDescriptor& aDesc, ISurfaceAllocator* aDeallocator, TextureFlags aFlags) { RefPtr<TextureHost> result; switch (aDesc.type()) { case SurfaceDescriptor::TSurfaceDescriptorShmem: case SurfaceDescriptor::TSurfaceDescriptorMemory: { result = CreateBackendIndependentTextureHost(aDesc, aDeallocator, aFlags); break; } case SurfaceDescriptor::TSurfaceDescriptorD3D10: { result = new DXGITextureHostD3D11(aFlags, aDesc.get_SurfaceDescriptorD3D10()); break; } case SurfaceDescriptor::TSurfaceDescriptorDXGIYCbCr: { result = new DXGIYCbCrTextureHostD3D11(aFlags, aDesc.get_SurfaceDescriptorDXGIYCbCr()); break; } default: { NS_WARNING("Unsupported SurfaceDescriptor type"); } } return result.forget(); }
TemporaryRef<TextureHost> CreateTextureHostD3D11(const SurfaceDescriptor& aDesc, ISurfaceAllocator* aDeallocator, TextureFlags aFlags) { RefPtr<TextureHost> result; switch (aDesc.type()) { case SurfaceDescriptor::TSurfaceDescriptorShmem: case SurfaceDescriptor::TSurfaceDescriptorMemory: { result = CreateBackendIndependentTextureHost(aDesc, aDeallocator, aFlags); break; } case SurfaceDescriptor::TSurfaceDescriptorD3D10: { result = new DXGITextureHostD3D11(aFlags, aDesc.get_SurfaceDescriptorD3D10()); break; } case SurfaceDescriptor::TSurfaceStreamDescriptor: { MOZ_CRASH("Should never hit this."); } default: { NS_WARNING("Unsupported SurfaceDescriptor type"); } } return result; }
void DeprecatedTextureHostDXGID3D11::UpdateImpl(const SurfaceDescriptor& aImage, nsIntRegion* aRegion, nsIntPoint* aOffset) { MOZ_ASSERT(aImage.type() == SurfaceDescriptor::TSurfaceDescriptorD3D10); HRESULT hr =mDevice->OpenSharedResource((HANDLE)aImage.get_SurfaceDescriptorD3D10().handle(), __uuidof(ID3D11Texture2D), (void**)(ID3D11Texture2D**)byRef(mTextures[0])); if (!mTextures[0] || FAILED(hr)) { NS_WARNING("Could not open shared resource"); mSize = IntSize(0, 0); return; } mFormat = aImage.get_SurfaceDescriptorD3D10().hasAlpha() ? FORMAT_B8G8R8A8 : FORMAT_B8G8R8X8; D3D11_TEXTURE2D_DESC desc; mTextures[0]->GetDesc(&desc); mSize = IntSize(desc.Width, desc.Height); }
void DeprecatedTextureClientD3D11::SetDescriptor(const SurfaceDescriptor& aDescriptor) { if (aDescriptor.type() == SurfaceDescriptor::Tnull_t) { EnsureAllocated(mSize, mContentType); return; } mDescriptor = aDescriptor; mSurface = nullptr; ClearDT(); if (aDescriptor.type() == SurfaceDescriptor::T__None) { return; } MOZ_ASSERT(aDescriptor.type() == SurfaceDescriptor::TSurfaceDescriptorD3D10); ID3D10Device* device = gfxWindowsPlatform::GetPlatform()->GetD3D10Device(); device->OpenSharedResource((HANDLE)aDescriptor.get_SurfaceDescriptorD3D10().handle(), __uuidof(ID3D10Texture2D), (void**)(ID3D10Texture2D**)byRef(mTexture)); }