@@ -215,57 +215,66 @@ void reshade::d3d11::device_impl::get_resource_from_view(api::resource_view_hand
215
215
*out_resource = { reinterpret_cast <uintptr_t >(resource.get ()) };
216
216
}
217
217
218
- reshade::api::resource_desc reshade::d3d11::device_impl::get_resource_desc (api::resource_handle resource) const
218
+ reshade::api::resource_desc reshade::d3d11::device_impl::get_resource_desc (api::resource_handle resource, api::resource_type *out_type, api::memory_usage *out_mem_usage ) const
219
219
{
220
220
assert (resource.handle != 0 );
221
221
const auto resource_object = reinterpret_cast <ID3D11Resource *>(resource.handle );
222
222
223
223
D3D11_RESOURCE_DIMENSION dimension;
224
224
resource_object->GetType (&dimension);
225
+
226
+ static_assert (
227
+ D3D10_RESOURCE_DIMENSION_BUFFER == static_cast <uint32_t >(api::resource_type::buffer) &&
228
+ D3D10_RESOURCE_DIMENSION_TEXTURE1D == static_cast <uint32_t >(api::resource_type::texture_1d) &&
229
+ D3D10_RESOURCE_DIMENSION_TEXTURE2D == static_cast <uint32_t >(api::resource_type::texture_2d) &&
230
+ D3D10_RESOURCE_DIMENSION_TEXTURE3D == static_cast <uint32_t >(api::resource_type::texture_3d));
231
+
232
+ if (out_type != nullptr )
233
+ *out_type = static_cast <api::resource_type>(dimension);
234
+
225
235
switch (dimension)
226
236
{
227
237
case D3D11_RESOURCE_DIMENSION_BUFFER:
228
238
{
229
239
D3D11_BUFFER_DESC internal_desc;
230
240
static_cast <ID3D11Buffer *>(resource_object)->GetDesc (&internal_desc);
241
+
242
+ if (out_mem_usage != nullptr )
243
+ *out_mem_usage = convert_memory_usage (internal_desc.Usage );
231
244
return convert_resource_desc (internal_desc);
232
245
}
233
246
case D3D11_RESOURCE_DIMENSION_TEXTURE1D:
234
247
{
235
248
D3D11_TEXTURE1D_DESC internal_desc;
236
249
static_cast <ID3D11Texture1D *>(resource_object)->GetDesc (&internal_desc);
250
+
251
+ if (out_mem_usage != nullptr )
252
+ *out_mem_usage = convert_memory_usage (internal_desc.Usage );
237
253
return convert_resource_desc (internal_desc);
238
254
}
239
255
case D3D11_RESOURCE_DIMENSION_TEXTURE2D:
240
256
{
241
257
D3D11_TEXTURE2D_DESC internal_desc;
242
258
static_cast <ID3D11Texture2D *>(resource_object)->GetDesc (&internal_desc);
259
+
260
+ if (out_mem_usage != nullptr )
261
+ *out_mem_usage = convert_memory_usage (internal_desc.Usage );
243
262
return convert_resource_desc (internal_desc);
244
263
}
245
264
case D3D11_RESOURCE_DIMENSION_TEXTURE3D:
246
265
{
247
266
D3D11_TEXTURE3D_DESC internal_desc;
248
267
static_cast <ID3D11Texture3D *>(resource_object)->GetDesc (&internal_desc);
268
+
269
+ if (out_mem_usage != nullptr )
270
+ *out_mem_usage = convert_memory_usage (internal_desc.Usage );
249
271
return convert_resource_desc (internal_desc);
250
272
}
251
273
}
252
274
253
275
assert (false ); // Not implemented
254
276
return {};
255
277
}
256
- reshade::api::resource_type reshade::d3d11::device_impl::get_resource_type (api::resource_handle resource) const
257
- {
258
- static_assert (
259
- D3D10_RESOURCE_DIMENSION_BUFFER == static_cast <uint32_t >(api::resource_type::buffer) &&
260
- D3D10_RESOURCE_DIMENSION_TEXTURE1D == static_cast <uint32_t >(api::resource_type::texture_1d) &&
261
- D3D10_RESOURCE_DIMENSION_TEXTURE2D == static_cast <uint32_t >(api::resource_type::texture_2d) &&
262
- D3D10_RESOURCE_DIMENSION_TEXTURE3D == static_cast <uint32_t >(api::resource_type::texture_3d));
263
-
264
- assert (resource.handle != 0 );
265
- D3D11_RESOURCE_DIMENSION dimension;
266
- reinterpret_cast <ID3D11Resource *>(resource.handle )->GetType (&dimension);
267
- return static_cast <api::resource_type>(dimension);
268
- }
269
278
270
279
reshade::d3d11::command_list_impl::command_list_impl (device_impl *device, ID3D11CommandList *cmd_list) :
271
280
api_object_impl(cmd_list), _device_impl(device)
0 commit comments