mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-07 05:36:04 +00:00
This reverts commit 421584173cae282ee496291b1cb08eebcad71be7. Reason for revert: Some of the newly added tests are failing on Windows NVIDIA GTX 1660 https://ci.chromium.org/p/chromium/builders/ci/Win10%20FYI%20x64%20Release%20%28NVIDIA%20GeForce%20GTX%201660%29/21 Original change's description: > Fix dynamic buffer offset issues on D3D12 backend > > This patch fixes > 1. Inherit dynamic buffer offsets : dawn chooses vulkan > like inherit behaviour, so dynamic offsets need to be inherited. > This patch adds inherit dynamic offsets between pipelines support and > adds tests to cover it. > > 2. Dynamic offsets are skipped when groups have been set : in D3D12 > backend, when invoke SetBindGroup, dawn will check whether this group > has already been set and skip updating root signature if the answer is > yes. However, this behaviour will affect dynamic offsets update. With > the latest patch, we always update dynamic offsets, even if they didn't > change and adds tests to cover it. > > This patch also hit a dawn's issue about storage buffer validation in compute pass. > Currently the validation is a workaround to avoid access conflicts but will impact > using dynamic buffer offset in compute pipeline. Fix this issue is hard so disable > related test for now and will enable it after the issue been fixed. File dawn bug > 198 to track this > > BUG=dawn:55 > > Change-Id: I2b0f179b3555d37d5b350292eb729767b0d60ab6 > Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/9621 > Commit-Queue: Austin Eng <enga@chromium.org> > Reviewed-by: Austin Eng <enga@chromium.org> > Reviewed-by: Kai Ninomiya <kainino@chromium.org> TBR=kainino@chromium.org,shaobo.yan@intel.com,enga@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: dawn:55 Change-Id: I018e6fa9b4b0905de602ab4ba3294ef537c53759 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/9900 Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Austin Eng <enga@chromium.org>
49 lines
1.8 KiB
C++
49 lines
1.8 KiB
C++
// Copyright 2017 The Dawn Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef DAWNNATIVE_D3D12_PIPELINELAYOUTD3D12_H_
|
|
#define DAWNNATIVE_D3D12_PIPELINELAYOUTD3D12_H_
|
|
|
|
#include "dawn_native/PipelineLayout.h"
|
|
|
|
#include "dawn_native/d3d12/d3d12_platform.h"
|
|
|
|
namespace dawn_native { namespace d3d12 {
|
|
|
|
class Device;
|
|
|
|
class PipelineLayout : public PipelineLayoutBase {
|
|
public:
|
|
PipelineLayout(Device* device, const PipelineLayoutDescriptor* descriptor);
|
|
|
|
uint32_t GetCbvUavSrvRootParameterIndex(uint32_t group) const;
|
|
uint32_t GetSamplerRootParameterIndex(uint32_t group) const;
|
|
|
|
// Returns the index of the root parameter reserved for a dynamic buffer binding
|
|
uint32_t GetDynamicRootParameterIndex(uint32_t group, uint32_t binding) const;
|
|
|
|
ComPtr<ID3D12RootSignature> GetRootSignature();
|
|
|
|
private:
|
|
std::array<uint32_t, kMaxBindGroups> mCbvUavSrvRootParameterInfo;
|
|
std::array<uint32_t, kMaxBindGroups> mSamplerRootParameterInfo;
|
|
std::array<std::array<uint32_t, kMaxBindingsPerGroup>, kMaxBindGroups>
|
|
mDynamicRootParameterIndices;
|
|
ComPtr<ID3D12RootSignature> mRootSignature;
|
|
};
|
|
|
|
}} // namespace dawn_native::d3d12
|
|
|
|
#endif // DAWNNATIVE_D3D12_PIPELINELAYOUTD3D12_H_
|