dawn-cmake/src/dawn_native/EnumClassBitmasks.h
Austin Eng 2cf5a08cfc Track depth/stencil aspects independently
This enables depth-stencil textures to track per aspect state
independently. It lifts the restriction that depth and stencil
store ops must be the same as they now have independent clear
states. It will also enable correct barriers on Vulkan and D3D12.

Bug: dawn:439
Change-Id: I8a73187df57a1d7eee6790cb4395bdecf42b63aa
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/26127
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-08-06 17:00:29 +00:00

49 lines
1.4 KiB
C++

// Copyright 2020 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_ENUMCLASSBITMASK_H_
#define DAWNNATIVE_ENUMCLASSBITMASK_H_
#include "dawn/EnumClassBitmasks.h"
namespace dawn_native {
// EnumClassBitmmasks is a WebGPU helper in the wgpu:: namespace.
// Re-export it in the dawn_native namespace.
// Specify this for usage with EnumMaskIterator
template <typename T>
struct EnumBitmaskSize {
static constexpr unsigned value = 0;
};
using wgpu::operator|;
using wgpu::operator&;
using wgpu::operator^;
using wgpu::operator~;
using wgpu::operator&=;
using wgpu::operator|=;
using wgpu::operator^=;
using wgpu::HasZeroOrOneBits;
template <typename T>
constexpr bool HasOneBit(T value) {
return HasZeroOrOneBits(value) && value != T(0);
}
} // namespace dawn_native
#endif // DAWNNATIVE_ENUMCLASSBITMASK_H_