Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/webgpu/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 3 kB image not shown  

Quelle  SharedTexture.h

  Sprache: C
 

/* 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/. */


#ifndef SharedTexture_H_
#define SharedTexture_H_

#include "mozilla/gfx/Point.h"
#include "mozilla/layers/LayersSurfaces.h"
#include "mozilla/webgpu/WebGPUTypes.h"
#include "mozilla/webgpu/ffi/wgpu.h"

namespace mozilla {

namespace ipc {
class Shmem;
}

namespace webgpu {

class SharedTextureD3D11;
class SharedTextureDMABuf;
class SharedTextureMacIOSurface;
class WebGPUParent;

// A texture is created and owned by Gecko but is shared with the WebGPU
// implementation.
class SharedTexture {
 public:
  static UniquePtr<SharedTexture> Create(
      WebGPUParent* aParent, const ffi::WGPUDeviceId aDeviceId,
      const uint32_t aWidth, const uint32_t aHeight,
      const struct ffi::WGPUTextureFormat aFormat,
      const ffi::WGPUTextureUsages aUsage);

  SharedTexture(const uint32_t aWidth, const uint32_t aHeight,
                const struct ffi::WGPUTextureFormat aFormat,
                const ffi::WGPUTextureUsages aUsage);
  virtual ~SharedTexture();

  virtual Maybe<layers::SurfaceDescriptor> ToSurfaceDescriptor() = 0;

  virtual void GetSnapshot(const ipc::Shmem& aDestShmem, size_t aDestStride) {}

  virtual SharedTextureDMABuf* AsSharedTextureDMABuf() { return nullptr; }

  virtual SharedTextureMacIOSurface* AsSharedTextureMacIOSurface() {
    return nullptr;
  }

  virtual SharedTextureD3D11* AsSharedTextureD3D11() { return nullptr; }

  gfx::IntSize GetSize() { return gfx::IntSize(mWidth, mHeight); }

  void SetSubmissionIndex(uint64_t aSubmissionIndex);
  uint64_t GetSubmissionIndex() const { return mSubmissionIndex; }

  void SetOwnerId(const layers::RemoteTextureOwnerId aOwnerId) {
    mOwnerId = aOwnerId;
  }
  layers::RemoteTextureOwnerId GetOwnerId() const {
    MOZ_ASSERT(mOwnerId.IsValid());
    return mOwnerId;
  }

  virtual void onBeforeQueueSubmit(RawId aQueueId) {}

  virtual void CleanForRecycling() { mSubmissionIndex = 0; }

  virtual bool IsSubmitted() { return mSubmissionIndex > 0; }

  const uint32_t mWidth;
  const uint32_t mHeight;
  const struct ffi::WGPUTextureFormat mFormat;
  const ffi::WGPUTextureUsages mUsage;

 protected:
  uint64_t mSubmissionIndex = 0;
  layers::RemoteTextureOwnerId mOwnerId;
};

// Dummy class
class SharedTextureReadBackPresent final : public SharedTexture {
 public:
  static UniquePtr<SharedTextureReadBackPresent> Create(
      const uint32_t aWidth, const uint32_t aHeight,
      const struct ffi::WGPUTextureFormat aFormat,
      const ffi::WGPUTextureUsages aUsage);

  SharedTextureReadBackPresent(const uint32_t aWidth, const uint32_t aHeight,
                               const struct ffi::WGPUTextureFormat aFormat,
                               const ffi::WGPUTextureUsages aUsage);
  virtual ~SharedTextureReadBackPresent();

  Maybe<layers::SurfaceDescriptor> ToSurfaceDescriptor() override {
    return Nothing();
  }
};

}  // namespace webgpu
}  // namespace mozilla

#endif  // GPU_SharedTexture_H_

Messung V0.5 in Prozent
C=92 H=98 G=94

¤ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.