Merge pull request #114 from GabrielMajeri/fix-version-macros

Use Rust integral types
This commit is contained in:
Maik Klein 2018-08-29 09:36:15 +02:00 committed by GitHub
commit f679197d0f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 2751 additions and 2742 deletions

View file

@ -12,7 +12,6 @@ documentation = "https://docs.rs/ash"
[dependencies]
shared_library = "0.1.5"
lazy_static = "0.2.1"
libc = "0.2.26"
[features]
default = []

View file

@ -1,30 +1,31 @@
#![allow(dead_code)]
use vk;
use std::os::raw::c_void;
use std::ptr;
pub trait VkAllocation {
unsafe extern "system" fn allocation(
*mut (),
vk::size_t,
vk::size_t,
usize,
usize,
vk::SystemAllocationScope,
) -> *mut ();
unsafe extern "system" fn reallocation(
*mut vk::c_void,
*mut vk::c_void,
vk::size_t,
vk::size_t,
*mut c_void,
*mut c_void,
usize,
usize,
vk::SystemAllocationScope,
) -> *mut vk::c_void;
unsafe extern "system" fn free(*mut vk::c_void, *mut vk::c_void);
) -> *mut c_void;
unsafe extern "system" fn free(*mut c_void, *mut c_void);
unsafe extern "system" fn internal_allocation(
*mut vk::c_void,
vk::size_t,
*mut c_void,
usize,
vk::InternalAllocationType,
vk::SystemAllocationScope,
);
unsafe extern "system" fn internal_free(
*mut vk::c_void,
vk::size_t,
*mut c_void,
usize,
vk::InternalAllocationType,
vk::SystemAllocationScope,
);
@ -47,33 +48,33 @@ pub struct TestAlloc;
impl VkAllocation for TestAlloc {
unsafe extern "system" fn allocation(
_: *mut (),
_: vk::size_t,
_: vk::size_t,
_: usize,
_: usize,
_: vk::SystemAllocationScope,
) -> *mut () {
ptr::null_mut()
}
unsafe extern "system" fn reallocation(
_: *mut vk::c_void,
_: *mut vk::c_void,
_: vk::size_t,
_: vk::size_t,
_: *mut c_void,
_: *mut c_void,
_: usize,
_: usize,
_: vk::SystemAllocationScope,
) -> *mut vk::c_void {
) -> *mut c_void {
ptr::null_mut()
}
unsafe extern "system" fn free(_: *mut vk::c_void, _: *mut vk::c_void) {}
unsafe extern "system" fn free(_: *mut c_void, _: *mut c_void) {}
unsafe extern "system" fn internal_allocation(
_: *mut vk::c_void,
_: vk::size_t,
_: *mut c_void,
_: usize,
_: vk::InternalAllocationType,
_: vk::SystemAllocationScope,
) {
}
unsafe extern "system" fn internal_free(
_: *mut vk::c_void,
_: vk::size_t,
_: *mut c_void,
_: usize,
_: vk::InternalAllocationType,
_: vk::SystemAllocationScope,
) {
@ -82,33 +83,33 @@ impl VkAllocation for TestAlloc {
impl VkAllocation for DefaultAllocatorCallback {
unsafe extern "system" fn allocation(
_: *mut (),
_: vk::size_t,
_: vk::size_t,
_: usize,
_: usize,
_: vk::SystemAllocationScope,
) -> *mut () {
ptr::null_mut()
}
unsafe extern "system" fn reallocation(
_: *mut vk::c_void,
_: *mut vk::c_void,
_: vk::size_t,
_: vk::size_t,
_: *mut c_void,
_: *mut c_void,
_: usize,
_: usize,
_: vk::SystemAllocationScope,
) -> *mut vk::c_void {
) -> *mut c_void {
ptr::null_mut()
}
unsafe extern "system" fn free(_: *mut vk::c_void, _: *mut vk::c_void) {}
unsafe extern "system" fn free(_: *mut c_void, _: *mut c_void) {}
unsafe extern "system" fn internal_allocation(
_: *mut vk::c_void,
_: vk::size_t,
_: *mut c_void,
_: usize,
_: vk::InternalAllocationType,
_: vk::SystemAllocationScope,
) {
}
unsafe extern "system" fn internal_free(
_: *mut vk::c_void,
_: vk::size_t,
_: *mut c_void,
_: usize,
_: vk::InternalAllocationType,
_: vk::SystemAllocationScope,
) {

View file

@ -1,6 +1,7 @@
#![allow(dead_code)]
use prelude::*;
use std::mem;
use std::os::raw::c_void;
use std::ptr;
use version::{FunctionPointers, V1_0, V1_1};
use vk;
@ -36,9 +37,9 @@ pub trait DeviceV1_1: DeviceV1_0 {
unsafe fn get_device_group_peer_memory_features(
&self,
heap_index: vk::uint32_t,
local_device_index: vk::uint32_t,
remote_device_index: vk::uint32_t,
heap_index: u32,
local_device_index: u32,
remote_device_index: u32,
) -> vk::PeerMemoryFeatureFlags {
let mut peer_memory_features = mem::uninitialized();
self.fp_v1_1().get_device_group_peer_memory_features(
@ -54,7 +55,7 @@ pub trait DeviceV1_1: DeviceV1_0 {
unsafe fn cmd_set_device_mask(
&self,
command_buffer: vk::CommandBuffer,
device_mask: vk::uint32_t,
device_mask: u32,
) {
self.fp_v1_1()
.cmd_set_device_mask(command_buffer, device_mask);
@ -63,12 +64,12 @@ pub trait DeviceV1_1: DeviceV1_0 {
unsafe fn cmd_dispatch_base(
&self,
command_buffer: vk::CommandBuffer,
base_group_x: vk::uint32_t,
base_group_y: vk::uint32_t,
base_group_z: vk::uint32_t,
group_count_x: vk::uint32_t,
group_count_y: vk::uint32_t,
group_count_z: vk::uint32_t,
base_group_x: u32,
base_group_y: u32,
base_group_z: u32,
group_count_x: u32,
group_count_y: u32,
group_count_z: u32,
) {
self.fp_v1_1().cmd_dispatch_base(
command_buffer,
@ -202,7 +203,7 @@ pub trait DeviceV1_1: DeviceV1_0 {
&self,
descriptor_set: vk::DescriptorSet,
descriptor_update_template: vk::DescriptorUpdateTemplate,
data: *const vk::c_void,
data: *const c_void,
) {
self.fp_v1_1().update_descriptor_set_with_template(
self.handle(),
@ -261,7 +262,7 @@ pub trait DeviceV1_0 {
self.fp_v1_0().free_command_buffers(
self.handle(),
command_pool,
command_buffers.len() as vk::uint32_t,
command_buffers.len() as u32,
command_buffers.as_ptr(),
);
}
@ -521,7 +522,7 @@ pub trait DeviceV1_0 {
buffer: vk::Buffer,
offset: vk::DeviceSize,
size: vk::DeviceSize,
data: vk::uint32_t,
data: u32,
) {
self.fp_v1_0()
.cmd_fill_buffer(command_buffer, buffer, offset, size, data);
@ -572,7 +573,7 @@ pub trait DeviceV1_0 {
src_image,
src_image_layout,
dst_buffer,
regions.len() as vk::uint32_t,
regions.len() as u32,
regions.as_ptr(),
);
}
@ -722,7 +723,7 @@ pub trait DeviceV1_0 {
unsafe fn reset_fences(&self, fences: &[vk::Fence]) -> VkResult<()> {
let err_code = self.fp_v1_0().reset_fences(
self.handle(),
fences.len() as vk::uint32_t,
fences.len() as u32,
fences.as_ptr(),
);
match err_code {
@ -755,7 +756,7 @@ pub trait DeviceV1_0 {
image,
image_layout,
clear_color_value,
ranges.len() as vk::uint32_t,
ranges.len() as u32,
ranges.as_ptr(),
);
}
@ -773,7 +774,7 @@ pub trait DeviceV1_0 {
image,
image_layout,
clear_depth_stencil_value,
ranges.len() as vk::uint32_t,
ranges.len() as u32,
ranges.as_ptr(),
);
}
@ -786,9 +787,9 @@ pub trait DeviceV1_0 {
) {
self.fp_v1_0().cmd_clear_attachments(
command_buffer,
attachments.len() as vk::uint32_t,
attachments.len() as u32,
attachments.as_ptr(),
rects.len() as vk::uint32_t,
rects.len() as u32,
rects.as_ptr(),
);
}
@ -796,11 +797,11 @@ pub trait DeviceV1_0 {
unsafe fn cmd_draw_indexed(
&self,
command_buffer: vk::CommandBuffer,
index_count: vk::uint32_t,
instance_count: vk::uint32_t,
first_index: vk::uint32_t,
vertex_offset: vk::int32_t,
first_instance: vk::uint32_t,
index_count: u32,
instance_count: u32,
first_index: u32,
vertex_offset: i32,
first_instance: u32,
) {
self.fp_v1_0().cmd_draw_indexed(
command_buffer,
@ -817,8 +818,8 @@ pub trait DeviceV1_0 {
command_buffer: vk::CommandBuffer,
buffer: vk::Buffer,
offset: vk::DeviceSize,
draw_count: vk::uint32_t,
stride: vk::uint32_t,
draw_count: u32,
stride: u32,
) {
self.fp_v1_0().cmd_draw_indexed_indirect(
command_buffer,
@ -836,7 +837,7 @@ pub trait DeviceV1_0 {
) {
self.fp_v1_0().cmd_execute_commands(
primary_command_buffer,
secondary_command_buffers.len() as vk::uint32_t,
secondary_command_buffers.len() as u32,
secondary_command_buffers.as_ptr(),
);
}
@ -846,18 +847,18 @@ pub trait DeviceV1_0 {
command_buffer: vk::CommandBuffer,
pipeline_bind_point: vk::PipelineBindPoint,
layout: vk::PipelineLayout,
first_set: vk::uint32_t,
first_set: u32,
descriptor_sets: &[vk::DescriptorSet],
dynamic_offsets: &[vk::uint32_t],
dynamic_offsets: &[u32],
) {
self.fp_v1_0().cmd_bind_descriptor_sets(
command_buffer,
pipeline_bind_point,
layout,
first_set,
descriptor_sets.len() as vk::uint32_t,
descriptor_sets.len() as u32,
descriptor_sets.as_ptr(),
dynamic_offsets.len() as vk::uint32_t,
dynamic_offsets.len() as u32,
dynamic_offsets.as_ptr(),
);
}
@ -866,8 +867,8 @@ pub trait DeviceV1_0 {
&self,
command_buffer: vk::CommandBuffer,
query_pool: vk::QueryPool,
first_query: vk::uint32_t,
query_count: vk::uint32_t,
first_query: u32,
query_count: u32,
dst_buffer: vk::Buffer,
dst_offset: vk::DeviceSize,
stride: vk::DeviceSize,
@ -890,7 +891,7 @@ pub trait DeviceV1_0 {
command_buffer: vk::CommandBuffer,
layout: vk::PipelineLayout,
stage_flags: vk::ShaderStageFlags,
offset: vk::uint32_t,
offset: u32,
constants: &[u8],
) {
self.fp_v1_0().cmd_push_constants(
@ -934,13 +935,13 @@ pub trait DeviceV1_0 {
unsafe fn cmd_set_scissor(
&self,
command_buffer: vk::CommandBuffer,
first_scissor: vk::uint32_t,
first_scissor: u32,
scissors: &[vk::Rect2D],
) {
self.fp_v1_0().cmd_set_scissor(
command_buffer,
first_scissor,
scissors.len() as vk::uint32_t,
scissors.len() as u32,
scissors.as_ptr(),
);
}
@ -953,7 +954,7 @@ pub trait DeviceV1_0 {
unsafe fn cmd_bind_vertex_buffers(
&self,
command_buffer: vk::CommandBuffer,
first_binding: vk::uint32_t,
first_binding: u32,
buffers: &[vk::Buffer],
offsets: &[vk::DeviceSize],
) {
@ -961,7 +962,7 @@ pub trait DeviceV1_0 {
self.fp_v1_0().cmd_bind_vertex_buffers(
command_buffer,
first_binding,
buffers.len() as vk::uint32_t,
buffers.len() as u32,
buffers.as_ptr(),
offsets.as_ptr(),
);
@ -974,10 +975,10 @@ pub trait DeviceV1_0 {
unsafe fn cmd_draw(
&self,
command_buffer: vk::CommandBuffer,
vertex_count: vk::uint32_t,
instance_count: vk::uint32_t,
first_vertex: vk::uint32_t,
first_instance: vk::uint32_t,
vertex_count: u32,
instance_count: u32,
first_vertex: u32,
first_instance: u32,
) {
self.fp_v1_0().cmd_draw(
command_buffer,
@ -993,8 +994,8 @@ pub trait DeviceV1_0 {
command_buffer: vk::CommandBuffer,
buffer: vk::Buffer,
offset: vk::DeviceSize,
draw_count: vk::uint32_t,
stride: vk::uint32_t,
draw_count: u32,
stride: u32,
) {
self.fp_v1_0()
.cmd_draw_indirect(command_buffer, buffer, offset, draw_count, stride);
@ -1003,9 +1004,9 @@ pub trait DeviceV1_0 {
unsafe fn cmd_dispatch(
&self,
command_buffer: vk::CommandBuffer,
group_count_x: vk::uint32_t,
group_count_y: vk::uint32_t,
group_count_z: vk::uint32_t,
group_count_x: u32,
group_count_y: u32,
group_count_z: u32,
) {
self.fp_v1_0()
.cmd_dispatch(command_buffer, group_count_x, group_count_y, group_count_z);
@ -1024,13 +1025,13 @@ pub trait DeviceV1_0 {
unsafe fn cmd_set_viewport(
&self,
command_buffer: vk::CommandBuffer,
first_viewport: vk::uint32_t,
first_viewport: u32,
viewports: &[vk::Viewport],
) {
self.fp_v1_0().cmd_set_viewport(
command_buffer,
first_viewport,
viewports.len() as vk::uint32_t,
viewports.len() as u32,
viewports.as_ptr(),
);
}
@ -1098,8 +1099,8 @@ pub trait DeviceV1_0 {
unsafe fn get_query_pool_results<T>(
&self,
query_pool: vk::QueryPool,
first_query: vk::uint32_t,
query_count: vk::uint32_t,
first_query: u32,
query_count: u32,
data: &mut [T],
flags: vk::QueryResultFlags,
) -> VkResult<()> {
@ -1201,7 +1202,7 @@ pub trait DeviceV1_0 {
let err_code = self.fp_v1_0().create_graphics_pipelines(
self.handle(),
pipeline_cache,
create_infos.len() as vk::uint32_t,
create_infos.len() as u32,
create_infos.as_ptr(),
allocation_callbacks.as_raw_ptr(),
pipelines.as_mut_ptr(),
@ -1223,7 +1224,7 @@ pub trait DeviceV1_0 {
let err_code = self.fp_v1_0().create_compute_pipelines(
self.handle(),
pipeline_cache,
create_infos.len() as vk::uint32_t,
create_infos.len() as u32,
create_infos.as_ptr(),
allocation_callbacks.as_raw_ptr(),
pipelines.as_mut_ptr(),
@ -1296,8 +1297,8 @@ pub trait DeviceV1_0 {
offset: vk::DeviceSize,
size: vk::DeviceSize,
flags: vk::MemoryMapFlags,
) -> VkResult<*mut vk::c_void> {
let mut data: *mut vk::c_void = mem::uninitialized();
) -> VkResult<*mut c_void> {
let mut data: *mut c_void = mem::uninitialized();
let err_code =
self.fp_v1_0()
.map_memory(self.handle(), memory, offset, size, flags, &mut data);
@ -1317,7 +1318,7 @@ pub trait DeviceV1_0 {
) -> VkResult<()> {
let err_code = self.fp_v1_0().invalidate_mapped_memory_ranges(
self.handle(),
ranges.len() as vk::uint32_t,
ranges.len() as u32,
ranges.as_ptr(),
);
match err_code {
@ -1329,7 +1330,7 @@ pub trait DeviceV1_0 {
unsafe fn flush_mapped_memory_ranges(&self, ranges: &[vk::MappedMemoryRange]) -> VkResult<()> {
let err_code = self.fp_v1_0().flush_mapped_memory_ranges(
self.handle(),
ranges.len() as vk::uint32_t,
ranges.len() as u32,
ranges.as_ptr(),
);
match err_code {
@ -1358,8 +1359,8 @@ pub trait DeviceV1_0 {
unsafe fn get_device_queue(
&self,
queue_family_index: vk::uint32_t,
queue_index: vk::uint32_t,
queue_family_index: u32,
queue_index: u32,
) -> vk::Queue {
let mut queue = mem::uninitialized();
self.fp_v1_0()
@ -1382,11 +1383,11 @@ pub trait DeviceV1_0 {
src_stage_mask,
dst_stage_mask,
dependency_flags,
memory_barriers.len() as vk::uint32_t,
memory_barriers.len() as u32,
memory_barriers.as_ptr(),
buffer_memory_barriers.len() as vk::uint32_t,
buffer_memory_barriers.len() as u32,
buffer_memory_barriers.as_ptr(),
image_memory_barriers.len() as vk::uint32_t,
image_memory_barriers.len() as u32,
image_memory_barriers.as_ptr(),
);
}
@ -1435,13 +1436,13 @@ pub trait DeviceV1_0 {
&self,
fences: &[vk::Fence],
wait_all: bool,
timeout: vk::uint64_t,
timeout: u64,
) -> VkResult<()> {
let err_code = self.fp_v1_0().wait_for_fences(
self.handle(),
fences.len() as vk::uint32_t,
fences.len() as u32,
fences.as_ptr(),
wait_all as vk::uint32_t,
wait_all as u32,
timeout,
);
match err_code {
@ -1474,7 +1475,7 @@ pub trait DeviceV1_0 {
) -> VkResult<()> {
let err_code = self.fp_v1_0().queue_submit(
queue,
submits.len() as vk::uint32_t,
submits.len() as u32,
submits.as_ptr(),
fence,
);
@ -1536,13 +1537,13 @@ pub trait DeviceV1_0 {
&self,
create_info: &vk::CommandBufferAllocateInfo,
) -> VkResult<Vec<vk::CommandBuffer>> {
let mut buffers = Vec::with_capacity(create_info.command_buffer_count as vk::size_t);
let mut buffers = Vec::with_capacity(create_info.command_buffer_count as usize);
let err_code = self.fp_v1_0().allocate_command_buffers(
self.handle(),
create_info,
buffers.as_mut_ptr(),
);
buffers.set_len(create_info.command_buffer_count as vk::size_t);
buffers.set_len(create_info.command_buffer_count as usize);
match err_code {
vk::Result::SUCCESS => Ok(buffers),
_ => Err(err_code),

View file

@ -4,6 +4,7 @@ use shared_library::dynamic_library::DynamicLibrary;
use std::error::Error;
use std::fmt;
use std::mem;
use std::os::raw::c_char;
use std::path::Path;
use std::ptr;
use version::{EntryLoader, FunctionPointers, InstanceLoader, V1_0, V1_1};
@ -134,7 +135,7 @@ pub trait EntryV1_0 {
fn get_instance_proc_addr(
&self,
instance: vk::Instance,
p_name: *const vk::c_char,
p_name: *const c_char,
) -> vk::PFN_vkVoidFunction {
unsafe { self.static_fn().get_instance_proc_addr(instance, p_name) }
}
@ -191,7 +192,7 @@ impl<V: FunctionPointers> Entry<V> {
pub trait EntryV1_1: EntryV1_0 {
fn fp_v1_1(&self) -> &vk::EntryFnV1_1;
fn enumerate_instance_version(&self) -> VkResult<vk::uint32_t> {
fn enumerate_instance_version(&self) -> VkResult<u32> {
unsafe {
let mut api_version = 0;
let err_code = self.fp_v1_1().enumerate_instance_version(&mut api_version);

View file

@ -34,7 +34,7 @@ impl Surface {
pub fn get_physical_device_surface_support_khr(
&self,
physical_device: vk::PhysicalDevice,
queue_index: vk::uint32_t,
queue_index: u32,
surface: vk::SurfaceKHR,
) -> bool {
unsafe {

View file

@ -46,10 +46,10 @@ impl Swapchain {
pub unsafe fn acquire_next_image_khr(
&self,
swapchain: vk::SwapchainKHR,
timeout: vk::uint64_t,
timeout: u64,
semaphore: vk::Semaphore,
fence: vk::Fence,
) -> VkResult<vk::uint32_t> {
) -> VkResult<u32> {
let mut index = mem::uninitialized();
let err_code = self.swapchain_fn.acquire_next_image_khr(
self.handle,
@ -108,14 +108,14 @@ impl Swapchain {
ptr::null_mut(),
);
let mut v = Vec::with_capacity(count as vk::size_t);
let mut v = Vec::with_capacity(count as usize);
let err_code = self.swapchain_fn.get_swapchain_images_khr(
self.handle,
swapchain,
&mut count,
v.as_mut_ptr(),
);
v.set_len(count as vk::size_t);
v.set_len(count as usize);
match err_code {
vk::Result::SUCCESS => Ok(v),
_ => Err(err_code),

View file

@ -4,6 +4,7 @@ use prelude::*;
use std::error::Error;
use std::fmt;
use std::mem;
use std::os::raw::c_char;
use std::ptr;
use version::DeviceLoader;
use version::{FunctionPointers, V1_0, V1_1};
@ -293,7 +294,7 @@ pub trait InstanceV1_0 {
fn get_device_proc_addr(
&self,
device: vk::Device,
p_name: *const vk::c_char,
p_name: *const c_char,
) -> vk::PFN_vkVoidFunction {
unsafe { self.fp_v1_0().get_device_proc_addr(device, p_name) }
}

View file

@ -1,6 +1,5 @@
#[macro_use]
extern crate lazy_static;
extern crate libc;
extern crate shared_library;
pub use device::Device;
pub use entry::{Entry, InstanceError, LoadingError};

View file

@ -1,6 +1,7 @@
use std::iter::Iterator;
use std::marker::PhantomData;
use std::mem::size_of;
use std::os::raw::c_void;
use vk;
/// `Align` handles dynamic alignment. The is useful for dynamic uniform buffers where
@ -12,7 +13,7 @@ use vk;
/// an additional allocation and with the correct alignment.
#[derive(Debug, Clone)]
pub struct Align<T> {
ptr: *mut vk::c_void,
ptr: *mut c_void,
elem_size: vk::DeviceSize,
size: vk::DeviceSize,
_m: PhantomData<T>,
@ -46,7 +47,7 @@ fn calc_padding(adr: vk::DeviceSize, align: vk::DeviceSize) -> vk::DeviceSize {
impl<T> Align<T> {
pub unsafe fn new(
ptr: *mut vk::c_void,
ptr: *mut c_void,
alignment: vk::DeviceSize,
size: vk::DeviceSize,
) -> Self {

File diff suppressed because it is too large Load diff

View file

@ -8,6 +8,7 @@ use std::ffi::CString;
use std::fs::File;
use std::io::Read;
use std::mem::{self, align_of};
use std::os::raw::c_void;
use std::path::Path;
use std::ptr;
@ -152,7 +153,7 @@ fn main() {
.device
.allocate_memory(&index_allocate_info, None)
.unwrap();
let index_ptr: *mut vk::c_void = base
let index_ptr: *mut c_void = base
.device
.map_memory(
index_buffer_memory,

View file

@ -18,6 +18,7 @@ use std::cell::RefCell;
use std::default::Default;
use std::ffi::{CStr, CString};
use std::ops::Drop;
use std::os::raw::{c_char, c_void};
use std::ptr;
// Simple offset_of macro akin to C++ offsetof
@ -121,13 +122,13 @@ unsafe fn create_surface<E: EntryV1_0, I: InstanceV1_0>(
use winit::os::windows::WindowExt;
let hwnd = window.get_hwnd() as HWND;
let hinstance = GetWindow(hwnd, 0) as *const vk::c_void;
let hinstance = GetWindow(hwnd, 0) as *const c_void;
let win32_create_info = vk::Win32SurfaceCreateInfoKHR {
s_type: vk::StructureType::WIN32_SURFACE_CREATE_INFO_KHR,
p_next: ptr::null(),
flags: Default::default(),
hinstance: hinstance,
hwnd: hwnd as *const vk::c_void,
hwnd: hwnd as *const c_void,
};
let win32_surface_loader =
Win32Surface::new(entry, instance).expect("Unable to load win32 surface");
@ -155,12 +156,12 @@ fn extension_names() -> Vec<*const i8> {
unsafe extern "system" fn vulkan_debug_callback(
_: vk::DebugReportFlagsEXT,
_: vk::DebugReportObjectTypeEXT,
_: vk::uint64_t,
_: vk::size_t,
_: vk::int32_t,
_: *const vk::c_char,
p_message: *const vk::c_char,
_: *mut vk::c_void,
_: u64,
_: usize,
_: i32,
_: *const c_char,
p_message: *const c_char,
_: *mut c_void,
) -> u32 {
println!("{:?}", CStr::from_ptr(p_message));
1

View file

@ -123,7 +123,7 @@ pub fn handle_nondispatchable_macro() -> Tokens {
($name: ident, $ty: ident) => {
#[repr(transparent)]
#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Copy, Hash, Default)]
pub struct $name(uint64_t);
pub struct $name(u64);
impl Handle for $name {
const TYPE: ObjectType = ObjectType::$ty;
@ -163,21 +163,21 @@ pub fn vk_version_macros() -> Tokens {
#[macro_export]
macro_rules! vk_version_major {
($major:expr) => {
($major as uint32_t) >> 22
($major as u32) >> 22
};
}
#[macro_export]
macro_rules! vk_version_minor {
($minor:expr) => {
(($minor as uint32_t) >> 12) & 0x3ff
(($minor as u32) >> 12) & 0x3ff
};
}
#[macro_export]
macro_rules! vk_version_patch {
($minor:expr) => {
($minor as uint32_t) & 0xfff
($minor as u32) & 0xfff
};
}
}
@ -349,8 +349,7 @@ pub fn platform_specific_types() -> Tokens {
pub type wl_surface = *const c_void;
pub type HANDLE = *mut c_void;
pub type DWORD = c_ulong;
pub type WCHAR = wchar_t;
pub type LPCWSTR = *const WCHAR;
pub type LPCWSTR = *const u16;
// FIXME: Platform specific types that should come from a library
// typedefs are only here so that the code compiles for now
@ -595,6 +594,15 @@ impl ToTokens for vkxml::ReferenceType {
}
fn name_to_tokens(type_name: &str) -> Ident {
let new_name = match type_name {
"uint8_t" => "u8",
"uint16_t" => "u16",
"uint32_t" => "u32",
"uint64_t" => "u64",
"int8_t" => "i8",
"int16_t" => "i16",
"int32_t" => "i32",
"int64_t" => "i64",
"size_t" => "usize",
"int" => "c_int",
"void" => "c_void",
"char" => "c_char",
@ -1678,8 +1686,7 @@ pub fn write_source_code(path: &Path) {
let platform_specific_types = platform_specific_types();
let source_code = quote!{
use std::fmt;
#[doc(hidden)]
pub use libc::*;
use std::os::raw::*;
#[doc(hidden)]
pub use self::extensions::*;
#[doc(hidden)]