Skip to content

Commit

Permalink
Fix DirectX 12 crash in Profile build on Windows 10 due to invalid in…
Browse files Browse the repository at this point in the history
…itial state of the read-back buffer
  • Loading branch information
egorodet committed Sep 27, 2024
1 parent 4186beb commit 64ba169
Showing 1 changed file with 14 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ namespace Methane::Graphics::DirectX

static Rhi::BufferSettings UpdateBufferSettings(const Rhi::BufferSettings& settings)
{
META_FUNCTION_TASK();
Rhi::BufferSettings new_settings = settings;
if (new_settings.type == Rhi::BufferType::Constant ||
new_settings.type == Rhi::BufferType::Storage)
Expand All @@ -49,6 +50,18 @@ static Rhi::BufferSettings UpdateBufferSettings(const Rhi::BufferSettings& setti
return new_settings;
}

static Rhi::ResourceState GetInitialBufferState(bool is_private_storage, bool is_read_back_buffer)
{
META_FUNCTION_TASK();

if (is_read_back_buffer)
return Rhi::ResourceState::CopyDest;

return is_private_storage
? Rhi::ResourceState::Common
: Rhi::ResourceState::GenericRead;
}

Buffer::Buffer(const Base::Context& context, const Settings& orig_settings)
: Resource(context, UpdateBufferSettings(orig_settings))
{
Expand All @@ -58,9 +71,7 @@ Buffer::Buffer(const Base::Context& context, const Settings& orig_settings)
const bool is_read_back_buffer = settings.usage_mask.HasAnyBit(Usage::ReadBack);
const D3D12_HEAP_TYPE normal_heap_type = is_private_storage ? D3D12_HEAP_TYPE_DEFAULT : D3D12_HEAP_TYPE_UPLOAD;
const D3D12_HEAP_TYPE heap_type = is_read_back_buffer ? D3D12_HEAP_TYPE_READBACK : normal_heap_type;
const Rhi::ResourceState resource_state = is_read_back_buffer || is_private_storage
? Rhi::ResourceState::Common
: Rhi::ResourceState::GenericRead;
const Rhi::ResourceState resource_state = GetInitialBufferState(is_private_storage, is_read_back_buffer);

D3D12_RESOURCE_FLAGS resource_flags = D3D12_RESOURCE_FLAG_NONE;
if (settings.usage_mask.HasAnyBit(Usage::ShaderWrite))
Expand Down

0 comments on commit 64ba169

Please sign in to comment.