[PATCH] wined3d: Issue texture barrier before using a texture attached to FBO.
Henri Verbeet
hverbeet at gmail.com
Mon Oct 21 07:47:08 CDT 2019
On Mon, 21 Oct 2019 at 15:53, Paul Gofman <gofmanp at gmail.com> wrote:
> +static void context_texture_check_fbo_attached(struct wined3d_context *context,
> + const struct wined3d_state *state, const struct wined3d_resource *resource)
> +{
> + struct wined3d_rendertarget_view * const *rts = &state->fb->render_targets[0];
> + unsigned int i;
> +
> + for (i = 0; i < MAX_RENDER_TARGET_VIEWS; ++i)
> + if (rts[i] && rts[i]->resource == resource)
> + {
> + context->uses_fbo_attached_resources = 1;
> + return;
> + }
This can only happen if the resource has WINED3D_BIND_RENDER_TARGET.
> + if (state->fb->depth_stencil && state->fb->depth_stencil->resource == resource)
> + context->uses_fbo_attached_resources = 1;
And this can only happen for resources with
WINED3D_BIND_DEPTH_STENCIL. It may not be worth checking for that
individually since it's only a single bind point, but if the resource
has neither WINED3D_BIND_RENDER_TARGET nor WINED3D_BIND_DEPTH_STENCIL,
you wouldn't need to call context_texture_check_fbo_attached() at all.
Note that this doesn't handle resources bound through SRVs. I don't
know for sure whether it should, but it doesn't seem unlikely.
More information about the wine-devel
mailing list