Skip to content
Snippets Groups Projects
Select Git revision
  • 4d5636faafa2a7b961a3c4416306ad6590cb6405
  • main default protected
2 results

Caddyfile

Blame
  • device.cpp 9.81 KiB
    // file      : liblava/base/device.cpp
    // copyright : Copyright (c) 2018-present, Lava Block OÜ and contributors
    // license   : MIT; see accompanying LICENSE file
    
    #include <liblava/base/device.hpp>
    #include <liblava/base/instance.hpp>
    #include <liblava/base/physical_device.hpp>
    
    namespace lava {
    
        void device::create_param::set_all_queues() {
            lava::set_all_queues(queue_family_infos, physical_device->get_queue_family_properties());
        }
    
        bool device::create_param::add_queues(VkQueueFlags flags, ui32 count, r32 priority) {
            return lava::add_queues(queue_family_infos, physical_device->get_queue_family_properties(), flags, count, priority);
        }
    
        bool device::create_param::add_dedicated_queues(r32 priority) {
            return lava::add_dedicated_queues(queue_family_infos, physical_device->get_queue_family_properties(), priority);
        }
    
        verify_queues_result device::create_param::verify_queues() const {
            return lava::verify_queues(queue_family_infos, physical_device->get_queue_family_properties());
        }
    
        void log_verify_queues_failed(verify_queues_result result) {
            switch (result) {
            case verify_queues_result::empty_list: {
                log()->error("create device - verify queues - param with empty list");
                break;
            }
            case verify_queues_result::no_properties: {
                log()->error("create device - verify queues - no device family properties");
                break;
            }
            case verify_queues_result::duplicate_family_index: {
                log()->error("create device - verify queues - duplicate family index");
                break;
            }
            case verify_queues_result::no_family_index: {
                log()->error("create device - verify queues - family index is not available");
                break;
            }
            case verify_queues_result::no_queues: {
                log()->error("create device - verify queues - undefined queues in family");
                break;
            }
            case verify_queues_result::too_many_queues: {
                log()->error("create device - verify queues - number of queues is incorrect");
                break;
            }
            case verify_queues_result::no_compatible_flags: {
                log()->error("create device - verify queues - no compatible flags in queue");
                break;
            }
            default:
                log()->error("create device - verify queues");
            }
        }
    
        bool device::create(create_param::ref param) {
            physical_device = param.physical_device;
            if (!physical_device)
                return false;
    
            auto verify_result = param.verify_queues();
            if (verify_result != verify_queues_result::ok) {
                log_verify_queues_failed(verify_result);
                return false;