All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
renderParam.h
1 //
2 // Copyright 2021 Pixar
3 //
4 // Licensed under the Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef PXR_IMAGING_PLUGIN_HD_ST_RENDER_PARAM_H
25 #define PXR_IMAGING_PLUGIN_HD_ST_RENDER_PARAM_H
26 
27 #include "pxr/pxr.h"
28 #include "pxr/imaging/hd/renderDelegate.h"
29 #include "pxr/imaging/hdSt/api.h"
30 
31 #include <atomic>
32 
33 PXR_NAMESPACE_OPEN_SCOPE
34 
42 class HdStRenderParam final : public HdRenderParam
43 {
44 public:
46  ~HdStRenderParam() override;
47 
48  // ---------------------------------------------------------------------- //
50  // ---------------------------------------------------------------------- //
53  HDST_API
54  void MarkDrawBatchesDirty();
55 
56  HDST_API
57  unsigned int GetDrawBatchesVersion() const;
58 
61  HDST_API
62  void MarkMaterialTagsDirty();
63 
64  HDST_API
65  unsigned int GetMaterialTagsVersion() const;
66 
67  // ---------------------------------------------------------------------- //
69  // ---------------------------------------------------------------------- //
71  _needsGarbageCollection = true;
72  }
73 
74  void ClearGarbageCollectionNeeded() {
75  _needsGarbageCollection = false;
76  }
77 
78  bool IsGarbageCollectionNeeded() const {
79  return _needsGarbageCollection;
80  }
81 
82 private:
83  std::atomic_uint _drawBatchesVersion;
84  std::atomic_uint _materialTagsVersion;
85  bool _needsGarbageCollection; // Doesn't need to be atomic since parallel
86  // sync might only set it (and not clear).
87 };
88 
89 PXR_NAMESPACE_CLOSE_SCOPE
90 
91 #endif // PXR_IMAGING_PLUGIN_HD_ST_RENDER_PARAM_H
The HdRenderParam is an opaque (to core Hydra) handle, to an object that is obtained from the render ...
The render delegate can create an object of type HdRenderParam, to pass to each prim during Sync()...
Definition: renderParam.h:42
void SetGarbageCollectionNeeded()
Garbage collection tracking.
Definition: renderParam.h:70
HDST_API void MarkMaterialTagsDirty()
Marks material tags dirty, meaning that the draw items associated with the collection of a render pas...
HDST_API void MarkDrawBatchesDirty()
Draw items cache and batch invalidation.