210 lines
6.8 KiB
Cheetah
210 lines
6.8 KiB
Cheetah
{{/*
|
|
* Copyright 2015 The Android Open Source Project
|
|
*
|
|
* 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.
|
|
*/}}
|
|
|
|
{{Include "../api/templates/vulkan_common.tmpl"}}
|
|
{{Global "clang-format" (Strings "clang-format" "-style=file")}}
|
|
{{Macro "DefineGlobals" $}}
|
|
{{$ | Macro "null_driver_gen.h" | Format (Global "clang-format") | Write "null_driver_gen.h" }}
|
|
{{$ | Macro "null_driver_gen.cpp" | Format (Global "clang-format") | Write "null_driver_gen.cpp"}}
|
|
|
|
|
|
{{/*
|
|
-------------------------------------------------------------------------------
|
|
null_driver_gen.h
|
|
-------------------------------------------------------------------------------
|
|
*/}}
|
|
{{define "null_driver_gen.h"}}
|
|
/*
|
|
•* Copyright 2015 The Android Open Source Project
|
|
•*
|
|
•* 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.
|
|
•*/
|
|
¶
|
|
// WARNING: This file is generated. See ../README.md for instructions.
|
|
¶
|
|
#ifndef NULLDRV_NULL_DRIVER_H
|
|
#define NULLDRV_NULL_DRIVER_H 1
|
|
¶
|
|
#include <vulkan/vk_android_native_buffer.h>
|
|
#include <vulkan/vulkan.h>
|
|
¶
|
|
namespace null_driver {«
|
|
¶
|
|
PFN_vkVoidFunction GetGlobalProcAddr(const char* name);
|
|
PFN_vkVoidFunction GetInstanceProcAddr(const char* name);
|
|
¶
|
|
// clang-format off
|
|
{{range $f := AllCommands $}}
|
|
{{if (Macro "IsDriverFunction" $f)}}
|
|
VKAPI_ATTR {{Node "Type" $f.Return}} {{Macro "BaseName" $f}}({{Macro "Parameters" $f}});
|
|
{{end}}
|
|
{{end}}
|
|
VKAPI_ATTR VkResult GetSwapchainGrallocUsageANDROID(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
|
|
VKAPI_ATTR VkResult AcquireImageANDROID(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore, VkFence fence);
|
|
VKAPI_ATTR VkResult QueueSignalReleaseImageANDROID(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int* pNativeFenceFd);
|
|
// clang-format on
|
|
¶
|
|
»} // namespace null_driver
|
|
¶
|
|
#endif // NULLDRV_NULL_DRIVER_H
|
|
¶{{end}}
|
|
|
|
|
|
{{/*
|
|
-------------------------------------------------------------------------------
|
|
null_driver_gen.cpp
|
|
-------------------------------------------------------------------------------
|
|
*/}}
|
|
{{define "null_driver_gen.cpp"}}
|
|
/*
|
|
•* Copyright 2015 The Android Open Source Project
|
|
•*
|
|
•* 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.
|
|
•*/
|
|
¶
|
|
// WARNING: This file is generated. See ../README.md for instructions.
|
|
¶
|
|
#include "null_driver_gen.h"
|
|
#include <algorithm>
|
|
¶
|
|
using namespace null_driver;
|
|
¶
|
|
namespace {
|
|
¶
|
|
struct NameProc {
|
|
const char* name;
|
|
PFN_vkVoidFunction proc;
|
|
};
|
|
¶
|
|
PFN_vkVoidFunction Lookup(const char* name,
|
|
const NameProc* begin,
|
|
const NameProc* end) {
|
|
const auto& entry = std::lower_bound(
|
|
begin, end, name,
|
|
[](const NameProc& e, const char* n) { return strcmp(e.name, n) < 0; });
|
|
if (entry == end || strcmp(entry->name, name) != 0)
|
|
return nullptr;
|
|
return entry->proc;
|
|
}
|
|
¶
|
|
template <size_t N>
|
|
PFN_vkVoidFunction Lookup(const char* name, const NameProc (&procs)[N]) {
|
|
return Lookup(name, procs, procs + N);
|
|
}
|
|
¶
|
|
const NameProc kGlobalProcs[] = {«
|
|
// clang-format off
|
|
{{range $f := SortBy (AllCommands $) "FunctionName"}}
|
|
{{if and (Macro "IsDriverFunction" $f) (eq (Macro "Vtbl" $f) "Global")}}
|
|
{"{{$f.Name}}", reinterpret_cast<PFN_vkVoidFunction>(§
|
|
static_cast<{{Macro "FunctionPtrName" $f}}>(§
|
|
{{Macro "BaseName" $f}}))},
|
|
{{end}}
|
|
{{end}}
|
|
// clang-format on
|
|
»};
|
|
¶
|
|
const NameProc kInstanceProcs[] = {«
|
|
// clang-format off
|
|
{{range $f := SortBy (AllCommands $) "FunctionName"}}
|
|
{{if (Macro "IsDriverFunction" $f)}}
|
|
{"{{$f.Name}}", reinterpret_cast<PFN_vkVoidFunction>(§
|
|
static_cast<{{Macro "FunctionPtrName" $f}}>(§
|
|
{{Macro "BaseName" $f}}))},
|
|
{{end}}
|
|
{{end}}
|
|
// clang-format on
|
|
»};
|
|
¶
|
|
} // namespace
|
|
¶
|
|
namespace null_driver {
|
|
¶
|
|
PFN_vkVoidFunction GetGlobalProcAddr(const char* name) {
|
|
return Lookup(name, kGlobalProcs);
|
|
}
|
|
¶
|
|
PFN_vkVoidFunction GetInstanceProcAddr(const char* name) {«
|
|
return Lookup(name, kInstanceProcs);
|
|
»}
|
|
¶
|
|
} // namespace null_driver
|
|
¶
|
|
{{end}}
|
|
|
|
|
|
{{/*
|
|
-------------------------------------------------------------------------------
|
|
Emits a function name without the "vk" prefix.
|
|
-------------------------------------------------------------------------------
|
|
*/}}
|
|
{{define "BaseName"}}
|
|
{{AssertType $ "Function"}}
|
|
{{TrimPrefix "vk" $.Name}}
|
|
{{end}}
|
|
|
|
|
|
{{/*
|
|
------------------------------------------------------------------------------
|
|
Emits 'true' if the API function is implemented by the driver.
|
|
------------------------------------------------------------------------------
|
|
*/}}
|
|
{{define "IsDriverFunction"}}
|
|
{{AssertType $ "Function"}}
|
|
|
|
{{if not (GetAnnotation $ "pfn")}}
|
|
{{$ext := GetAnnotation $ "extension"}}
|
|
{{if $ext}}
|
|
{{Macro "IsDriverExtension" $ext}}
|
|
{{else}}
|
|
true
|
|
{{end}}
|
|
{{end}}
|
|
{{end}}
|
|
|
|
|
|
{{/*
|
|
------------------------------------------------------------------------------
|
|
Reports whether an extension is implemented by the driver.
|
|
------------------------------------------------------------------------------
|
|
*/}}
|
|
{{define "IsDriverExtension"}}
|
|
{{$ext := index $.Arguments 0}}
|
|
{{ if eq $ext "VK_ANDROID_native_buffer"}}true
|
|
{{else if eq $ext "VK_EXT_debug_report"}}true
|
|
{{else if eq $ext "VK_KHR_get_physical_device_properties2"}}true
|
|
{{end}}
|
|
{{end}}
|