Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/gfx/skia/skia/include/gpu/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  MutableTextureState.h   Sprache: C

 
/*
 * Copyright 2022 Google LLC.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */


#ifndef skgpu_MutableTextureState_DEFINED
#define skgpu_MutableTextureState_DEFINED

#include "include/core/SkRefCnt.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkAnySubclass.h"

#include <cstddef>

namespace skgpu {
enum class BackendApi : unsigned int;
class MutableTextureStateData;

/**
 * Since Skia and clients can both modify gpu textures and their connected state, Skia needs a way
 * for clients to inform us if they have modifiend any of this state. In order to not need setters
 * for every single API and state, we use this class to be a generic wrapper around all the mutable
 * state. This class is used for calls that inform Skia of these texture/image state changes by the
 * client as well as for requesting state changes to be done by Skia. The backend specific state
 * that is wrapped by this class are located in files like:
 *   - include/gpu/vk/VulkanMutableTextureState.h
 */

class SK_API MutableTextureState : public SkRefCnt {
public:
    MutableTextureState();
    ~MutableTextureState() override;

    MutableTextureState(const MutableTextureState& that);

    MutableTextureState& operator=(const MutableTextureState& that);

    void set(const MutableTextureState& that);

    BackendApi backend() const { return fBackend; }

    // Returns true if the backend mutable state has been initialized.
    bool isValid() const { return fIsValid; }

private:
    friend class MutableTextureStateData;
    friend class MutableTextureStatePriv;
    // Size determined by looking at the MutableTextureStateData subclasses, then
    // guessing-and-checking. Compiler will complain if this is too small - in that case,
    // just increase the number.
    inline constexpr static size_t kMaxSubclassSize = 16;
    using AnyStateData = SkAnySubclass<MutableTextureStateData, kMaxSubclassSize>;

    template <typename StateData>
    MutableTextureState(BackendApi api, const StateData& data) : fBackend(api), fIsValid(true) {
        fStateData.emplace<StateData>(data);
    }

    AnyStateData fStateData;

    BackendApi fBackend;
    bool fIsValid;
};

// namespace skgpu

#endif // skgpu_MutableTextureState_DEFINED

Messung V0.5
C=92 H=88 G=89

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

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.