tools: prefer cast::ffs over reinterpret_cast for alignment warnings
This commit is contained in:
parent
c5d2333cfc
commit
db7f691624
@ -299,7 +299,7 @@ VkResult _vkCreateDebugReportCallbackEXT (
|
|||||||
const VkAllocationCallbacks* pAllocator,
|
const VkAllocationCallbacks* pAllocator,
|
||||||
VkDebugReportCallbackEXT* pCallback
|
VkDebugReportCallbackEXT* pCallback
|
||||||
) noexcept {
|
) noexcept {
|
||||||
static auto fn = reinterpret_cast<
|
static auto fn = cruft::cast::ffs<
|
||||||
decltype(_vkCreateDebugReportCallbackEXT)*
|
decltype(_vkCreateDebugReportCallbackEXT)*
|
||||||
> (
|
> (
|
||||||
vkGetInstanceProcAddr (
|
vkGetInstanceProcAddr (
|
||||||
|
@ -850,6 +850,7 @@ def write_dispatch(dst: TextIO, q: List[Type], reg: Registry):
|
|||||||
#include "load/dispatch.hpp"
|
#include "load/dispatch.hpp"
|
||||||
|
|
||||||
#include <cruft/util/debug/panic.hpp>
|
#include <cruft/util/debug/panic.hpp>
|
||||||
|
#include <cruft/util/cast.hpp>
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -871,11 +872,11 @@ def write_dispatch(dst: TextIO, q: List[Type], reg: Registry):
|
|||||||
if (err != VK_SUCCESS)
|
if (err != VK_SUCCESS)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
#define GET(NAME) res->table.NAME = reinterpret_cast<decltype(NAME)*> (cruft::vk::load::v_table->vk_icdGetInstanceProcAddr (res->handle, #NAME));
|
#define GET(NAME) res->table.NAME = cruft::cast::ffs<decltype(NAME)*> (cruft::vk::load::v_table->vk_icdGetInstanceProcAddr (res->handle, #NAME));
|
||||||
MAP_INSTANCE_COMMANDS(GET)
|
MAP_INSTANCE_COMMANDS(GET)
|
||||||
#undef GET
|
#undef GET
|
||||||
|
|
||||||
#define GET(NAME) if (!res->table.NAME) res->table.NAME = reinterpret_cast<decltype(NAME)*> (res->table.vkGetInstanceProcAddr (res->handle, #NAME));
|
#define GET(NAME) if (!res->table.NAME) res->table.NAME = cruft::cast::ffs<decltype(NAME)*> (res->table.vkGetInstanceProcAddr (res->handle, #NAME));
|
||||||
MAP_INSTANCE_COMMANDS(GET)
|
MAP_INSTANCE_COMMANDS(GET)
|
||||||
#undef GET
|
#undef GET
|
||||||
|
|
||||||
@ -885,7 +886,7 @@ def write_dispatch(dst: TextIO, q: List[Type], reg: Registry):
|
|||||||
|
|
||||||
'vkGetInstanceProcAddr': """
|
'vkGetInstanceProcAddr': """
|
||||||
std::clog << "InstanceProcAddr: " << pName << '\\n';
|
std::clog << "InstanceProcAddr: " << pName << '\\n';
|
||||||
#define ATTEMPT(NAME) if (!strcmp (#NAME, pName)) return reinterpret_cast<PFN_vkVoidFunction> (&NAME);
|
#define ATTEMPT(NAME) if (!strcmp (#NAME, pName)) return cruft::cast::ffs<PFN_vkVoidFunction> (&NAME);
|
||||||
MAP_INSTANCE_COMMANDS(ATTEMPT)
|
MAP_INSTANCE_COMMANDS(ATTEMPT)
|
||||||
#undef ATTEMPT
|
#undef ATTEMPT
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -927,11 +928,11 @@ def write_dispatch(dst: TextIO, q: List[Type], reg: Registry):
|
|||||||
//MAP_INSTANCE_COMMANDS(GET)
|
//MAP_INSTANCE_COMMANDS(GET)
|
||||||
//#undef GET
|
//#undef GET
|
||||||
|
|
||||||
#define GET(NAME) wrapped->table.NAME = wrapped->table.NAME ?: reinterpret_cast<decltype(NAME)*> (cruft::vk::load::v_table->vk_icdGetInstanceProcAddr (entry->handle, #NAME));
|
#define GET(NAME) wrapped->table.NAME = wrapped->table.NAME ?: cruft::cast::ffs<decltype(NAME)*> (cruft::vk::load::v_table->vk_icdGetInstanceProcAddr (entry->handle, #NAME));
|
||||||
MAP_INSTANCE_COMMANDS(GET)
|
MAP_INSTANCE_COMMANDS(GET)
|
||||||
#undef GET
|
#undef GET
|
||||||
|
|
||||||
#define GET(NAME) wrapped->table.NAME = wrapped->table.NAME ?: reinterpret_cast<decltype(NAME)*> (entry->table.vkGetInstanceProcAddr (entry->handle, #NAME));
|
#define GET(NAME) wrapped->table.NAME = wrapped->table.NAME ?: cruft::cast::ffs<decltype(NAME)*> (entry->table.vkGetInstanceProcAddr (entry->handle, #NAME));
|
||||||
MAP_INSTANCE_COMMANDS(GET)
|
MAP_INSTANCE_COMMANDS(GET)
|
||||||
#undef GET
|
#undef GET
|
||||||
|
|
||||||
@ -996,17 +997,19 @@ def write_trace(dst: TextIO, q: List[Type], reg: Registry):
|
|||||||
#include "vk.hpp"
|
#include "vk.hpp"
|
||||||
#include "load/vtable.hpp"
|
#include "load/vtable.hpp"
|
||||||
#include "ostream.hpp"
|
#include "ostream.hpp"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
#include <cruft/util/cast.hpp>
|
||||||
|
|
||||||
static void* g_lib;
|
static void* g_lib;
|
||||||
|
|
||||||
void init [[gnu::constructor]] (void) {
|
void init [[gnu::constructor]] (void) {
|
||||||
g_lib = dlopen (getenv ("REAL_VULKAN"), RTLD_LAZY | RTLD_LOCAL);
|
g_lib = dlopen (getenv ("REAL_VULKAN"), RTLD_LAZY | RTLD_LOCAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void deinit [[gnu::destructor]] (void) {
|
void deinit [[gnu::destructor]] (void) {
|
||||||
dlclose (g_lib);
|
dlclose (g_lib);
|
||||||
g_lib = nullptr;
|
g_lib = nullptr;
|
||||||
@ -1014,7 +1017,6 @@ def write_trace(dst: TextIO, q: List[Type], reg: Registry):
|
|||||||
#pragma GCC diagnostic ignored "-Wsign-promo"
|
#pragma GCC diagnostic ignored "-Wsign-promo"
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
|
||||||
for obj in (i for i in q if isinstance(i, Command)):
|
for obj in (i for i in q if isinstance(i, Command)):
|
||||||
inner = ""
|
inner = ""
|
||||||
if obj.name in ['vkGetInstanceProcAddr']:
|
if obj.name in ['vkGetInstanceProcAddr']:
|
||||||
@ -1029,7 +1031,7 @@ def write_trace(dst: TextIO, q: List[Type], reg: Registry):
|
|||||||
}
|
}
|
||||||
#undef FWD
|
#undef FWD
|
||||||
|
|
||||||
#define FWD(NAME) if (!strcmp(#NAME,pName)) { return reinterpret_cast<PFN_vkVoidFunction> (NAME); }
|
#define FWD(NAME) if (!strcmp(#NAME,pName)) { return cruft::cast::ffs<PFN_vkVoidFunction> (NAME); }
|
||||||
MAP_INSTANCE_COMMANDS(FWD)
|
MAP_INSTANCE_COMMANDS(FWD)
|
||||||
#undef FWD
|
#undef FWD
|
||||||
std::clog << "Unhooked: " << pName << '\\n';
|
std::clog << "Unhooked: " << pName << '\\n';
|
||||||
|
Loading…
Reference in New Issue
Block a user