summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/intel_buffer_objects.c
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2013-08-01 16:14:17 -0700
committerKenneth Graunke <kenneth@whitecape.org>2013-08-16 19:00:49 -0700
commit96a0fe7e4d121f6d879c010660f936f42e3413dc (patch)
treed02e012758a2629c62366b6798adcef906ed7d1f /src/mesa/drivers/dri/i965/intel_buffer_objects.c
parent76c2533470ec805fdb45592c72becd632d8bf6d4 (diff)
downloadexternal_mesa3d-96a0fe7e4d121f6d879c010660f936f42e3413dc.zip
external_mesa3d-96a0fe7e4d121f6d879c010660f936f42e3413dc.tar.gz
external_mesa3d-96a0fe7e4d121f6d879c010660f936f42e3413dc.tar.bz2
i965: Split intel_upload code out into a separate file.
This code upload performs batched uploads via a BO. By moving it out to a separate file, intel_buffer_objects.c only provides the core buffer object functionality. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Paul Berry <stereotype441@gmail.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_buffer_objects.c')
-rw-r--r--src/mesa/drivers/dri/i965/intel_buffer_objects.c133
1 files changed, 0 insertions, 133 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_buffer_objects.c b/src/mesa/drivers/dri/i965/intel_buffer_objects.c
index 740913b..81c72fa 100644
--- a/src/mesa/drivers/dri/i965/intel_buffer_objects.c
+++ b/src/mesa/drivers/dri/i965/intel_buffer_objects.c
@@ -412,139 +412,6 @@ intel_bufferobj_buffer(struct brw_context *brw,
return intel_obj->buffer;
}
-#define INTEL_UPLOAD_SIZE (64*1024)
-
-void
-intel_upload_finish(struct brw_context *brw)
-{
- if (!brw->upload.bo)
- return;
-
- if (brw->upload.buffer_len) {
- drm_intel_bo_subdata(brw->upload.bo,
- brw->upload.buffer_offset,
- brw->upload.buffer_len,
- brw->upload.buffer);
- brw->upload.buffer_len = 0;
- }
-
- drm_intel_bo_unreference(brw->upload.bo);
- brw->upload.bo = NULL;
-}
-
-static void wrap_buffers(struct brw_context *brw, GLuint size)
-{
- intel_upload_finish(brw);
-
- if (size < INTEL_UPLOAD_SIZE)
- size = INTEL_UPLOAD_SIZE;
-
- brw->upload.bo = drm_intel_bo_alloc(brw->bufmgr, "upload", size, 0);
- brw->upload.offset = 0;
-}
-
-void intel_upload_data(struct brw_context *brw,
- const void *ptr, GLuint size, GLuint align,
- drm_intel_bo **return_bo,
- GLuint *return_offset)
-{
- GLuint base, delta;
-
- base = (brw->upload.offset + align - 1) / align * align;
- if (brw->upload.bo == NULL || base + size > brw->upload.bo->size) {
- wrap_buffers(brw, size);
- base = 0;
- }
-
- drm_intel_bo_reference(brw->upload.bo);
- *return_bo = brw->upload.bo;
- *return_offset = base;
-
- delta = base - brw->upload.offset;
- if (brw->upload.buffer_len &&
- brw->upload.buffer_len + delta + size > sizeof(brw->upload.buffer))
- {
- drm_intel_bo_subdata(brw->upload.bo,
- brw->upload.buffer_offset,
- brw->upload.buffer_len,
- brw->upload.buffer);
- brw->upload.buffer_len = 0;
- }
-
- if (size < sizeof(brw->upload.buffer))
- {
- if (brw->upload.buffer_len == 0)
- brw->upload.buffer_offset = base;
- else
- brw->upload.buffer_len += delta;
-
- memcpy(brw->upload.buffer + brw->upload.buffer_len, ptr, size);
- brw->upload.buffer_len += size;
- }
- else
- {
- drm_intel_bo_subdata(brw->upload.bo, base, size, ptr);
- }
-
- brw->upload.offset = base + size;
-}
-
-void *intel_upload_map(struct brw_context *brw, GLuint size, GLuint align)
-{
- GLuint base, delta;
- char *ptr;
-
- base = (brw->upload.offset + align - 1) / align * align;
- if (brw->upload.bo == NULL || base + size > brw->upload.bo->size) {
- wrap_buffers(brw, size);
- base = 0;
- }
-
- delta = base - brw->upload.offset;
- if (brw->upload.buffer_len &&
- brw->upload.buffer_len + delta + size > sizeof(brw->upload.buffer))
- {
- drm_intel_bo_subdata(brw->upload.bo,
- brw->upload.buffer_offset,
- brw->upload.buffer_len,
- brw->upload.buffer);
- brw->upload.buffer_len = 0;
- }
-
- if (size <= sizeof(brw->upload.buffer)) {
- if (brw->upload.buffer_len == 0)
- brw->upload.buffer_offset = base;
- else
- brw->upload.buffer_len += delta;
-
- ptr = brw->upload.buffer + brw->upload.buffer_len;
- brw->upload.buffer_len += size;
- } else
- ptr = malloc(size);
-
- return ptr;
-}
-
-void intel_upload_unmap(struct brw_context *brw,
- const void *ptr, GLuint size, GLuint align,
- drm_intel_bo **return_bo,
- GLuint *return_offset)
-{
- GLuint base;
-
- base = (brw->upload.offset + align - 1) / align * align;
- if (size > sizeof(brw->upload.buffer)) {
- drm_intel_bo_subdata(brw->upload.bo, base, size, ptr);
- free((void*)ptr);
- }
-
- drm_intel_bo_reference(brw->upload.bo);
- *return_bo = brw->upload.bo;
- *return_offset = base;
-
- brw->upload.offset = base + size;
-}
-
drm_intel_bo *
intel_bufferobj_source(struct brw_context *brw,
struct intel_buffer_object *intel_obj,