Gcenx / macOS_Wine_builds

Official Winehq macOS Packages
501 stars 23 forks source link

Wine-6.0 Code Freeze and Release Candidates #14

Closed Gcenx closed 3 years ago

Gcenx commented 3 years ago

During this time I won't be providing packages as these won't be useful for end-users.

oscarbg commented 3 years ago

curious as to why you don't expect 6.0 rc Mac releases to be useful? other wine custom builds (for Linux) like wine-tkg continue providing new builds: https://github.com/Frogging-Family/wine-tkg-git/releases/tag/6.0rc1.r0.gd7b71f0b

Gcenx commented 3 years ago

I'd reached out to one of the WineHQ contributors and they suggested skipping the release candidate packages as when a bug is found and reported the first thing they'll be asked to do is run a regression test. So while I "could" provide pre-built packages it wouldn't make much sense.

Third-party projects there lightly doing what I'm doing and compiling each release to ensure there patches still apply, I will be keeping macports-wine in sync with each release candidate but won't be providing anything prebuilt.

Instead if no major regressions are found during this cycle (by me) I plan on getting wines README updated, overhaul WineHQ MacOS/Building since that's outdated, my Base Model mid 2014 13in Macbook Pro can only handle so much punishment.

If/when I can purchase a base model M1 Mac Mini that will become a buildbot for Winehq packages/Engines see Initial Apple Silicon support (information)

oscarbg commented 3 years ago

well wine 6.0 is released! seems finally time for a 6.0 Mac build? also seeing: https://www.winehq.org/announce/6.0 seems a Vulkan backend is added to WineD3D as an option to DXVK.. please make sure build is provided with this support to test if MoltenVK supports this new WineD3D Vulkan backend on MacOS! thanks..

Gcenx commented 3 years ago

@oscarbg I was hoping they’d wait until Friday like usual.

I don’t see the Vulkan WineD3D backend being usable on macOS as MoltenVK is still missing geometry sharer and transform feedback support. (CodeWeavers DXVK for macOS has its own geometry shader code)\ The Vulkan WineD3D backend has been there for a while but it’s mostly still useless on Linux.

For these packages I’ll be providing stock libMoltenVK. Just swap that to whatever version is desired, as I’d rather avoid something crashing when trying to use faked Vulkan extensions.

Gcenx commented 3 years ago

Wine-6.0 and Wine-Staging-6.0 are built they’ll just need to be packaged, I’ll lightly do this sometime tomorrow.

oscarbg commented 3 years ago

@Gcenx

I first want to reiterate thanks as always for your effort in providing timely updated Wine builds.. will test Wine 6.0 builds as soon as released..

second AFAIU Codeweavers DXVK geometry shader is just a "minimal hack" consisting of reporting as being supported and doing nothing more.. please see this (first is CodeWeavers DXVK second is same version from Vulkan SDK): http://vulkan.gpuinfo.org/compare.php?compare=compare&id%5B10245%5D=on&id%5B10079%5D=on&id%5B9646%5D=on&id%5B9630%5D=on#features http://vulkan.gpuinfo.org/compare.php?compare=compare&id%5B10245%5D=on&id%5B10079%5D=on&id%5B9646%5D=on&id%5B9630%5D=on#extensions

in other words DX11 apps using geometry shader shouldn't work at all.. transform feedback I thinks is still not being reported, far less, being supported.. anyway as said shipped CodeWeavers DXVK doesn't do more than toggling some supported features to make DXVK happy with MoltenVK.. I'm just saying these because theoretically using this same CodeWeavers DXVK "new" Wine native WineD3D Vulkan backend could/should work also similarly and I'm willing to try..

