Dosbox

Software potřebné k práci s elektronikou

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#301 Příspěvek od asdf »

Ale vypadá to dobře. Dneska už to nechám být.
Uživatelský avatar
Mahoney
Příspěvky: 759
Registrován: 26 říj 2019, 00:00

#302 Příspěvek 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.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#303 Příspěvek od asdf »

Ono mi tam vypadlo sloveso. Lesana to provozuje na 32-bitovém systému.
Uživatelský avatar
Valdano
Příspěvky: 3118
Registrován: 01 led 2023, 00:00
Bydliště: Česká Lípa

#304 Příspěvek 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í.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#305 Příspěvek 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.
Uživatelský avatar
lesana87
Příspěvky: 4397
Registrován: 20 zář 2014, 00:00

#306 Příspěvek od lesana87 »

Předpokládám, že tam neměla být 2x zpráva 11, ale mělo to končit 14.
Přílohy
trace.zip
(7.88 KiB) Staženo 9 x
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#307 Příspěvek od asdf »

Jo jo. To jsem zblbnul. Tak to spadne v tom get_vulkan_gpus.
Uživatelský avatar
lesana87
Příspěvky: 4397
Registrován: 20 zář 2014, 00:00

#308 Příspěvek od lesana87 »

Co to zkusit zkonfigurovat a zkompilovat --without-vulkan ?
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#309 Příspěvek 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.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#310 Příspěvek 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.
Uživatelský avatar
lesana87
Příspěvky: 4397
Registrován: 20 zář 2014, 00:00

#311 Příspěvek od lesana87 »

Běží i notepad jde spustit. :)
Takže problém je s detekcí vulkanu na téhle grafice?
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#312 Příspěvek 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?
Uživatelský avatar
lesana87
Příspěvky: 4397
Registrován: 20 zář 2014, 00:00

#313 Příspěvek 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)
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#314 Příspěvek 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;
}
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#315 Příspěvek 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.
Odpovědět

Zpět na „Software“