Files
tubestation/dom/webgpu/ExternalTexture.cpp
sotaro 2cc8d30558 Bug 1957563 - Replace SurfaceDescriptorD3D10::fenceInfo with GpuProcessFencesHolderId r=gfx-reviewers,lsalzman
Remove FenceInfo. Instead use GpuProcessFencesHolderId and GpuProcessD3D11FencesHolderMap.

GpuProcessD3D11FencesHolderMap is changed to instantiate also in Parent process when GPU process does not exist. Then it seems better to change its name. The name change is going to be handled in Bug 1958752.

Differential Revision: https://phabricator.services.mozilla.com/D244539
2025-04-07 11:48:23 +00:00

83 lines
2.9 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "ExternalTexture.h"
#include "mozilla/webgpu/WebGPUParent.h"
#ifdef XP_WIN
# include "mozilla/webgpu/ExternalTextureD3D11.h"
#endif
#if defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
# include "mozilla/webgpu/ExternalTextureDMABuf.h"
#endif
#ifdef XP_MACOSX
# include "mozilla/webgpu/ExternalTextureMacIOSurface.h"
#endif
namespace mozilla::webgpu {
GPU_IMPL_CYCLE_COLLECTION(ExtTex, mGlobal)
JSObject* ExtTex::WrapObject(JSContext* cx, JS ::Handle<JSObject*> givenProto) {
return dom::GPUExternalTexture_Binding::Wrap(cx, this, givenProto);
}
// static
UniquePtr<ExternalTexture> ExternalTexture::Create(
WebGPUParent* aParent, const ffi::WGPUDeviceId aDeviceId,
const uint32_t aWidth, const uint32_t aHeight,
const struct ffi::WGPUTextureFormat aFormat,
const ffi::WGPUTextureUsages aUsage) {
MOZ_ASSERT(aParent);
UniquePtr<ExternalTexture> texture;
#ifdef XP_WIN
texture = ExternalTextureD3D11::Create(aParent, aDeviceId, aWidth, aHeight,
aFormat, aUsage);
#elif defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)
texture = ExternalTextureDMABuf::Create(aParent, aDeviceId, aWidth, aHeight,
aFormat, aUsage);
#elif defined(XP_MACOSX)
texture = ExternalTextureMacIOSurface::Create(aParent, aDeviceId, aWidth,
aHeight, aFormat, aUsage);
#endif
return texture;
}
ExternalTexture::ExternalTexture(const uint32_t aWidth, const uint32_t aHeight,
const struct ffi::WGPUTextureFormat aFormat,
const ffi::WGPUTextureUsages aUsage)
: mWidth(aWidth), mHeight(aHeight), mFormat(aFormat), mUsage(aUsage) {}
ExternalTexture::~ExternalTexture() {}
void ExternalTexture::SetSubmissionIndex(uint64_t aSubmissionIndex) {
MOZ_ASSERT(aSubmissionIndex != 0);
mSubmissionIndex = aSubmissionIndex;
}
UniquePtr<ExternalTextureReadBackPresent>
ExternalTextureReadBackPresent::Create(
const uint32_t aWidth, const uint32_t aHeight,
const struct ffi::WGPUTextureFormat aFormat,
const ffi::WGPUTextureUsages aUsage) {
return MakeUnique<ExternalTextureReadBackPresent>(aWidth, aHeight, aFormat,
aUsage);
}
ExternalTextureReadBackPresent::ExternalTextureReadBackPresent(
const uint32_t aWidth, const uint32_t aHeight,
const struct ffi::WGPUTextureFormat aFormat,
const ffi::WGPUTextureUsages aUsage)
: ExternalTexture(aWidth, aHeight, aFormat, aUsage) {}
ExternalTextureReadBackPresent::~ExternalTextureReadBackPresent() {}
} // namespace mozilla::webgpu