really I have to admit that even knowing Vulkan WineD3D backend has been there judging from commits didn't know two key things: was already mature enough to run DX11 apps: for ex. apps using compute like ComputeMark work and similarly tesselation apps.. didn't know how to enable (really didn't explore enough as thought not mature enough as previously said).. now I know is simply toggling a registry variable..

third: no problem providing stock libMoltenVK I replace with my own as you say..

fourth: just one thing I forgot to say is WineD3D Vulkan backend needs libvkd3d-shader compiled from https://source.winehq.org/git/vkd3d.git at least I tested on Linux and it works.. on Linux it dlopens libvkd3d-shader.so.1 don't know if Wine code is ready for MacOS support (i.e. searching for libvkd3d-shader.dylib) and also don't know, if when you build Wine for MacOS, WineD3D Vulkan being enabled or not depends on configure step finding (i.e. being present on build system) libvkd3d-shader.dylib or not..

just my thoughts, hope useful.. thanks..

Gcenx commented 3 years ago

@oscarbg the custom MoltenVK fakes extensions, however the custom DXVK actually has code to avoid needing geometry shaders you can see it mentioned here https://github.com/cdavis5e/dxvk/commit/982798a6a8333ca3514658d950fb65cd1866313e

I haven't built vkd3d for macOS recently but I could do this, wine can't dlopen libvkd3d-shader unless available at configure & compile time.

The wine-stable & wine-staging packages are not available.

oscarbg commented 3 years ago

@Gcenx will check your 6.0 builds.. thanks for your comment..

*so seems I misunderstood DXVK hack to be similar to MoltenVK.. and I was wrong about custom DXVK only faking geo support.. thanks for correcting my wrong understanding and providing the link to the patch.. good to know!

*no pressure but would be nice if you could check sometime in the future building VKD3D on Mac (should be easy enough if I remember correctly and nothing major has changed) and then shipping a Wine build with libvkd3d-shader.dylib included and that has WineD3D Vulkan support enabled.. maybe will not work with current default MoltenVK but as said maybe similar faking tricks can be done to MoltenVK to support WineD3D Vulkan.. maybe even exposing fake geometry shader is enough..

Gcenx commented 3 years ago

@oscarbg I'm currently trying to figure out a strange annoyance with gmp +universal as the 64Bit slice ends up being broken, so needed to use an older combination of gmp & gnutls to avoid that.

I haven’t built VKD3D recently but I’ll look into creating a Portfile for this so it can easily be added into my environment and the builder will just handle it without any major changes. This will of course be 64Bit only.

oscarbg commented 3 years ago

@Gcenx thanks for sharing your work plans..

just a quick update on WineD3D Vulkan..

for testing it I added to regedit (wine64 regedit):HKEY_CURRENT_USER\Software\Wine\Direct3D\"renderer" (REG_SZ) registry key with "vulkan" value..

can confirm your 6.0 build having Vulkan support also has the WineD3D Vulkan backend enabled as I see: 0110:err:winediag:wined3d_dll_init Using the Vulkan renderer.

I also see MoltenVK Vulkan initilization after as I have a debug build:

[mvk-info] MoltenVK version 1.1.0. Vulkan version 1.1.154.
    The following 63 Vulkan extensions are supported:
        VK_KHR_16bit_storage v1
        VK_KHR_8bit_storage v1
        VK_KHR_bind_memory2 v1
        VK_KHR_create_renderpass2 v1
        VK_KHR_dedicated_allocation v3
        VK_KHR_depth_stencil_resolve v1
        VK_KHR_descriptor_update_template v1
        VK_KHR_device_group v4
        VK_KHR_device_group_creation v1
        VK_KHR_driver_properties v1
        VK_KHR_external_fence v1
        VK_KHR_external_fence_capabilities v1
        VK_KHR_external_memory v1
        VK_KHR_external_memory_capabilities v1
        VK_KHR_external_semaphore v1
        VK_KHR_external_semaphore_capabilities v1
        VK_KHR_get_memory_requirements2 v1
        VK_KHR_get_physical_device_properties2 v2
        VK_KHR_get_surface_capabilities2 v1
        VK_KHR_image_format_list v1
        VK_KHR_maintenance1 v2
        VK_KHR_maintenance2 v1
        VK_KHR_maintenance3 v1
        VK_KHR_multiview v1
        VK_KHR_portability_subset v1
        VK_KHR_push_descriptor v2
        VK_KHR_relaxed_block_layout v1
        VK_KHR_sampler_mirror_clamp_to_edge v3
        VK_KHR_sampler_ycbcr_conversion v14
        VK_KHR_shader_draw_parameters v1
        VK_KHR_shader_float16_int8 v1
        VK_KHR_shader_subgroup_extended_types v1
        VK_KHR_storage_buffer_storage_class v1
        VK_KHR_surface v25
        VK_KHR_swapchain v70
        VK_KHR_swapchain_mutable_format v1
        VK_KHR_uniform_buffer_standard_layout v1
        VK_KHR_variable_pointers v1
        VK_EXT_debug_marker v4
        VK_EXT_debug_report v9
        VK_EXT_debug_utils v2
        VK_EXT_fragment_shader_interlock v1
        VK_EXT_hdr_metadata v2
        VK_EXT_host_query_reset v1
        VK_EXT_image_robustness v1
        VK_EXT_inline_uniform_block v1
        VK_EXT_memory_budget v1
        VK_EXT_metal_surface v1
        VK_EXT_robustness2 v1
        VK_EXT_scalar_block_layout v1
        VK_EXT_shader_stencil_export v1
        VK_EXT_shader_viewport_index_layer v1
        VK_EXT_swapchain_colorspace v4
        VK_EXT_texel_buffer_alignment v1
        VK_EXT_vertex_attribute_divisor v3
        VK_MVK_macos_surface v3
        VK_MVK_moltenvk v28
        VK_AMD_gpu_shader_half_float v2
        VK_AMD_negative_viewport_height v1
        VK_AMD_shader_trinary_minmax v1
        VK_INTEL_shader_integer_functions2 v1
        VK_GOOGLE_display_timing v1
        VK_NV_glsl_shader v1
[mvk-info] GPU device:
        model: AMD Radeon RX Vega 64
        type: Discrete
        vendorID: 0x1002
        deviceID: 0x687f
        pipelineCacheUUID: 00002774-0300-07D2-64A1-9A20C5DDE3E6
    supports the following Metal Versions, GPU's and Feature Sets:
        Metal Shading Language 2.2
        GPU Family Mac 2
        GPU Family Mac 1
        GPU Family Common 3
        GPU Family Common 2
        GPU Family Common 1
        macOS GPU Family 2 v1
        macOS GPU Family 1 v4
        macOS GPU Family 1 v3
        macOS GPU Family 1 v2
        macOS GPU Family 1 v1
        macOS Read-Write Texture Tier 2
[mvk-info] Created VkInstance with the following 2 Vulkan extensions enabled:
        VK_KHR_surface v25
        VK_EXT_metal_surface v1

but seems libvkd3d-shader library must be found at configure/build time or any D3D11 sample failt with:

0158:err:winediag:wined3d_spirv_shader_backend_init_vk Wine was built without libvkd3d-shader support.

may open a separate issue asking for a libvkd3d-shader and WineD3D Vulkan enabled build? thanks

oscarbg commented 3 years ago

@Gcenx I just build VKD3D for Mac (https://source.winehq.org/git/vkd3d.git) and got a generated libvkd3d-shader.a and dylib.. very easy.. minor comments:

EDIT I attach the libvkd3dshader (otool -L shows no extra deps) files if lazy libvkd3dshader.zip

Gcenx commented 3 years ago

@oscarbg Currently been a little preoccupied with the new CX20.0.4-rc2, there new hack doesn’t work on the M1 Mac Mini and they didn’t resolve the controller issues for M1 systems sigh....

VKD3D also needs;

I should have this done and added into my environment & builder ready for wine-6.1 so the that package will include this.

Gcenx commented 3 years ago

@oscarbg I'd gotten the following done portfiles updated/created

Remaining;

oscarbg commented 3 years ago

nice work @Gcenx ! waiting to test soon..

Gcenx commented 3 years ago

@oscarbg I've uploaded Wine-6.1 & Wine-Staging-6.1 packages these were built with VKD3D v1.2 and also ships the needed dylibs.

Edit; Correction VKD3D v1.2

oscarbg commented 3 years ago

@Gcenx thanks! did a quick test and shared a report of my findings: https://github.com/KhronosGroup/MoltenVK/issues/1233 A simple D3D11 compute shader apps works out of the box so no modifications needed for running it like currently required under DXVK.. but for a simple triangle app found some compatibilty issue with MoltenVK.. seems fixable..

oscarbg commented 3 years ago

@Gcenx seems 6.7 may finally fix a issue I reported: https://github.com/KhronosGroup/MoltenVK/issues/1233 from: https://www.winehq.org/announce/6.7 "wined3d: Handle typeless resolve in the Vulkan blitter." "wined3d: Handle typeless resolve in the FBO blitter." no pressure, but hope you can post a 6.7 build soon..

Gcenx commented 3 years ago

@oscarbg I've uploaded wine-devel-6.7, wine-staging-6.7 will be added after work.

oscarbg commented 3 years ago

thanks..