File tree Expand file tree Collapse file tree
Graphics/GraphicsTools/interface Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -65,6 +65,7 @@ class ResourceRegistry
6565 m_Resources[Id] = pObject;
6666 }
6767
68+ template <typename T>
6869 struct ResourceAccessor
6970 {
7071 explicit operator bool () const
@@ -136,18 +137,30 @@ class ResourceRegistry
136137 return GetBufferDefaultUAV (Object);
137138 }
138139
140+ template <typename Y = T, typename = typename std::enable_if<!std::is_const<Y>::value>::type>
141+ void Release ()
142+ {
143+ Object.Release ();
144+ }
145+
139146 private:
140- ResourceAccessor (const RefCntAutoPtr<IDeviceObject> & _Object) :
147+ ResourceAccessor (T & _Object) :
141148 Object{_Object}
142149 {}
143150 friend ResourceRegistry;
144- const RefCntAutoPtr<IDeviceObject> & Object;
151+ T & Object;
145152 };
146153
147- ResourceAccessor operator [](ResourceIdType Id) const
154+ ResourceAccessor<const RefCntAutoPtr<IDeviceObject>> operator [](ResourceIdType Id) const
155+ {
156+ DEV_CHECK_ERR (Id < m_Resources.size (), " Resource index is out of range" );
157+ return {m_Resources[Id]};
158+ }
159+
160+ ResourceAccessor<RefCntAutoPtr<IDeviceObject>> operator [](ResourceIdType Id)
148161 {
149162 DEV_CHECK_ERR (Id < m_Resources.size (), " Resource index is out of range" );
150- return ResourceAccessor {m_Resources[Id]};
163+ return {m_Resources[Id]};
151164 }
152165
153166 void Clear ()
You can’t perform that action at this time.
0 commit comments