mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 11:00:19 +02:00
LibraryForwarding/vulkan: Implement vkCmdSetVertexInputEXT on 32-bit
This commit is contained in:
1 parent
447148d95a
commit
054118139f
2 files changed
+28
No files matched your search
@@ -14,6 +14,7 @@ $end_info$
|
||||
|
||||
#include "common/Host.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
#include <mutex>
|
||||
#include <span>
|
||||
@@ -259,6 +260,22 @@ std::span<std::remove_cv_t<T>> RepackStructArray(uint32_t Count, const guest_lay
|
||||
return {HostData, Count};
|
||||
}
|
||||
|
||||
void fexfn_impl_libvulkan_vkCmdSetVertexInputEXT(
|
||||
VkCommandBuffer Buffer, uint32_t BindingDescCount, guest_layout<const VkVertexInputBindingDescription2EXT*> GuestBindingDescs,
|
||||
uint32_t AttributeDescCount, guest_layout<const VkVertexInputAttributeDescription2EXT*> GuestAttributeDescs) {
|
||||
|
||||
assert(GuestBindingDescs.get_pointer() && BindingDescCount > 0);
|
||||
assert(GuestAttributeDescs.get_pointer() && AttributeDescCount > 0);
|
||||
|
||||
auto BindingDescs = RepackStructArray(BindingDescCount, GuestBindingDescs);
|
||||
auto AttributeDescs = RepackStructArray(AttributeDescCount, GuestAttributeDescs);
|
||||
|
||||
fexldr_ptr_libvulkan_vkCmdSetVertexInputEXT(Buffer, BindingDescCount, BindingDescs.data(), AttributeDescCount, AttributeDescs.data());
|
||||
|
||||
delete[] AttributeDescs.data();
|
||||
delete[] BindingDescs.data();
|
||||
}
|
||||
|
||||
void fexfn_impl_libvulkan_vkUpdateDescriptorSets(VkDevice device, unsigned int descriptorWriteCount,
|
||||
guest_layout<const VkWriteDescriptorSet*> pDescriptorWrites, unsigned int descriptorCopyCount,
|
||||
guest_layout<const VkCopyDescriptorSet*> pDescriptorCopies) {
|
||||
@@ -337,6 +354,8 @@ static PFN_vkVoidFunction LookupCustomVulkanFunction(const char* a_1) {
|
||||
return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkMapMemory;
|
||||
} else if (a_1 == "vkQueueSubmit"sv) {
|
||||
return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkQueueSubmit;
|
||||
} else if (a_1 == "vkCmdSetVertexInputEXT"sv) {
|
||||
return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkCmdSetVertexInputEXT;
|
||||
} else if (a_1 == "vkUpdateDescriptorSets"sv) {
|
||||
return (PFN_vkVoidFunction)fexfn_impl_libvulkan_vkUpdateDescriptorSets;
|
||||
#endif
|
||||
|
||||
@@ -2793,8 +2793,17 @@ struct fex_gen_config<vkCmdSetFragmentShadingRateEnumNV> {};
|
||||
template<>
|
||||
struct fex_gen_config<vkGetDeviceFaultInfoEXT> {};
|
||||
#endif
|
||||
#ifndef IS_32BIT_THUNK
|
||||
template<>
|
||||
struct fex_gen_config<vkCmdSetVertexInputEXT> {};
|
||||
#else
|
||||
template<>
|
||||
struct fex_gen_config<vkCmdSetVertexInputEXT> : fexgen::custom_host_impl {};
|
||||
template<>
|
||||
struct fex_gen_param<vkCmdSetVertexInputEXT, 2, const VkVertexInputBindingDescription2EXT*> : fexgen::ptr_passthrough {};
|
||||
template<>
|
||||
struct fex_gen_param<vkCmdSetVertexInputEXT, 4, const VkVertexInputAttributeDescription2EXT*> : fexgen::ptr_passthrough {};
|
||||
#endif
|
||||
#ifndef IS_32BIT_THUNK
|
||||
template<>
|
||||
struct fex_gen_config<vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI> {};
|
||||
|
||||
Reference in new issue
Block a user