Add FromAPI / ToAPI helpers for dawn_native
Helps to avoid explicitly using reinterpret_cast Change-Id: I4df0e7094c7d8460385c6f23dac529ace9df9bdc Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/67605 Auto-Submit: Austin Eng <enga@chromium.org> Reviewed-by: Loko Kung <lokokung@google.com> Commit-Queue: Austin Eng <enga@chromium.org>
This commit is contained in:
parent
346b58cfba
commit
3faa478ed2
|
@ -818,6 +818,10 @@ class MultiGeneratorFromDawnJSON(Generator):
|
|||
FileRender('dawn_native/ValidationUtils.cpp',
|
||||
'src/dawn_native/ValidationUtils_autogen.cpp',
|
||||
frontend_params))
|
||||
renders.append(
|
||||
FileRender('dawn_native/dawn_platform.h',
|
||||
'src/dawn_native/dawn_platform_autogen.h',
|
||||
frontend_params))
|
||||
renders.append(
|
||||
FileRender('dawn_native/wgpu_structs.h',
|
||||
'src/dawn_native/wgpu_structs_autogen.h',
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
//* Copyright 2021 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_DAWN_PLATFORM_AUTOGEN_H_
|
||||
#define DAWNNATIVE_DAWN_PLATFORM_AUTOGEN_H_
|
||||
|
||||
#include "dawn/webgpu_cpp.h"
|
||||
#include "dawn_native/Forward.h"
|
||||
|
||||
// Use our autogenerated version of the wgpu structures that point to dawn_native object types
|
||||
// (wgpu::Buffer is dawn_native::BufferBase*)
|
||||
#include <dawn_native/wgpu_structs_autogen.h>
|
||||
|
||||
namespace dawn_native {
|
||||
|
||||
{% for type in by_category["structure"] %}
|
||||
inline const {{as_cType(type.name)}}* ToAPI(const {{as_cppType(type.name)}}* rhs) {
|
||||
return reinterpret_cast<const {{as_cType(type.name)}}*>(rhs);
|
||||
}
|
||||
|
||||
inline {{as_cType(type.name)}}* ToAPI({{as_cppType(type.name)}}* rhs) {
|
||||
return reinterpret_cast<{{as_cType(type.name)}}*>(rhs);
|
||||
}
|
||||
|
||||
inline const {{as_cppType(type.name)}}* FromAPI(const {{as_cType(type.name)}}* rhs) {
|
||||
return reinterpret_cast<const {{as_cppType(type.name)}}*>(rhs);
|
||||
}
|
||||
|
||||
inline {{as_cppType(type.name)}}* FromAPI({{as_cType(type.name)}}* rhs) {
|
||||
return reinterpret_cast<{{as_cppType(type.name)}}*>(rhs);
|
||||
}
|
||||
{% endfor %}
|
||||
|
||||
{% for type in by_category["object"] %}
|
||||
inline const {{as_cType(type.name)}}Impl* ToAPI(const {{as_cppType(type.name)}}Base* rhs) {
|
||||
return reinterpret_cast<const {{as_cType(type.name)}}Impl*>(rhs);
|
||||
}
|
||||
|
||||
inline {{as_cType(type.name)}}Impl* ToAPI({{as_cppType(type.name)}}Base* rhs) {
|
||||
return reinterpret_cast<{{as_cType(type.name)}}Impl*>(rhs);
|
||||
}
|
||||
|
||||
inline const {{as_cppType(type.name)}}Base* FromAPI(const {{as_cType(type.name)}}Impl* rhs) {
|
||||
return reinterpret_cast<const {{as_cppType(type.name)}}Base*>(rhs);
|
||||
}
|
||||
|
||||
inline {{as_cppType(type.name)}}Base* FromAPI({{as_cType(type.name)}}Impl* rhs) {
|
||||
return reinterpret_cast<{{as_cppType(type.name)}}Base*>(rhs);
|
||||
}
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
#endif // DAWNNATIVE_DAWN_PLATFORM_AUTOGEN_H_
|
|
@ -105,6 +105,7 @@ dawn_json_generator("dawn_native_utils_gen") {
|
|||
"src/dawn_native/ChainUtils_autogen.h",
|
||||
"src/dawn_native/ChainUtils_autogen.cpp",
|
||||
"src/dawn_native/ProcTable.cpp",
|
||||
"src/dawn_native/dawn_platform_autogen.h",
|
||||
"src/dawn_native/wgpu_structs_autogen.h",
|
||||
"src/dawn_native/wgpu_structs_autogen.cpp",
|
||||
"src/dawn_native/ValidationUtils_autogen.h",
|
||||
|
|
|
@ -103,9 +103,6 @@ namespace dawn_native {
|
|||
uint64_t mDebugGroupStackSize = 0;
|
||||
};
|
||||
|
||||
// For the benefit of template generation.
|
||||
using CommandEncoderBase = CommandEncoder;
|
||||
|
||||
} // namespace dawn_native
|
||||
|
||||
#endif // DAWNNATIVE_COMMANDENCODER_H_
|
||||
|
|
|
@ -69,9 +69,6 @@ namespace dawn_native {
|
|||
Ref<CommandEncoder> mCommandEncoder;
|
||||
};
|
||||
|
||||
// For the benefit of template generation.
|
||||
using ComputePassEncoderBase = ComputePassEncoder;
|
||||
|
||||
} // namespace dawn_native
|
||||
|
||||
#endif // DAWNNATIVE_COMPUTEPASSENCODER_H_
|
||||
|
|
|
@ -59,6 +59,13 @@ namespace dawn_native {
|
|||
|
||||
struct Format;
|
||||
|
||||
// Aliases for frontend-only types.
|
||||
using CommandEncoderBase = CommandEncoder;
|
||||
using ComputePassEncoderBase = ComputePassEncoder;
|
||||
using RenderBundleEncoderBase = RenderBundleEncoder;
|
||||
using RenderPassEncoderBase = RenderPassEncoder;
|
||||
using SurfaceBase = Surface;
|
||||
|
||||
} // namespace dawn_native
|
||||
|
||||
#endif // DAWNNATIVE_FORWARD_H_
|
||||
|
|
|
@ -49,9 +49,6 @@ namespace dawn_native {
|
|||
EncodingContext mBundleEncodingContext;
|
||||
};
|
||||
|
||||
// For the benefit of template generation.
|
||||
using RenderBundleEncoderBase = RenderBundleEncoder;
|
||||
|
||||
} // namespace dawn_native
|
||||
|
||||
#endif // DAWNNATIVE_RENDERBUNDLEENCODER_H_
|
||||
|
|
|
@ -82,9 +82,6 @@ namespace dawn_native {
|
|||
bool mOcclusionQueryActive = false;
|
||||
};
|
||||
|
||||
// For the benefit of template generation.
|
||||
using RenderPassEncoderBase = RenderPassEncoder;
|
||||
|
||||
} // namespace dawn_native
|
||||
|
||||
#endif // DAWNNATIVE_RENDERPASSENCODER_H_
|
||||
|
|
|
@ -105,9 +105,6 @@ namespace dawn_native {
|
|||
const absl::FormatConversionSpec& spec,
|
||||
absl::FormatSink* s);
|
||||
|
||||
// For the benefit of template generation.
|
||||
using SurfaceBase = Surface;
|
||||
|
||||
} // namespace dawn_native
|
||||
|
||||
#endif // DAWNNATIVE_SURFACE_H_
|
||||
|
|
|
@ -18,9 +18,7 @@
|
|||
// Use webgpu_cpp to have the enum and bitfield definitions
|
||||
#include <dawn/webgpu_cpp.h>
|
||||
|
||||
// Use our autogenerated version of the wgpu structures that point to dawn_native object types
|
||||
// (wgpu::Buffer is dawn_native::BufferBase*)
|
||||
#include <dawn_native/wgpu_structs_autogen.h>
|
||||
#include <dawn_native/dawn_platform_autogen.h>
|
||||
|
||||
namespace dawn_native {
|
||||
// Extra buffer usages
|
||||
|
|
Loading…
Reference in New Issue