Loading drivers/gpu/drm/i915/i915_drv.h +3 −0 Original line number Diff line number Diff line Loading @@ -285,6 +285,9 @@ typedef struct drm_i915_private { unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds; int vblank_pipe; int num_pipe; u32 flush_rings; #define FLUSH_RENDER_RING 0x1 #define FLUSH_BSD_RING 0x2 /* For hangcheck timer */ #define DRM_I915_HANGCHECK_PERIOD 75 /* in jiffies */ Loading drivers/gpu/drm/i915/i915_gem.c +16 −10 Original line number Diff line number Diff line Loading @@ -3117,6 +3117,7 @@ static void i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj) { struct drm_device *dev = obj->dev; drm_i915_private_t *dev_priv = dev->dev_private; struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); uint32_t invalidate_domains = 0; uint32_t flush_domains = 0; Loading Loading @@ -3179,6 +3180,13 @@ i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj) obj->pending_write_domain = obj->write_domain; obj->read_domains = obj->pending_read_domains; if (flush_domains & I915_GEM_GPU_DOMAINS) { if (obj_priv->ring == &dev_priv->render_ring) dev_priv->flush_rings |= FLUSH_RENDER_RING; else if (obj_priv->ring == &dev_priv->bsd_ring) dev_priv->flush_rings |= FLUSH_BSD_RING; } dev->invalidate_domains |= invalidate_domains; dev->flush_domains |= flush_domains; #if WATCH_BUF Loading Loading @@ -3718,7 +3726,6 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, ring = &dev_priv->render_ring; } if (args->buffer_count < 1) { DRM_ERROR("execbuf with %d buffers\n", args->buffer_count); return -EINVAL; Loading Loading @@ -3892,6 +3899,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, */ dev->invalidate_domains = 0; dev->flush_domains = 0; dev_priv->flush_rings = 0; for (i = 0; i < args->buffer_count; i++) { struct drm_gem_object *obj = object_list[i]; Loading @@ -3912,17 +3920,15 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, i915_gem_flush(dev, dev->invalidate_domains, dev->flush_domains); if (dev->flush_domains & I915_GEM_GPU_DOMAINS) { if (dev_priv->flush_rings & FLUSH_RENDER_RING) (void)i915_add_request(dev, file_priv, dev->flush_domains, &dev_priv->render_ring); if (HAS_BSD(dev)) if (dev_priv->flush_rings & FLUSH_BSD_RING) (void)i915_add_request(dev, file_priv, dev->flush_domains, &dev_priv->bsd_ring); } } for (i = 0; i < args->buffer_count; i++) { struct drm_gem_object *obj = object_list[i]; Loading Loading
drivers/gpu/drm/i915/i915_drv.h +3 −0 Original line number Diff line number Diff line Loading @@ -285,6 +285,9 @@ typedef struct drm_i915_private { unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds; int vblank_pipe; int num_pipe; u32 flush_rings; #define FLUSH_RENDER_RING 0x1 #define FLUSH_BSD_RING 0x2 /* For hangcheck timer */ #define DRM_I915_HANGCHECK_PERIOD 75 /* in jiffies */ Loading
drivers/gpu/drm/i915/i915_gem.c +16 −10 Original line number Diff line number Diff line Loading @@ -3117,6 +3117,7 @@ static void i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj) { struct drm_device *dev = obj->dev; drm_i915_private_t *dev_priv = dev->dev_private; struct drm_i915_gem_object *obj_priv = to_intel_bo(obj); uint32_t invalidate_domains = 0; uint32_t flush_domains = 0; Loading Loading @@ -3179,6 +3180,13 @@ i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj) obj->pending_write_domain = obj->write_domain; obj->read_domains = obj->pending_read_domains; if (flush_domains & I915_GEM_GPU_DOMAINS) { if (obj_priv->ring == &dev_priv->render_ring) dev_priv->flush_rings |= FLUSH_RENDER_RING; else if (obj_priv->ring == &dev_priv->bsd_ring) dev_priv->flush_rings |= FLUSH_BSD_RING; } dev->invalidate_domains |= invalidate_domains; dev->flush_domains |= flush_domains; #if WATCH_BUF Loading Loading @@ -3718,7 +3726,6 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, ring = &dev_priv->render_ring; } if (args->buffer_count < 1) { DRM_ERROR("execbuf with %d buffers\n", args->buffer_count); return -EINVAL; Loading Loading @@ -3892,6 +3899,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, */ dev->invalidate_domains = 0; dev->flush_domains = 0; dev_priv->flush_rings = 0; for (i = 0; i < args->buffer_count; i++) { struct drm_gem_object *obj = object_list[i]; Loading @@ -3912,17 +3920,15 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, i915_gem_flush(dev, dev->invalidate_domains, dev->flush_domains); if (dev->flush_domains & I915_GEM_GPU_DOMAINS) { if (dev_priv->flush_rings & FLUSH_RENDER_RING) (void)i915_add_request(dev, file_priv, dev->flush_domains, &dev_priv->render_ring); if (HAS_BSD(dev)) if (dev_priv->flush_rings & FLUSH_BSD_RING) (void)i915_add_request(dev, file_priv, dev->flush_domains, &dev_priv->bsd_ring); } } for (i = 0; i < args->buffer_count; i++) { struct drm_gem_object *obj = object_list[i]; Loading