• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2017 The Dawn Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "dawn_native/PerStage.h"
16 
17 namespace dawn_native {
18 
AbslFormatConvert(SingleShaderStage value,const absl::FormatConversionSpec & spec,absl::FormatSink * s)19     absl::FormatConvertResult<absl::FormatConversionCharSet::kString> AbslFormatConvert(
20         SingleShaderStage value,
21         const absl::FormatConversionSpec& spec,
22         absl::FormatSink* s) {
23         switch (value) {
24             case SingleShaderStage::Compute:
25                 s->Append("Compute");
26                 break;
27             case SingleShaderStage::Vertex:
28                 s->Append("Vertex");
29                 break;
30             case SingleShaderStage::Fragment:
31                 s->Append("Fragment");
32                 break;
33             default:
34                 UNREACHABLE();
35         }
36         return {true};
37     }
38 
IterateStages(wgpu::ShaderStage stages)39     BitSetIterator<kNumStages, SingleShaderStage> IterateStages(wgpu::ShaderStage stages) {
40         std::bitset<kNumStages> bits(static_cast<uint32_t>(stages));
41         return BitSetIterator<kNumStages, SingleShaderStage>(bits);
42     }
43 
StageBit(SingleShaderStage stage)44     wgpu::ShaderStage StageBit(SingleShaderStage stage) {
45         ASSERT(static_cast<uint32_t>(stage) < kNumStages);
46         return static_cast<wgpu::ShaderStage>(1 << static_cast<uint32_t>(stage));
47     }
48 
49 }  // namespace dawn_native
50