i915: set domain properly on fb mapping, flush out changes
The user visible ioctl does this, but since we call into GEM internals directly, we have to flush things ourselves. Fixes initial fb console corruption.main
parent
5f9e4a764a
commit
893315d49e
|
@ -32,10 +32,6 @@
|
|||
#include "i915_drv.h"
|
||||
#include <linux/swap.h>
|
||||
|
||||
static int
|
||||
i915_gem_object_set_domain(struct drm_gem_object *obj,
|
||||
uint32_t read_domains,
|
||||
uint32_t write_domain);
|
||||
static int
|
||||
i915_gem_object_set_domain_range(struct drm_gem_object *obj,
|
||||
uint64_t offset,
|
||||
|
@ -1318,7 +1314,7 @@ i915_gem_clflush_object(struct drm_gem_object *obj)
|
|||
* MI_FLUSH
|
||||
* drm_agp_chipset_flush
|
||||
*/
|
||||
static int
|
||||
int
|
||||
i915_gem_object_set_domain(struct drm_gem_object *obj,
|
||||
uint32_t read_domains,
|
||||
uint32_t write_domain)
|
||||
|
|
|
@ -716,12 +716,18 @@ int intelfb_create(struct drm_device *dev, uint32_t fb_width, uint32_t fb_height
|
|||
obj_priv = fbo->driver_private;
|
||||
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
/* Flush everything out, we'll be doing GTT only from now on */
|
||||
i915_gem_object_set_domain(fbo, I915_GEM_DOMAIN_GTT,
|
||||
I915_GEM_DOMAIN_GTT);
|
||||
|
||||
ret = i915_gem_object_pin(fbo, PAGE_SIZE);
|
||||
if (ret) {
|
||||
DRM_ERROR("failed to pin fb: %d\n", ret);
|
||||
goto out_unref;
|
||||
}
|
||||
|
||||
i915_gem_clflush_object(fbo);
|
||||
|
||||
fb = intel_user_framebuffer_create(dev, NULL, &mode_cmd);
|
||||
if (!fb) {
|
||||
DRM_ERROR("failed to allocate fb.\n");
|
||||
|
|
|
@ -627,6 +627,9 @@ int i915_gem_init_ringbuffer(struct drm_device *dev);
|
|||
void i915_gem_cleanup_ringbuffer(struct drm_device *dev);
|
||||
int i915_gem_do_init(struct drm_device *dev, unsigned long start,
|
||||
unsigned long end);
|
||||
int i915_gem_object_set_domain(struct drm_gem_object *obj,
|
||||
uint32_t read_domains,
|
||||
uint32_t write_domain);
|
||||
void i915_gem_retire_work_handler(struct work_struct *work);
|
||||
void i915_gem_clflush_object(struct drm_gem_object *obj);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue