From: Elizabeth Figura <zfigura@codeweavers.com> --- dlls/d3d11/device.c | 13 +++++++++++-- dlls/wined3d/device.c | 27 --------------------------- dlls/wined3d/directx.c | 27 +++++++++++++++++++++++++++ dlls/wined3d/wined3d.spec | 4 ++-- include/wine/wined3d.h | 4 ++-- 5 files changed, 42 insertions(+), 33 deletions(-) diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index e1a846698e6..6a201ba4582 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -66,6 +66,15 @@ static D3D_FEATURE_LEVEL d3d_feature_level_from_wined3d(enum wined3d_feature_lev return (D3D_FEATURE_LEVEL)level; } +static struct wined3d_adapter *d3d_device_get_adapter(struct d3d_device *device) +{ + struct wined3d *wined3d = wined3d_device_get_wined3d(device->wined3d_device); + struct wined3d_device_creation_parameters params; + + wined3d_device_get_creation_parameters(device->wined3d_device, ¶ms); + return wined3d_get_adapter(wined3d, params.adapter_idx); +} + /* ID3DDeviceContextState methods */ static inline struct d3d_device_context_state *impl_from_ID3DDeviceContextState(ID3DDeviceContextState *iface) @@ -7833,7 +7842,7 @@ static UINT STDMETHODCALLTYPE d3d11_video_device_GetVideoDecoderProfileCount(ID3 TRACE("iface %p.\n", iface); - return wined3d_device_get_video_decode_profile_count(device->wined3d_device); + return wined3d_adapter_get_decode_profile_count(d3d_device_get_adapter(device)); } static HRESULT STDMETHODCALLTYPE d3d11_video_device_GetVideoDecoderProfile( @@ -7843,7 +7852,7 @@ static HRESULT STDMETHODCALLTYPE d3d11_video_device_GetVideoDecoderProfile( TRACE("iface %p, index %u, profile %p.\n", iface, index, profile); - return wined3d_device_get_video_decode_profile(device->wined3d_device, index, profile); + return wined3d_adapter_get_decode_profile(d3d_device_get_adapter(device), index, profile); } static HRESULT STDMETHODCALLTYPE d3d11_video_device_CheckVideoDecoderFormat( diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 7d03601c555..4cabc44b2a6 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -5659,30 +5659,3 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL else return CallWindowProcA(proc, window, message, wparam, lparam); } - -unsigned int CDECL wined3d_device_get_video_decode_profile_count(struct wined3d_device *device) -{ - GUID profiles[WINED3D_DECODER_MAX_PROFILE_COUNT]; - unsigned int count; - - TRACE("device %p.\n", device); - - device->adapter->decoder_ops->get_profiles(device->adapter, &count, profiles); - return count; -} - -HRESULT CDECL wined3d_device_get_video_decode_profile(struct wined3d_device *device, unsigned int idx, GUID *profile) -{ - GUID profiles[WINED3D_DECODER_MAX_PROFILE_COUNT]; - unsigned int count; - - TRACE("device %p, idx %u.\n", device, idx); - - device->adapter->decoder_ops->get_profiles(device->adapter, &count, profiles); - - if (idx >= count) - return E_INVALIDARG; - - *profile = profiles[idx]; - return S_OK; -} diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index e75c3cf625e..91f3e7ae6ea 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -1817,6 +1817,33 @@ HRESULT CDECL wined3d_adapter_get_identifier(const struct wined3d_adapter *adapt return WINED3D_OK; } +unsigned int CDECL wined3d_adapter_get_decode_profile_count(struct wined3d_adapter *adapter) +{ + GUID profiles[WINED3D_DECODER_MAX_PROFILE_COUNT]; + unsigned int count; + + TRACE("adapter %p.\n", adapter); + + adapter->decoder_ops->get_profiles(adapter, &count, profiles); + return count; +} + +HRESULT CDECL wined3d_adapter_get_decode_profile(struct wined3d_adapter *adapter, unsigned int idx, GUID *profile) +{ + GUID profiles[WINED3D_DECODER_MAX_PROFILE_COUNT]; + unsigned int count; + + TRACE("adapter %p, idx %u.\n", adapter, idx); + + adapter->decoder_ops->get_profiles(adapter, &count, profiles); + + if (idx >= count) + return E_INVALIDARG; + + *profile = profiles[idx]; + return S_OK; +} + HRESULT CDECL wined3d_output_get_raster_status(const struct wined3d_output *output, struct wined3d_raster_status *raster_status) { diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index da7db0c2184..2a3f330ca10 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -19,6 +19,8 @@ @ cdecl wined3d_restore_display_modes(ptr) @ cdecl wined3d_unregister_windows(ptr) +@ cdecl wined3d_adapter_get_decode_profile_count(ptr) +@ cdecl wined3d_adapter_get_decode_profile(ptr long ptr) @ cdecl wined3d_adapter_get_identifier(ptr long ptr) @ cdecl wined3d_adapter_get_output(ptr long) @ cdecl wined3d_adapter_get_output_count(ptr) @@ -83,8 +85,6 @@ @ cdecl wined3d_device_get_state(ptr) @ cdecl wined3d_device_get_swapchain(ptr long) @ cdecl wined3d_device_get_swapchain_count(ptr) -@ cdecl wined3d_device_get_video_decode_profile_count(ptr) -@ cdecl wined3d_device_get_video_decode_profile(ptr long ptr) @ cdecl wined3d_device_get_wined3d(ptr) @ cdecl wined3d_device_incref(ptr) @ cdecl wined3d_device_process_vertices(ptr ptr long long long ptr ptr long long) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 217393d6e29..2dfaf7af7ea 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2372,6 +2372,8 @@ BOOL __cdecl wined3d_register_window(struct wined3d *wined3d, HWND window, HRESULT __cdecl wined3d_restore_display_modes(struct wined3d *wined3d); void __cdecl wined3d_unregister_windows(struct wined3d *wined3d); +unsigned int __cdecl wined3d_adapter_get_decode_profile_count(struct wined3d_adapter *adapter); +HRESULT __cdecl wined3d_adapter_get_decode_profile(struct wined3d_adapter *adapter, unsigned int idx, GUID *profile); HRESULT __cdecl wined3d_adapter_get_identifier(const struct wined3d_adapter *adapter, uint32_t flags, struct wined3d_adapter_identifier *identifier); struct wined3d_output * __cdecl wined3d_adapter_get_output(const struct wined3d_adapter *adapter, @@ -2460,8 +2462,6 @@ struct wined3d_state * __cdecl wined3d_device_get_state(struct wined3d_device *d struct wined3d_swapchain * __cdecl wined3d_device_get_swapchain(const struct wined3d_device *device, UINT swapchain_idx); UINT __cdecl wined3d_device_get_swapchain_count(const struct wined3d_device *device); -unsigned int __cdecl wined3d_device_get_video_decode_profile_count(struct wined3d_device *device); -HRESULT __cdecl wined3d_device_get_video_decode_profile(struct wined3d_device *device, unsigned int idx, GUID *profile); struct wined3d * __cdecl wined3d_device_get_wined3d(const struct wined3d_device *device); ULONG __cdecl wined3d_device_incref(struct wined3d_device *device); HRESULT __cdecl wined3d_device_process_vertices(struct wined3d_device *device, struct wined3d_stateblock *stateblock, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11720