mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-12 09:33:37 +00:00
This patch implements the use of big integer values (>2^24 or <-2^24) as the clear values of a render pass with an internal draw call as D3D12 API only supports using float numbers as clear values. Bug: dawn:537 Test: dawn_end2end_tests Change-Id: Id0a7835d611f598fb77950915f69919f804a8702 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/98104 Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Austin Eng <enga@chromium.org>
56 lines
2.2 KiB
C++
56 lines
2.2 KiB
C++
// Copyright 2022 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 SRC_DAWN_NATIVE_APPLYCLEARVALUEWITHDRAWHELPER_H_
|
|
#define SRC_DAWN_NATIVE_APPLYCLEARVALUEWITHDRAWHELPER_H_
|
|
|
|
#include <bitset>
|
|
#include <unordered_map>
|
|
#include "dawn/common/Constants.h"
|
|
#include "dawn/native/Error.h"
|
|
|
|
namespace dawn::native {
|
|
class BufferBase;
|
|
class RenderPassEncoder;
|
|
struct RenderPassDescriptor;
|
|
|
|
struct KeyOfApplyClearColorValueWithDrawPipelines {
|
|
uint8_t colorAttachmentCount;
|
|
std::array<wgpu::TextureFormat, kMaxColorAttachments> colorTargetFormats;
|
|
std::bitset<kMaxColorAttachments> colorTargetsToApplyClearColorValue;
|
|
};
|
|
|
|
struct KeyOfApplyClearColorValueWithDrawPipelinesHashFunc {
|
|
size_t operator()(KeyOfApplyClearColorValueWithDrawPipelines key) const;
|
|
};
|
|
struct KeyOfApplyClearColorValueWithDrawPipelinesEqualityFunc {
|
|
bool operator()(KeyOfApplyClearColorValueWithDrawPipelines key1,
|
|
const KeyOfApplyClearColorValueWithDrawPipelines key2) const;
|
|
};
|
|
using ApplyClearColorValueWithDrawPipelinesCache =
|
|
std::unordered_map<KeyOfApplyClearColorValueWithDrawPipelines,
|
|
Ref<RenderPipelineBase>,
|
|
KeyOfApplyClearColorValueWithDrawPipelinesHashFunc,
|
|
KeyOfApplyClearColorValueWithDrawPipelinesEqualityFunc>;
|
|
|
|
bool ShouldApplyClearBigIntegerColorValueWithDraw(const DeviceBase* device,
|
|
const RenderPassDescriptor* renderPassDescriptor);
|
|
|
|
MaybeError ApplyClearBigIntegerColorValueWithDraw(RenderPassEncoder* renderPassEncoder,
|
|
const RenderPassDescriptor* renderPassDescriptor);
|
|
|
|
} // namespace dawn::native
|
|
|
|
#endif
|