Theme

alex/beta-minecraft-rust

Minecraft Beta 1.7.3 Rewrite

BRANCH main
main
SNAPSHOT Draw terrain GPU-driven from packed per-section buffers with GPU occlusion culling, add a render distance slider (2-128) with a quad/disk shape, cut chunk bookkeeping at high render distances, and fix a light underflow at y=0
DOWNLOAD
Download file

root / crates / volcanic-mem / src / device.rs

use crate::error::{Error, Result};
use volcanic::loader::CmdsDevice;
use volcanic::*;

macro_rules! commands {
    ($($field:ident: $pfn:ident = $name:ident,)*) => {
        /// The device commands the allocator calls, resolved once so hot paths skip `Option` checks.
        #[derive(Clone, Copy)]
        pub(crate) struct DeviceFns {
            $(pub $field: $pfn,)*
        }

        impl DeviceFns {
            pub fn load(cmds: &CmdsDevice) -> Result<Self> {
                Ok(Self {
                    $($field: cmds.$name.ok_or(Error::MissingCommand(stringify!($name)))?,)*
                })
            }
        }
    };
}

commands! {
    allocate_memory: PFN_vkAllocateMemory = vkAllocateMemory,
    free_memory: PFN_vkFreeMemory = vkFreeMemory,
    map_memory: PFN_vkMapMemory = vkMapMemory,
    flush_mapped_memory_ranges: PFN_vkFlushMappedMemoryRanges = vkFlushMappedMemoryRanges,
    invalidate_mapped_memory_ranges: PFN_vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRanges,
    create_buffer: PFN_vkCreateBuffer = vkCreateBuffer,
    destroy_buffer: PFN_vkDestroyBuffer = vkDestroyBuffer,
    bind_buffer_memory: PFN_vkBindBufferMemory = vkBindBufferMemory,
    get_buffer_memory_requirements2: PFN_vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2,
    get_buffer_device_address: PFN_vkGetBufferDeviceAddress = vkGetBufferDeviceAddress,
    create_image: PFN_vkCreateImage = vkCreateImage,
    destroy_image: PFN_vkDestroyImage = vkDestroyImage,
    bind_image_memory: PFN_vkBindImageMemory = vkBindImageMemory,
    get_image_memory_requirements2: PFN_vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2,
}