Stránka 21 z 27

Napsal: 26 led 2026, 21:32
od asdf
Ale vypadá to dobře. Dneska už to nechám být.

Napsal: 27 led 2026, 15:19
od Mahoney
asdf píše:Tohle na 32-bitovém systému.
Právěže ne, když jsem chtěl provozovat 32bit appky na 64bit systému, musel jsem nejprve nainstalovat wine32, pak wine (64bit) a pak všechno fungovalo... Jenže já neprovozuju systémy založené na Debianu, tam byl vždycky dříve či později nějaký problém se závislostmi, chybějícími balícky apod aj. , nakonec jsem se vždy rád vrátil k osvědčenému.

Mimochodem, mohli byste to nahlásit do Wine bugzilly.

Napsal: 27 led 2026, 15:48
od asdf
Ono mi tam vypadlo sloveso. Lesana to provozuje na 32-bitovém systému.

Napsal: 27 led 2026, 17:03
od Valdano
Přesně tak. Lesana má 32-bitovou instalaci Linuxu a v něm 32-bitové Wine. Takže záležitosti okolo 64-bitové verze se jí vůbec netýkají.

Napsal: 27 led 2026, 17:32
od asdf
Tak prosil bych prospikovat v wine-10.0/dlls/win32u/sysparams.c tu funkci lock_display_devices:

Kód: Vybrat vše

static BOOL lock_display_devices( BOOL force )
{
    static const WCHAR wine_service_station_name[] =
        {'_','_','w','i','n','e','s','e','r','v','i','c','e','_','w','i','n','s','t','a','t','i','o','n',0};
    struct device_manager_ctx ctx = {.vulkan_gpus = LIST_INIT(ctx.vulkan_gpus)};
    UINT64 serial;
    UINT status;
    WCHAR name[MAX_PATH];
    BOOL ret = TRUE;

    init_display_driver(); /* make sure to load the driver before anything else */

    pthread_mutex_lock( &display_lock );

    serial = get_monitor_update_serial();
    if (!force && monitor_update_serial >= serial) return TRUE;

    /* services do not have any adapters, only a virtual monitor */
MESSAGE("pokus NtUserGetObjectInformation sysparams\n");
    if (NtUserGetObjectInformation( NtUserGetProcessWindowStation(), UOI_NAME, name, sizeof(name), NULL )
        && !wcscmp( name, wine_service_station_name ))
    {
MESSAGE("pokus sysparams lock_display_devices 1\n");
        clear_display_devices();
MESSAGE("pokus sysparams lock_display_devices 2\n");
        list_add_tail( &monitors, &virtual_monitor.entry );
MESSAGE("pokus sysparams lock_display_devices 3\n");
        set_winstation_monitors( TRUE );
MESSAGE("pokus sysparams lock_display_devices 4\n");
        return TRUE;
    }

MESSAGE("pokus sysparams lock_display_devices 5\n");
    if (!force && !update_display_cache_from_registry( serial )) force = TRUE;
MESSAGE("pokus sysparams lock_display_devices 6\n");
    if (force)
    {
MESSAGE("pokus sysparams lock_display_devices 7\n");
        if (!get_vulkan_gpus( &ctx.vulkan_gpus )) WARN( "Failed to find any vulkan GPU\n" );
MESSAGE("pokus sysparams lock_display_devices 8\n");
        if (!(status = update_display_devices( &ctx ))) commit_display_devices( &ctx );
        else WARN( "Failed to update display devices, status %#x\n", status );
MESSAGE("pokus sysparams lock_display_devices 9\n");
        release_display_manager_ctx( &ctx );

MESSAGE("pokus sysparams lock_display_devices 10\n");
        ret = update_display_cache_from_registry( serial );
    }

MESSAGE("pokus sysparams lock_display_devices 11\n");
    if (!ret)
    {
MESSAGE("pokus sysparams lock_display_devices 11\n");
        ERR( "Failed to read display config.\n" );
MESSAGE("pokus sysparams lock_display_devices 12\n");
        pthread_mutex_unlock( &display_lock );
    }
MESSAGE("pokus sysparams lock_display_devices 13\n");
    return ret;
}
Tam nekde to asi spadne.

Napsal: 27 led 2026, 19:53
od lesana87
Předpokládám, že tam neměla být 2x zpráva 11, ale mělo to končit 14.

Napsal: 27 led 2026, 20:00
od asdf
Jo jo. To jsem zblbnul. Tak to spadne v tom get_vulkan_gpus.

