drm/vmwgfx: Mark a surface gpu-dirty after the SVGA3dCmdDXGenMips command
The SVGA3dCmdDXGenMips command uses a shader-resource view to access the underlying surface. Normally accesses using that view-type are not dirtying the underlying surface, but that particular command is an exception. Mark the surface gpu-dirty after a SVGA3dCmdDXGenMips command has been submitted. This fixes the piglit getteximage-formats test run with SVGA_FORCE_COHERENT=1 Fixes: a9f58c456e9d ("drm/vmwgfx: Be more restrictive when dirtying resources") Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Charmaine Lee <charmainel@vmware.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com> Signed-off-by: Zack Rusin <zackr@vmware.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210505035740.286923-3-zackr@vmware.com
This commit is contained in:
parent
2cc8bfeeb7
commit
75156a887b
@ -2763,12 +2763,24 @@ static int vmw_cmd_dx_genmips(struct vmw_private *dev_priv,
|
||||
{
|
||||
VMW_DECLARE_CMD_VAR(*cmd, SVGA3dCmdDXGenMips) =
|
||||
container_of(header, typeof(*cmd), header);
|
||||
struct vmw_resource *ret;
|
||||
struct vmw_resource *view;
|
||||
struct vmw_res_cache_entry *rcache;
|
||||
|
||||
ret = vmw_view_id_val_add(sw_context, vmw_view_sr,
|
||||
cmd->body.shaderResourceViewId);
|
||||
view = vmw_view_id_val_add(sw_context, vmw_view_sr,
|
||||
cmd->body.shaderResourceViewId);
|
||||
if (IS_ERR(view))
|
||||
return PTR_ERR(view);
|
||||
|
||||
return PTR_ERR_OR_ZERO(ret);
|
||||
/*
|
||||
* Normally the shader-resource view is not gpu-dirtying, but for
|
||||
* this particular command it is...
|
||||
* So mark the last looked-up surface, which is the surface
|
||||
* the view points to, gpu-dirty.
|
||||
*/
|
||||
rcache = &sw_context->res_cache[vmw_res_surface];
|
||||
vmw_validation_res_set_dirty(sw_context->ctx, rcache->private,
|
||||
VMW_RES_DIRTY_SET);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user