i915: Don't attempt to short-circuit object_wait_rendering by checking domains.
This could return early when reading after writing a buffer, if somebody had already put it on the flushing list (write domains are 0, but still active), leading to glReadPixels failure. Signed-off-by: Eric Anholt <eric@anholt.net> Signed-off-by: Dave Airlie <airlied@linux.ie>
This commit is contained in:
@@ -1455,11 +1455,9 @@ i915_gem_object_set_domain_range(struct drm_gem_object *obj,
|
|||||||
read_domains, write_domain);
|
read_domains, write_domain);
|
||||||
|
|
||||||
/* Wait on any GPU rendering to the object to be flushed. */
|
/* Wait on any GPU rendering to the object to be flushed. */
|
||||||
if (obj->write_domain & ~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT)) {
|
ret = i915_gem_object_wait_rendering(obj);
|
||||||
ret = i915_gem_object_wait_rendering(obj);
|
if (ret)
|
||||||
if (ret)
|
return ret;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obj_priv->page_cpu_valid == NULL) {
|
if (obj_priv->page_cpu_valid == NULL) {
|
||||||
obj_priv->page_cpu_valid = drm_calloc(1, obj->size / PAGE_SIZE,
|
obj_priv->page_cpu_valid = drm_calloc(1, obj->size / PAGE_SIZE,
|
||||||
|
Reference in New Issue
Block a user