https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117514

--- Comment #5 from Jordan <8e3g6jay6 at mozmail dot com> ---
Here is the functioning code in case this helps, I was basically transferring
in a C
char ** but I made the mistake of treating it as a char *. Hopefully this helps
debug this strange issue.

  function check_device_extension_support(physical_device) result(has_support)
    implicit none

    !VkPhysicalDevice
    integer(c_int64_t), intent(in), value :: physical_device
    logical(c_bool) :: has_support
    integer(c_int32_t) :: extension_count
    ! VkExtensionProperties
    type(vec) :: available_extensions
    ! character(:)
    type(vec) :: required_device_extensions
    type(vk_extension_properties), pointer :: extension_properties
    character(len = :, kind = c_char), pointer :: required_extension
    integer(c_int32_t) :: i
    type(c_ptr), pointer :: raw_c_ptr_ptr

    type(c_ptr) :: blah


    if (vk_enumerate_device_extension_properties(physical_device, c_null_ptr,
extension_count, c_null_ptr) /= VK_SUCCESS) then
      error stop "[Vulkan] Error: Failed to enumerate device extension
properties."
    end if

    ! call create_required_device_extensions(required_device_extensions)

    required_device_extensions = new_vec(sizeof(c_null_ptr), 0_8)

    allocate(character(len = 32, kind = c_char) :: required_extension)
    required_extension = "VK_KHR_SWAPCHAIN_EXTENSION_NAME"//achar(0)
    blah = c_loc(required_extension)
    call required_device_extensions%push_back(blah)
    call c_f_pointer(required_device_extensions%get(1_8), raw_c_ptr_ptr)
    required_extension => string_from_c(raw_c_ptr_ptr)
    print*,required_extension

    ! print*,extension_count

    ! allocate(extension_properties)
    ! available_extensions = new_vec(sizeof(extension_properties), 0_8)
    ! call available_extensions%resize(int(extension_count,c_int64_t),
extension_properties)
    ! deallocate(extension_properties)

    ! do i = 1,int(available_extensions%size())

    ! end do

  end function check_device_extension_support

Reply via email to