Fix errors such as GL_FRAMEBUFFER_UNDEFINED and GL_INVALID_FRAMEBUFFER_OPERATION for OpenGL
functions when the default framebuffer 0 is bound on macOS.
These errors happen because the NSOpenGLContext doesn't have a view bound at the time of an
OpenGL call. The view could not be set for the NSOpenGLContext because the window or view can
still be invisible. Setting an invisible view for the NSOpenGLContext can generate invalid
drawable messages as 682ed910 has shown. Thus setting the view could be deferred because
the NSOpenGLContext needs a visible view.
However, right after the window becomes visible, an OpenGL function that involves the default
framebuffer can be called. And when the view is still not set at the time of the OpenGL call,
errors such as GL_FRAMEBUFFER_UNDEFINED and GL_INVALID_FRAMEBUFFER_OPERATION could happen and
result in rendering errors such as black screen. So we need to set the view for the NSOpenGLContext
as soon as the view becomes visible.
It's possible that the window and view are still invisible when OpenGL functions involving the
default framebuffer get called. In such cases, I think errors like GL_FRAMEBUFFER_UNDEFINED are
justified on macOS.
Fix Active Trader Pro black screen at launch on macOS. The application creates a d3d9 device with
an invisible window. And then it shows the window before calling d3d9_swapchain_Present(). So all
the [NSOpenGLContext setView] opportunities are missed and no view is set. Then when glBlitFramebuffer()
gets called, GL_FRAMEBUFFER_UNDEFINED happens and so nothing is rendered. The application only
renders one frame before login so the window remains black.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5487
This introduces a custom `VkPresentSurfacesInfoWine` struct to the driver queue present. It could very well be a separate vkQueuePresent parameter, now that the driver interface is manually written.
For now it provides the swapchains HWND, for vulkan_surface_presented, which is mostly just for winewayland purposes. Later I intend to change it to pass win32u surfaces wrappers.
--
v4: winevulkan: Remove now unnecessary vkCreateSwapchainKHR driver entry.
winevulkan: Remove now unnecessary vkDestroySwapchain driver entry.
win32u: Move vkQueuePresent implementation out of the user drivers.
winewayland: Remove now unnecessary swapchain wrapper.
winewayland: Remove now unnecessary swapchain extents checks.
win32u: Introduce a new vulkan_surface_presented driver entry.
winevulkan: Pass surface info for each vkQueuePresent swapchain to win32u.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5482
This introduces a custom `VkPresentSurfacesInfoWine` struct to the driver queue present. It could very well be a separate vkQueuePresent parameter, now that the driver interface is manually written.
For now it provides the swapchains HWND, for vulkan_surface_presented, which is mostly just for winewayland purposes. Later I intend to change it to pass win32u surfaces wrappers.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5482
--
v3: win32u: Split virtual desktop modes to a add_virtual_modes helper.
win32u: Delay writing current display settings to the registry.
winex11: Let win32u decide when to force update the display cache.
win32u: Don't force refresh the display cache on thread desktop change.
winex11: Report all sources as detached in virtual desktop mode.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5422
First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
--
v30: win32u: Use the desktop shared data for GetCursorPos.
server: Move the last cursor time to the desktop session object.
server: Move the cursor position to the desktop session object.
win32u: Open desktop shared objects from session mapping.
server: Return the desktop object info in get_thread_desktop.
server: Allocate shared session object for desktops.
win32u: Open the global session shared mapping.
include: Add ReadNoFence64 inline helpers.
server: Create a global session shared mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3103
Starting with late Windows 10 version, in ucrtbase, stderr is now unbuffered
whatever the type of the underlying fd (previously, native only set it to
unbuffered when attached to character fd (console, NUL...)).
This serie adds also tests for msvcrt & ucrtbase to show the discrepancies.
Note: ucrtbase's tests also include a reversed engineered structure layout
for FILE.
_get_stream_buffer_pointers already gives base, ptr and cnt, and toying with
setvbuf gave easily the rest of the fields.
Didn't spend time in guessing the flags meaning: which look different
from msvcrt's.
Related to https://bugs.winehq.org/show_bug.cgi?id=56459
@piotr: I can share the details (the access to the test result in the bug
report is limited).
--
v4: ucrtbase: Let stderr be always be unbuffered.
ucrtbase/tests: Add tests for checking buffering state of standard streams.
msvcrt/tests: Add tests for check buffering state of standard streams.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5462