Napsal: 27 led 2026, 20:15
od lesana87
Co to zkusit zkonfigurovat a zkompilovat --without-vulkan ?

Napsal: 27 led 2026, 20:17
od asdf
Tak bych zkusil zmenit wine-10.0/dlls/win32u/d3dkmt.c:

Kód: Vybrat vše

static BOOL d3dkmt_use_vulkan(void)
{
    static pthread_once_t once = PTHREAD_ONCE_INIT;
/* pokus */ return 0;
    pthread_once( &once, d3dkmt_init_vulkan );
    return !!d3dkmt_vk_instance;
}
Pak prosim dej make, smaz ~/.wine a spustit treba ./wine cmd 2>/dev/null Jestli pobezi.

Napsal: 27 led 2026, 20:20
od asdf
Jo, to without vulkan bude asi nejlepší. To jsem ani nevěděl, že tam něco takového jde. Ale teď budeš mít možná rychlejší tu změnu d3dkmt.c.

Napsal: 27 led 2026, 20:24
od lesana87
Běží i notepad jde spustit. :)
Takže problém je s detekcí vulkanu na téhle grafice?

Napsal: 27 led 2026, 20:30
od asdf
Super. :) No, asi jo, nějaký problém s vulkánem na té grafice, ale jaký přesně, to bysme museli ještě chvilku bádat. Chce se ti bádat?

Napsal: 27 led 2026, 20:33
od lesana87
Tak chvilku ještě jo.

Edit: Zkusila jsem vulkaninfo a:

Kód: Vybrat vše

$ vulkaninfo
Výjimka v pohyblivé řádové čárce (SIGFPE)

Napsal: 27 led 2026, 20:57
od asdf
Tak bych zkusil prospikovat v wine-10.0/dlls/win32u/d3dkmt.c tu funkci get_vulkan_gpus:

Kód: Vybrat vše

BOOL get_vulkan_gpus( struct list *gpus )
{
    VkPhysicalDevice *devices;
    UINT i, j, count;

MESSAGE("pokus win3wu d3dkmt 1\n");
    if (!d3dkmt_use_vulkan()) return FALSE;
MESSAGE("pokus win3wu d3dkmt 2\n");
    if (!(count = get_vulkan_physical_devices( &devices ))) return FALSE;
MESSAGE("pokus win3wu d3dkmt 3\n");

    for (i = 0; i < count; ++i)
    {
        VkPhysicalDeviceIDProperties id = {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES};
        VkPhysicalDeviceProperties2 properties2 = {.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, .pNext = &id};
        VkPhysicalDeviceMemoryProperties mem_properties;
        struct vulkan_gpu *gpu;

MESSAGE("pokus win3wu d3dkmt 4\n");
        if (!(gpu = calloc( 1, sizeof(*gpu) ))) break;
MESSAGE("pokus win3wu d3dkmt 5\n");
        pvkGetPhysicalDeviceProperties2KHR( devices[i], &properties2 );
MESSAGE("pokus win3wu d3dkmt 6\n");
        memcpy( &gpu->uuid, id.deviceUUID, sizeof(gpu->uuid) );
        gpu->name = strdup( properties2.properties.deviceName );
        gpu->pci_id.vendor = properties2.properties.vendorID;
        gpu->pci_id.device = properties2.properties.deviceID;

MESSAGE("pokus win3wu d3dkmt 7\n");
        pvkGetPhysicalDeviceMemoryProperties( devices[i], &mem_properties );
MESSAGE("pokus win3wu d3dkmt 8\n");
        for (j = 0; j < mem_properties.memoryHeapCount; j++)
        {
MESSAGE("pokus win3wu d3dkmt 9\n");
            if (mem_properties.memoryHeaps[j].flags & VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)
                gpu->memory += mem_properties.memoryHeaps[j].size;
        }
MESSAGE("pokus win3wu d3dkmt 10\n");

        list_add_tail( gpus, &gpu->entry );
MESSAGE("pokus win3wu d3dkmt 11\n");
    }

MESSAGE("pokus win3wu d3dkmt 12\n");
    free( devices );
MESSAGE("pokus win3wu d3dkmt 13\n");
    return TRUE;
}

Napsal: 27 led 2026, 20:59
od asdf
lesana87 píše:Zkusila jsem vulkaninfo a:

Kód: Vybrat vše

$ vulkaninfo
Výjimka v pohyblivé řádové čárce (SIGFPE)
Hmm, to s tím asi nehnem.