[PATCH] Revert "include: Use the ARRAY_SIZE() macro in debug.h."
Axel Davy
davyaxel0 at gmail.com
Fri Nov 23 13:55:14 CST 2018
On 23/11/2018 17:36, Henri Verbeet wrote:
> On Tue, 20 Nov 2018 at 23:01, Axel Davy <davyaxel0 at gmail.com> wrote:
>> On 20/11/2018 20:05, Henri Verbeet wrote:
>>> Not directly, but I think we'd consider exposing an interface that's
>>> conceptually similar to Present. (I.e., "replace the contents of this
>>> window with the contents of this native drawable"), at least to
>>> internal DLLs like d3d9. The d3d9 dll could then pass a callback to
>>> Nine using that internal function to actually get things to the
>>> screen. There would be some details to work out, but I think that's an
>>> approach that may be worth exploring.
>>>
>>> Of course I'd also still prefer Nine to be used as a wined3d backend
>>> instead of as a replacement for d3d9, but that's a mostly orthogonal
>>> issue.
>> How low-level would you see that interface similar to present ?
>>
> What I had in mind would be something similar to the following:
>
> __wine_present_native_drawable(HWND window, ULONG_PTR drawable,
> unsigned int flags,
> const RECT *src, const POINT *dst, UINT64 msc, UINT64 divisor,
> UINT64 remainder);
Do you have a similar platform API (Mac ?) you would like to cover with
this interface ?
I think passing the native drawable directly is not a good idea (because
it requires to set up a callback system to get the updated status of
that drawable).
Thus I would suggest an interface in the spirit of:
__wine_present_native_drawable(HWND window, wine_present_drawable
*wine_drawable,
unsigned int flags,
const RECT *src, const POINT *dst, UINT64 msc, UINT64 divisor,
UINT64 remainder);
wine_present_drawable *
__wine_present_make_wine_drawable(ULONG_PTR drawable)
__wine_present_process_events(bool block_if_no_event); // basically a flush + process events
/* Those wouldn't process events, only check states */
__wine_present_is_drawable_released(wine_present_drawable *wine_drawable);
__wine_present_is_drawable_presented(wine_present_drawable *wine_drawable);
__wine_present_drawable_get_last_presented_msc(wine_present_drawable *wine_drawable);
__wine_present_release_drawable(wine_present_drawable *wine_drawable);
and have then multithread safe ie multiple threads can call the functions without blocking.
For example I can have a thread waiting with __wine_present_process_events(true),
while another thread does __wine_present_native_drawable.
Would that work out ?
Axel
More information about the wine-devel
mailing list