i915g: pwrite batchbuffer instead of map
This commit is contained in:
parent
d585616f5b
commit
547b726484
|
@ -13,6 +13,7 @@
|
|||
#define INTEL_BATCH_CLIPRECTS 0x2
|
||||
|
||||
#undef INTEL_RUN_SYNC
|
||||
#undef INTEL_MAP_BATCHBUFFER
|
||||
|
||||
struct intel_drm_batchbuffer
|
||||
{
|
||||
|
@ -40,8 +41,11 @@ intel_drm_batchbuffer_reset(struct intel_drm_batchbuffer *batch)
|
|||
"gallium3d_batchbuffer",
|
||||
batch->actual_size,
|
||||
4096);
|
||||
|
||||
#ifdef INTEL_MAP_BATCHBUFFER
|
||||
drm_intel_bo_map(batch->bo, TRUE);
|
||||
batch->base.map = batch->bo->virtual;
|
||||
#endif
|
||||
|
||||
memset(batch->base.map, 0, batch->actual_size);
|
||||
batch->base.ptr = batch->base.map;
|
||||
|
@ -55,7 +59,13 @@ intel_drm_batchbuffer_create(struct intel_winsys *iws)
|
|||
struct intel_drm_winsys *idws = intel_drm_winsys(iws);
|
||||
struct intel_drm_batchbuffer *batch = CALLOC_STRUCT(intel_drm_batchbuffer);
|
||||
|
||||
batch->actual_size = idws->max_batch_size;
|
||||
|
||||
#ifdef INTEL_MAP_BATCHBUFFER
|
||||
batch->base.map = NULL;
|
||||
#else
|
||||
batch->base.map = MALLOC(batch->actual_size);
|
||||
#endif
|
||||
batch->base.ptr = NULL;
|
||||
batch->base.size = 0;
|
||||
|
||||
|
@ -64,8 +74,6 @@ intel_drm_batchbuffer_create(struct intel_winsys *iws)
|
|||
|
||||
batch->base.iws = iws;
|
||||
|
||||
batch->actual_size = idws->max_batch_size;
|
||||
|
||||
intel_drm_batchbuffer_reset(batch);
|
||||
|
||||
return &batch->base;
|
||||
|
@ -156,7 +164,11 @@ intel_drm_batchbuffer_flush(struct intel_batchbuffer *ibatch,
|
|||
|
||||
used = batch->base.ptr - batch->base.map;
|
||||
|
||||
#ifdef INTEL_MAP_BATCHBUFFER
|
||||
drm_intel_bo_unmap(batch->bo);
|
||||
#else
|
||||
drm_intel_bo_subdata(batch->bo, 0, used, batch->base.map);
|
||||
#endif
|
||||
|
||||
/* Do the sending to HW */
|
||||
ret = drm_intel_bo_exec(batch->bo, used, NULL, 0, 0);
|
||||
|
@ -202,7 +214,10 @@ intel_drm_batchbuffer_destroy(struct intel_batchbuffer *ibatch)
|
|||
if (batch->bo)
|
||||
drm_intel_bo_unreference(batch->bo);
|
||||
|
||||
free(batch);
|
||||
#ifndef INTEL_MAP_BATCHBUFFER
|
||||
FREE(batch->base.map);
|
||||
#endif
|
||||
FREE(batch);
|
||||
}
|
||||
|
||||
void intel_drm_winsys_init_batchbuffer_functions(struct intel_drm_winsys *idws)
|
||||
|
|
Loading…
Reference in New Issue