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',
|
FileRender('dawn_native/ValidationUtils.cpp',
|
||||||
'src/dawn_native/ValidationUtils_autogen.cpp',
|
'src/dawn_native/ValidationUtils_autogen.cpp',
|
||||||
frontend_params))
|
frontend_params))
|
||||||
|
renders.append(
|
||||||
|
FileRender('dawn_native/dawn_platform.h',
|
||||||
|
'src/dawn_native/dawn_platform_autogen.h',
|
||||||
|
frontend_params))
|
||||||
renders.append(
|
renders.append(
|
||||||
FileRender('dawn_native/wgpu_structs.h',
|
FileRender('dawn_native/wgpu_structs.h',
|
||||||
'src/dawn_native/wgpu_structs_autogen.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.h",
|
||||||
"src/dawn_native/ChainUtils_autogen.cpp",
|
"src/dawn_native/ChainUtils_autogen.cpp",
|
||||||
"src/dawn_native/ProcTable.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.h",
|
||||||
"src/dawn_native/wgpu_structs_autogen.cpp",
|
"src/dawn_native/wgpu_structs_autogen.cpp",
|
||||||
"src/dawn_native/ValidationUtils_autogen.h",
|
"src/dawn_native/ValidationUtils_autogen.h",
|
||||||
|
|
|
@ -103,9 +103,6 @@ namespace dawn_native {
|
||||||
uint64_t mDebugGroupStackSize = 0;
|
uint64_t mDebugGroupStackSize = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// For the benefit of template generation.
|
|
||||||
using CommandEncoderBase = CommandEncoder;
|
|
||||||
|
|
||||||
} // namespace dawn_native
|
} // namespace dawn_native
|
||||||
|
|
||||||
#endif // DAWNNATIVE_COMMANDENCODER_H_
|
#endif // DAWNNATIVE_COMMANDENCODER_H_
|
||||||
|
|
|
@ -69,9 +69,6 @@ namespace dawn_native {
|
||||||
Ref<CommandEncoder> mCommandEncoder;
|
Ref<CommandEncoder> mCommandEncoder;
|
||||||
};
|
};
|
||||||
|
|
||||||
// For the benefit of template generation.
|
|
||||||
using ComputePassEncoderBase = ComputePassEncoder;
|
|
||||||
|
|
||||||
} // namespace dawn_native
|
} // namespace dawn_native
|
||||||
|
|
||||||
#endif // DAWNNATIVE_COMPUTEPASSENCODER_H_
|
#endif // DAWNNATIVE_COMPUTEPASSENCODER_H_
|
||||||
|
|
|
@ -59,6 +59,13 @@ namespace dawn_native {
|
||||||
|
|
||||||
struct Format;
|
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
|
} // namespace dawn_native
|
||||||
|
|
||||||
#endif // DAWNNATIVE_FORWARD_H_
|
#endif // DAWNNATIVE_FORWARD_H_
|
||||||
|
|
|
@ -49,9 +49,6 @@ namespace dawn_native {
|
||||||
EncodingContext mBundleEncodingContext;
|
EncodingContext mBundleEncodingContext;
|
||||||
};
|
};
|
||||||
|
|
||||||
// For the benefit of template generation.
|
|
||||||
using RenderBundleEncoderBase = RenderBundleEncoder;
|
|
||||||
|
|
||||||
} // namespace dawn_native
|
} // namespace dawn_native
|
||||||
|
|
||||||
#endif // DAWNNATIVE_RENDERBUNDLEENCODER_H_
|
#endif // DAWNNATIVE_RENDERBUNDLEENCODER_H_
|
||||||
|
|
|
@ -82,9 +82,6 @@ namespace dawn_native {
|
||||||
bool mOcclusionQueryActive = false;
|
bool mOcclusionQueryActive = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// For the benefit of template generation.
|
|
||||||
using RenderPassEncoderBase = RenderPassEncoder;
|
|
||||||
|
|
||||||
} // namespace dawn_native
|
} // namespace dawn_native
|
||||||
|
|
||||||
#endif // DAWNNATIVE_RENDERPASSENCODER_H_
|
#endif // DAWNNATIVE_RENDERPASSENCODER_H_
|
||||||
|
|
|
@ -105,9 +105,6 @@ namespace dawn_native {
|
||||||
const absl::FormatConversionSpec& spec,
|
const absl::FormatConversionSpec& spec,
|
||||||
absl::FormatSink* s);
|
absl::FormatSink* s);
|
||||||
|
|
||||||
// For the benefit of template generation.
|
|
||||||
using SurfaceBase = Surface;
|
|
||||||
|
|
||||||
} // namespace dawn_native
|
} // namespace dawn_native
|
||||||
|
|
||||||
#endif // DAWNNATIVE_SURFACE_H_
|
#endif // DAWNNATIVE_SURFACE_H_
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
// Use webgpu_cpp to have the enum and bitfield definitions
|
// Use webgpu_cpp to have the enum and bitfield definitions
|
||||||
#include <dawn/webgpu_cpp.h>
|
#include <dawn/webgpu_cpp.h>
|
||||||
|
|
||||||
// Use our autogenerated version of the wgpu structures that point to dawn_native object types
|
#include <dawn_native/dawn_platform_autogen.h>
|
||||||
// (wgpu::Buffer is dawn_native::BufferBase*)
|
|
||||||
#include <dawn_native/wgpu_structs_autogen.h>
|
|
||||||
|
|
||||||
namespace dawn_native {
|
namespace dawn_native {
|
||||||
// Extra buffer usages
|
// Extra buffer usages
|
||||||
|
|
Loading…
Reference in New Issue