[PATCH 5/5] d3d9: Report d3d9 adapter group information in device caps.
Henri Verbeet
hverbeet at gmail.com
Mon Mar 16 07:02:28 CDT 2020
On Fri, 13 Mar 2020 at 13:07, Zhiyi Zhang <zzhang at codeweavers.com> wrote:
> -HRESULT vdecl_convert_fvf(DWORD FVF, D3DVERTEXELEMENT9 **ppVertexElements) DECLSPEC_HIDDEN;
> -D3DFORMAT d3dformat_from_wined3dformat(enum wined3d_format_id format) DECLSPEC_HIDDEN;
> -BOOL is_gdi_compat_wined3dformat(enum wined3d_format_id format) DECLSPEC_HIDDEN;
> -enum wined3d_format_id wined3dformat_from_d3dformat(D3DFORMAT format) DECLSPEC_HIDDEN;
> -unsigned int wined3dmapflags_from_d3dmapflags(unsigned int flags, unsigned int usage) DECLSPEC_HIDDEN;
> -void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *present_parameters,
> - const struct wined3d_swapchain_desc *swapchain_desc, DWORD presentation_interval) DECLSPEC_HIDDEN;
> -void d3dcaps_from_wined3dcaps(D3DCAPS9 *caps, const struct wined3d_caps *wined3d_caps) DECLSPEC_HIDDEN;
> -
> struct d3d9
> {
> IDirect3D9Ex IDirect3D9Ex_iface;
> @@ -71,6 +62,16 @@ struct d3d9
> BOOL extended;
> };
>
> +HRESULT vdecl_convert_fvf(DWORD FVF, D3DVERTEXELEMENT9 **ppVertexElements) DECLSPEC_HIDDEN;
> +D3DFORMAT d3dformat_from_wined3dformat(enum wined3d_format_id format) DECLSPEC_HIDDEN;
> +BOOL is_gdi_compat_wined3dformat(enum wined3d_format_id format) DECLSPEC_HIDDEN;
> +enum wined3d_format_id wined3dformat_from_d3dformat(D3DFORMAT format) DECLSPEC_HIDDEN;
> +unsigned int wined3dmapflags_from_d3dmapflags(unsigned int flags, unsigned int usage) DECLSPEC_HIDDEN;
> +void present_parameters_from_wined3d_swapchain_desc(D3DPRESENT_PARAMETERS *present_parameters,
> + const struct wined3d_swapchain_desc *swapchain_desc, DWORD presentation_interval) DECLSPEC_HIDDEN;
> +void d3dcaps_from_wined3dcaps(D3DCAPS9 *caps, const struct wined3d_caps *wined3d_caps,
> + const struct d3d9 *d3d9, unsigned int adapter_ordinal) DECLSPEC_HIDDEN;
> +
If you're going to move these, you may as well fix the parameter
names. On the other hand, you could also consider doing something like
the following:
void d3d9_caps_from_wined3dcaps(const struct d3d9 *d3d9, unsigned
int adapter_ordinal,
D3DCAPS9 *caps, const struct wined3d_caps *wined3d_caps)
DECLSPEC_HIDDEN;
and just leaving the other declarations where they are.
> + /* Get adapter group information */
> + output_idx = adapter_ordinal;
> + wined3d_output = d3d9->wined3d_outputs[output_idx];
> + wined3d_adapter = wined3d_output_get_adapter(wined3d_output);
> +
> + master_output = wined3d_adapter_get_output(wined3d_adapter, 0);
> + for (output_idx = 0; output_idx < d3d9->wined3d_output_count; ++output_idx)
> + {
> + if (master_output == d3d9->wined3d_outputs[output_idx])
> + {
> + caps->MasterAdapterOrdinal = output_idx;
> + break;
> + }
> + }
> +
> + output_count = wined3d_adapter_get_output_count(wined3d_adapter);
> + for (output_idx = 0; output_idx < output_count; ++output_idx)
> + {
> + if (wined3d_output == wined3d_adapter_get_output(wined3d_adapter, output_idx))
> + {
> + caps->AdapterOrdinalInGroup = output_idx;
> + break;
> + }
> + }
> +
> + caps->NumberOfAdaptersInGroup = caps->AdapterOrdinalInGroup ? 0 : output_count;
> }
If you store the output ordinal in the wined3d_output_desc structure,
the above would become:
caps->MasterAdapterOrdinal = output_idx - output_desc.orindal;
caps->AdapterOrdinalInGroup = output_desc.ordinal;
More information about the wine-devel
mailing list