summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2006-08-29 11:45:13 +0000
committerKeith Whitwell <keith@tungstengraphics.com>2006-08-29 11:45:13 +0000
commitc863e635491c778caa9ca7951f0cf0fac9ce7c98 (patch)
tree3fe4fd36c597109ddf3b377636780f22c5e5f52f
parent62920e2ab2c906b937dbd4fe7c3d160ec7ec2b89 (diff)
remove hashing for bm buffers, use an opaque pointer instead of an integer
-rw-r--r--src/mesa/drivers/dri/i915/i830_context.h2
-rw-r--r--src/mesa/drivers/dri/i915/i830_metaops.c2
-rw-r--r--src/mesa/drivers/dri/i915/i830_vtbl.c24
-rw-r--r--src/mesa/drivers/dri/i915/i915_context.h2
-rw-r--r--src/mesa/drivers/dri/i915/i915_metaops.c2
-rw-r--r--src/mesa/drivers/dri/i915/i915_tex_layout.c2
-rw-r--r--src/mesa/drivers/dri/i915/intel_batchbuffer.c37
-rw-r--r--src/mesa/drivers/dri/i915/intel_batchbuffer.h4
-rw-r--r--src/mesa/drivers/dri/i915/intel_blit.c13
-rw-r--r--src/mesa/drivers/dri/i915/intel_blit.h6
-rw-r--r--src/mesa/drivers/dri/i915/intel_buffer_objects.c16
-rw-r--r--src/mesa/drivers/dri/i915/intel_buffer_objects.h4
-rw-r--r--src/mesa/drivers/dri/i915/intel_buffers.c31
-rw-r--r--src/mesa/drivers/dri/i915/intel_bufmgr.c144
-rw-r--r--src/mesa/drivers/dri/i915/intel_bufmgr.h54
-rw-r--r--src/mesa/drivers/dri/i915/intel_context.c8
-rw-r--r--src/mesa/drivers/dri/i915/intel_context.h10
-rw-r--r--src/mesa/drivers/dri/i915/intel_ioctl.c37
-rw-r--r--src/mesa/drivers/dri/i915/intel_mipmap_tree.c2
-rw-r--r--src/mesa/drivers/dri/i915/intel_pixel_draw.c4
-rw-r--r--src/mesa/drivers/dri/i915/intel_pixel_read.c4
-rw-r--r--src/mesa/drivers/dri/i915/intel_regions.c17
-rw-r--r--src/mesa/drivers/dri/i915/intel_regions.h2
-rw-r--r--src/mesa/drivers/dri/i915/intel_tex_image.c2
-rw-r--r--src/mesa/drivers/dri/i915/intel_tex_subimage.c1
-rw-r--r--src/mesa/drivers/dri/i915/intel_tex_validate.c2
26 files changed, 219 insertions, 213 deletions
diff --git a/src/mesa/drivers/dri/i915/i830_context.h b/src/mesa/drivers/dri/i915/i830_context.h
index 7cf9b8af64..fa4ec222cd 100644
--- a/src/mesa/drivers/dri/i915/i830_context.h
+++ b/src/mesa/drivers/dri/i915/i830_context.h
@@ -116,7 +116,7 @@ struct i830_hw_state {
* be from a PBO or FBO. Just use the buffer id. Will have to do
* this for draw and depth for FBO's...
*/
- GLuint tex_buffer[I830_TEX_UNITS];
+ struct buffer *tex_buffer[I830_TEX_UNITS];
GLuint tex_offset[I830_TEX_UNITS];
GLuint emitted; /* I810_UPLOAD_* */
diff --git a/src/mesa/drivers/dri/i915/i830_metaops.c b/src/mesa/drivers/dri/i915/i830_metaops.c
index c8100658e3..5297ef6da2 100644
--- a/src/mesa/drivers/dri/i915/i830_metaops.c
+++ b/src/mesa/drivers/dri/i915/i830_metaops.c
@@ -227,7 +227,7 @@ static void set_texture_blend_replace( struct intel_context *intel )
* (including the front or back buffer).
*/
static GLboolean set_tex_rect_source( struct intel_context *intel,
- GLuint buffer,
+ struct buffer *buffer,
GLuint offset,
GLuint pitch,
GLuint height,
diff --git a/src/mesa/drivers/dri/i915/i830_vtbl.c b/src/mesa/drivers/dri/i915/i830_vtbl.c
index aafe324d6f..2a95970cb6 100644
--- a/src/mesa/drivers/dri/i915/i830_vtbl.c
+++ b/src/mesa/drivers/dri/i915/i830_vtbl.c
@@ -28,13 +28,13 @@
#include "i830_context.h"
#include "i830_reg.h"
-
#include "intel_batchbuffer.h"
#include "intel_regions.h"
-
#include "tnl/t_context.h"
#include "tnl/t_vertex.h"
+#define FILE_DEBUG_FLAG DEBUG_STATE
+
static GLboolean i830_check_vertex_size( struct intel_context *intel,
GLuint expected );
@@ -409,21 +409,18 @@ static void i830_emit_state( struct intel_context *intel )
0);
if (dirty & I830_UPLOAD_INVARIENT) {
- if (INTEL_DEBUG & DEBUG_STATE)
- fprintf(stderr, "I830_UPLOAD_INVARIENT:\n");
+ DBG("I830_UPLOAD_INVARIENT:\n");
i830_emit_invarient_state( intel );
}
if (dirty & I830_UPLOAD_CTX) {
- if (INTEL_DEBUG & DEBUG_STATE)
- fprintf(stderr, "I830_UPLOAD_CTX:\n");
+ DBG("I830_UPLOAD_CTX:\n");
emit( i830, state->Ctx, sizeof(state->Ctx) );
}
if (dirty & I830_UPLOAD_BUFFERS) {
- if (INTEL_DEBUG & DEBUG_STATE)
- fprintf(stderr, "I830_UPLOAD_BUFFERS:\n");
+ DBG("I830_UPLOAD_BUFFERS:\n");
BEGIN_BATCH(I830_DEST_SETUP_SIZE+2, 0);
OUT_BATCH(state->Buffer[I830_DESTREG_CBUFADDR0]);
OUT_BATCH(state->Buffer[I830_DESTREG_CBUFADDR1]);
@@ -445,15 +442,13 @@ static void i830_emit_state( struct intel_context *intel )
}
if (dirty & I830_UPLOAD_STIPPLE) {
- if (INTEL_DEBUG & DEBUG_STATE)
- fprintf(stderr, "I830_UPLOAD_STIPPLE:\n");
+ DBG("I830_UPLOAD_STIPPLE:\n");
emit( i830, state->Stipple, sizeof(state->Stipple) );
}
for (i = 0; i < I830_TEX_UNITS; i++) {
if ((dirty & I830_UPLOAD_TEX(i))) {
- if (INTEL_DEBUG & DEBUG_STATE)
- fprintf(stderr, "I830_UPLOAD_TEX(%d):\n", i);
+ DBG("I830_UPLOAD_TEX(%d):\n", i);
BEGIN_BATCH(I830_TEX_SETUP_SIZE+1, 0);
OUT_BATCH(state->Tex[i][I830_TEXREG_TM0LI]);
@@ -478,9 +473,8 @@ static void i830_emit_state( struct intel_context *intel )
}
if (dirty & I830_UPLOAD_TEXBLEND(i)) {
- if (INTEL_DEBUG & DEBUG_STATE)
- fprintf(stderr, "I830_UPLOAD_TEXBLEND(%d): %d words\n", i,
- state->TexBlendWordsUsed[i]);
+ DBG("I830_UPLOAD_TEXBLEND(%d): %d words\n", i,
+ state->TexBlendWordsUsed[i]);
emit( i830, state->TexBlend[i],
state->TexBlendWordsUsed[i] * 4 );
}
diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h
index 4f10c2309a..c04232ec6a 100644
--- a/src/mesa/drivers/dri/i915/i915_context.h
+++ b/src/mesa/drivers/dri/i915/i915_context.h
@@ -219,7 +219,7 @@ struct i915_hw_state {
* be from a PBO or FBO. Just use the buffer id. Will have to do
* this for draw and depth for FBO's...
*/
- GLuint tex_buffer[I915_TEX_UNITS];
+ struct buffer *tex_buffer[I915_TEX_UNITS];
GLuint tex_offset[I915_TEX_UNITS];
diff --git a/src/mesa/drivers/dri/i915/i915_metaops.c b/src/mesa/drivers/dri/i915/i915_metaops.c
index 280529903f..7921ebf4f1 100644
--- a/src/mesa/drivers/dri/i915/i915_metaops.c
+++ b/src/mesa/drivers/dri/i915/i915_metaops.c
@@ -327,7 +327,7 @@ static void meta_texture_blend_replace( struct intel_context *intel )
* (including the front or back buffer).
*/
static GLboolean meta_tex_rect_source( struct intel_context *intel,
- GLuint buffer,
+ struct buffer *buffer,
GLuint offset,
GLuint pitch,
GLuint height,
diff --git a/src/mesa/drivers/dri/i915/i915_tex_layout.c b/src/mesa/drivers/dri/i915/i915_tex_layout.c
index 23fe70aa3c..e762277645 100644
--- a/src/mesa/drivers/dri/i915/i915_tex_layout.c
+++ b/src/mesa/drivers/dri/i915/i915_tex_layout.c
@@ -32,6 +32,8 @@
#include "intel_mipmap_tree.h"
#include "macros.h"
+#define FILE_DEBUG_FLAG DEBUG_TEXTURE
+
static GLint initial_offsets[6][2] = { {0,0},
{0,2},
{1,0},
diff --git a/src/mesa/drivers/dri/i915/intel_batchbuffer.c b/src/mesa/drivers/dri/i915/intel_batchbuffer.c
index 02863f8b53..5997a63cad 100644
--- a/src/mesa/drivers/dri/i915/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/i915/intel_batchbuffer.c
@@ -82,7 +82,7 @@ static void intel_dump_batchbuffer( GLuint offset,
void intel_batchbuffer_reset( struct intel_batchbuffer *batch )
{
- bmBufferData(batch->bm,
+ bmBufferData(batch->intel,
batch->buffer,
BATCH_SZ,
NULL,
@@ -96,14 +96,14 @@ void intel_batchbuffer_reset( struct intel_batchbuffer *batch )
batch->nr_relocs = 0;
batch->flags = 0;
- bmAddBuffer( batch->bm,
+ bmAddBuffer( batch->intel,
batch->list,
batch->buffer,
DRM_MM_TT,
NULL,
&batch->offset[batch->list_count++]);
- batch->map = bmMapBuffer(batch->bm, batch->buffer, DRM_MM_WRITE);
+ batch->map = bmMapBuffer(batch->intel, batch->buffer, DRM_MM_WRITE);
batch->ptr = batch->map;
}
@@ -115,10 +115,9 @@ struct intel_batchbuffer *intel_batchbuffer_alloc( struct intel_context *intel )
struct intel_batchbuffer *batch = calloc(sizeof(*batch), 1);
batch->intel = intel;
- batch->bm = intel->bm;
- bmGenBuffers(intel->bm, 1, &batch->buffer, BM_BATCHBUFFER);
- batch->last_fence = bmInitFence(batch->bm);
+ bmGenBuffers(intel, "batchbuffer", 1, &batch->buffer, BM_BATCHBUFFER);
+ batch->last_fence = bmInitFence(batch->intel);
intel_batchbuffer_reset( batch );
return batch;
}
@@ -126,7 +125,7 @@ struct intel_batchbuffer *intel_batchbuffer_alloc( struct intel_context *intel )
void intel_batchbuffer_free( struct intel_batchbuffer *batch )
{
if (batch->map)
- bmUnmapBuffer(batch->bm, batch->buffer);
+ bmUnmapBuffer(batch->intel, batch->buffer);
free(batch);
}
@@ -141,7 +140,7 @@ static void do_flush_locked( struct intel_batchbuffer *batch,
GLuint *ptr;
GLuint i;
- bmValidateBufferList( batch->bm,
+ bmValidateBufferList( batch->intel,
batch->list,
DRM_MM_TT );
@@ -149,7 +148,7 @@ static void do_flush_locked( struct intel_batchbuffer *batch,
* whole task should be done internally by the memory manager, and
* that dma buffers probably need to be pinned within agp space.
*/
- ptr = (GLuint *)bmMapBuffer(batch->bm, batch->buffer, DRM_MM_WRITE);
+ ptr = (GLuint *)bmMapBuffer(batch->intel, batch->buffer, DRM_MM_WRITE);
for (i = 0; i < batch->nr_relocs; i++) {
@@ -159,22 +158,20 @@ static void do_flush_locked( struct intel_batchbuffer *batch,
ptr[r->offset/4] = batch->offset[r->elem] + r->delta;
}
- if (INTEL_DEBUG & DEBUG_DMA)
+ if (INTEL_DEBUG & DEBUG_BATCH)
intel_dump_batchbuffer( 0, ptr, used );
- bmUnmapBuffer(batch->bm, batch->buffer);
+ bmUnmapBuffer(batch->intel, batch->buffer);
/* Fire the batch buffer, which was uploaded above:
*/
-
-#if 1
intel_batch_ioctl(batch->intel,
batch->offset[0],
used,
ignore_cliprects,
allow_unlock);
-#endif
- batch->last_fence = bmFenceBufferList(batch->bm, batch->list);
+
+ batch->last_fence = bmFenceBufferList(batch->intel, batch->list);
if (!batch->intel->last_swap_fence_retired) {
int retired;
drmFence dFence = {0,batch->intel->last_swap_fence};
@@ -213,7 +210,7 @@ GLuint intel_batchbuffer_flush( struct intel_batchbuffer *batch )
used += 8;
}
- bmUnmapBuffer(batch->bm, batch->buffer);
+ bmUnmapBuffer(batch->intel, batch->buffer);
batch->ptr = NULL;
batch->map = NULL;
@@ -241,7 +238,7 @@ GLuint intel_batchbuffer_flush( struct intel_batchbuffer *batch )
void intel_batchbuffer_finish( struct intel_batchbuffer *batch )
{
- bmFinishFence(batch->bm,
+ bmFinishFence(batch->intel,
intel_batchbuffer_flush(batch));
}
@@ -249,7 +246,7 @@ void intel_batchbuffer_finish( struct intel_batchbuffer *batch )
/* This is the only way buffers get added to the validate list.
*/
GLboolean intel_batchbuffer_emit_reloc( struct intel_batchbuffer *batch,
- GLuint buffer,
+ struct buffer *buffer,
GLuint flags,
GLuint delta )
{
@@ -257,10 +254,10 @@ GLboolean intel_batchbuffer_emit_reloc( struct intel_batchbuffer *batch,
assert(batch->nr_relocs <= MAX_RELOCS);
- i = bmScanBufferList(batch->bm, batch->list, buffer);
+ i = bmScanBufferList(batch->intel, batch->list, buffer);
if (i == -1) {
i = batch->list_count;
- bmAddBuffer(batch->bm,
+ bmAddBuffer(batch->intel,
batch->list,
buffer,
flags,
diff --git a/src/mesa/drivers/dri/i915/intel_batchbuffer.h b/src/mesa/drivers/dri/i915/intel_batchbuffer.h
index 87e5cb5e05..ab09335b5e 100644
--- a/src/mesa/drivers/dri/i915/intel_batchbuffer.h
+++ b/src/mesa/drivers/dri/i915/intel_batchbuffer.h
@@ -24,7 +24,7 @@ struct intel_batchbuffer {
struct bufmgr *bm;
struct intel_context *intel;
- GLuint buffer;
+ struct buffer *buffer;
GLuint last_fence;
GLuint flags;
@@ -65,7 +65,7 @@ void intel_batchbuffer_release_space(struct intel_batchbuffer *batch,
GLuint bytes);
GLboolean intel_batchbuffer_emit_reloc( struct intel_batchbuffer *batch,
- GLuint buffer,
+ struct buffer *buffer,
GLuint flags,
GLuint offset );
diff --git a/src/mesa/drivers/dri/i915/intel_blit.c b/src/mesa/drivers/dri/i915/intel_blit.c
index 83d3e183da..e55475d358 100644
--- a/src/mesa/drivers/dri/i915/intel_blit.c
+++ b/src/mesa/drivers/dri/i915/intel_blit.c
@@ -43,6 +43,7 @@
#include "intel_bufmgr.h"
+#define FILE_DEBUG_FLAG DEBUG_BLIT
/**
* Copy the back color buffer to the front color buffer.
@@ -75,7 +76,7 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv,
*/
if (!intel->last_swap_fence_retired) {
- bmFinishFence(intel->bm, intel->last_swap_fence);
+ bmFinishFence(intel, intel->last_swap_fence);
}
@@ -196,7 +197,7 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv,
void intelEmitFillBlit( struct intel_context *intel,
GLuint cpp,
GLshort dst_pitch,
- GLuint dst_buffer,
+ struct buffer *dst_buffer,
GLuint dst_offset,
GLshort x, GLshort y,
GLshort w, GLshort h,
@@ -223,7 +224,7 @@ void intelEmitFillBlit( struct intel_context *intel,
return;
}
- DBG("%s dst:buf(%d)/%d+%d %d,%d sz:%dx%d\n",
+ DBG("%s dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",
__FUNCTION__,
dst_buffer, dst_pitch, dst_offset, x, y,
w,h);
@@ -245,10 +246,10 @@ void intelEmitFillBlit( struct intel_context *intel,
void intelEmitCopyBlit( struct intel_context *intel,
GLuint cpp,
GLshort src_pitch,
- GLuint src_buffer,
+ struct buffer *src_buffer,
GLuint src_offset,
GLshort dst_pitch,
- GLuint dst_buffer,
+ struct buffer *dst_buffer,
GLuint dst_offset,
GLshort src_x, GLshort src_y,
GLshort dst_x, GLshort dst_y,
@@ -260,7 +261,7 @@ void intelEmitCopyBlit( struct intel_context *intel,
BATCH_LOCALS;
- DBG("%s src:buf(%d)/%d+%d %d,%d dst:buf(%d)/%d+%d %d,%d sz:%dx%d\n",
+ DBG("%s src:buf(%p)/%d+%d %d,%d dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",
__FUNCTION__,
src_buffer, src_pitch, src_offset, src_x, src_y,
dst_buffer, dst_pitch, dst_offset, dst_x, dst_y,
diff --git a/src/mesa/drivers/dri/i915/intel_blit.h b/src/mesa/drivers/dri/i915/intel_blit.h
index 9af3147a49..87f52a356e 100644
--- a/src/mesa/drivers/dri/i915/intel_blit.h
+++ b/src/mesa/drivers/dri/i915/intel_blit.h
@@ -40,10 +40,10 @@ extern void intelClearWithBlit(GLcontext *ctx, GLbitfield mask, GLboolean all,
extern void intelEmitCopyBlit( struct intel_context *intel,
GLuint cpp,
GLshort src_pitch,
- GLuint src_buffer,
+ struct buffer *src_buffer,
GLuint src_offset,
GLshort dst_pitch,
- GLuint dst_buffer,
+ struct buffer *dst_buffer,
GLuint dst_offset,
GLshort srcx, GLshort srcy,
GLshort dstx, GLshort dsty,
@@ -52,7 +52,7 @@ extern void intelEmitCopyBlit( struct intel_context *intel,
extern void intelEmitFillBlit( struct intel_context *intel,
GLuint cpp,
GLshort dst_pitch,
- GLuint dst_buffer,
+ struct buffer *dst_buffer,
GLuint dst_offset,
GLshort x, GLshort y,
GLshort w, GLshort h,
diff --git a/src/mesa/drivers/dri/i915/intel_buffer_objects.c b/src/mesa/drivers/dri/i915/intel_buffer_objects.c
index 9ef14268d5..9bd7d8b416 100644
--- a/src/mesa/drivers/dri/i915/intel_buffer_objects.c
+++ b/src/mesa/drivers/dri/i915/intel_buffer_objects.c
@@ -52,7 +52,7 @@ static struct gl_buffer_object *intel_bufferobj_alloc( GLcontext *ctx,
/* XXX: We generate our own handle, which is different to 'name' above.
*/
- bmGenBuffers(intel->bm, 1, &obj->buffer, 0);
+ bmGenBuffers(intel, "bufferobj", 1, &obj->buffer, 0);
return &obj->Base;
}
@@ -71,7 +71,7 @@ static void intel_bufferobj_free( GLcontext *ctx,
assert(intel_obj);
if (intel_obj->buffer)
- bmDeleteBuffers( intel->bm, 1, &intel_obj->buffer );
+ bmDeleteBuffers( intel, 1, &intel_obj->buffer );
_mesa_free(intel_obj);
}
@@ -102,7 +102,7 @@ static void intel_bufferobj_data( GLcontext *ctx,
obj->Size = size;
obj->Usage = usage;
- bmBufferData(intel->bm, intel_obj->buffer, size, data, 0);
+ bmBufferData(intel, intel_obj->buffer, size, data, 0);
}
@@ -123,7 +123,7 @@ static void intel_bufferobj_subdata( GLcontext *ctx,
struct intel_buffer_object *intel_obj = intel_buffer_object(obj);
assert(intel_obj);
- bmBufferSubData(intel->bm, intel_obj->buffer, offset, size, data);
+ bmBufferSubData(intel, intel_obj->buffer, offset, size, data);
}
@@ -141,7 +141,7 @@ static void intel_bufferobj_get_subdata( GLcontext *ctx,
struct intel_buffer_object *intel_obj = intel_buffer_object(obj);
assert(intel_obj);
- bmBufferGetSubData(intel->bm, intel_obj->buffer, offset, size, data);
+ bmBufferGetSubData(intel, intel_obj->buffer, offset, size, data);
}
@@ -160,7 +160,7 @@ static void *intel_bufferobj_map( GLcontext *ctx,
/* XXX: Translate access to flags arg below:
*/
assert(intel_obj);
- obj->Pointer = bmMapBuffer(intel->bm, intel_obj->buffer, 0);
+ obj->Pointer = bmMapBuffer(intel, intel_obj->buffer, 0);
return obj->Pointer;
}
@@ -177,12 +177,12 @@ static GLboolean intel_bufferobj_unmap( GLcontext *ctx,
assert(intel_obj);
assert(obj->Pointer);
- bmUnmapBuffer(intel->bm, intel_obj->buffer);
+ bmUnmapBuffer(intel, intel_obj->buffer);
obj->Pointer = NULL;
return GL_TRUE;
}
-GLuint intel_bufferobj_buffer( const struct intel_buffer_object *intel_obj )
+struct buffer *intel_bufferobj_buffer( const struct intel_buffer_object *intel_obj )
{
return intel_obj->buffer;
}
diff --git a/src/mesa/drivers/dri/i915/intel_buffer_objects.h b/src/mesa/drivers/dri/i915/intel_buffer_objects.h
index 2b7c13d75f..445ddf4273 100644
--- a/src/mesa/drivers/dri/i915/intel_buffer_objects.h
+++ b/src/mesa/drivers/dri/i915/intel_buffer_objects.h
@@ -39,13 +39,13 @@ struct gl_buffer_object;
*/
struct intel_buffer_object {
struct gl_buffer_object Base;
- GLuint buffer; /* the low-level buffer manager's buffer handle */
+ struct buffer *buffer; /* the low-level buffer manager's buffer handle */
};
/* Get the bm buffer associated with a GL bufferobject:
*/
-GLuint intel_bufferobj_buffer( const struct intel_buffer_object *obj );
+struct buffer *intel_bufferobj_buffer( const struct intel_buffer_object *obj );
/* Hook the bufferobject implementation into mesa:
*/
diff --git a/src/mesa/drivers/dri/i915/intel_buffers.c b/src/mesa/drivers/dri/i915/intel_buffers.c
index 7af5d237ef..0893b15454 100644
--- a/src/mesa/drivers/dri/i915/intel_buffers.c
+++ b/src/mesa/drivers/dri/i915/intel_buffers.c
@@ -394,9 +394,8 @@ void intelRotateWindow(struct intel_context *intel,
GLuint srcBuf)
{
intelScreenPrivate *screen = intel->intelScreen;
- const GLuint cpp = screen->cpp;
drm_clip_rect_t fullRect;
- GLuint srcOffset, srcPitch;
+ struct intel_region *src;
const drm_clip_rect_t *clipRects;
int numClipRects;
int i;
@@ -447,34 +446,32 @@ void intelRotateWindow(struct intel_context *intel,
intel->rotated_region,
NULL ); /* ? */
- if (cpp == 4) {
- format = GL_BGRA;
- type = GL_UNSIGNED_BYTE;
- }
- else {
- format = GL_BGR;
- type = GL_UNSIGNED_SHORT_5_6_5_REV;
- }
-
if (srcBuf == BUFFER_BIT_FRONT_LEFT) {
- srcPitch = screen->front.pitch; /* in bytes */
- srcOffset = screen->front.offset; /* bytes */
+ src = intel->front_region;
clipRects = dPriv->pClipRects;
numClipRects = dPriv->numClipRects;
}
else {
- srcPitch = screen->back.pitch; /* in bytes */
- srcOffset = screen->back.offset; /* bytes */
+ src = intel->back_region;
clipRects = dPriv->pBackClipRects;
numClipRects = dPriv->numBackClipRects;
}
+ if (src->cpp == 4) {
+ format = GL_BGRA;
+ type = GL_UNSIGNED_BYTE;
+ }
+ else {
+ format = GL_BGR;
+ type = GL_UNSIGNED_SHORT_5_6_5_REV;
+ }
+
/* set the whole screen up as a texture to avoid alignment issues */
intel->vtbl.meta_tex_rect_source(intel,
- srcOffset, /* XXX */
+ src->buffer,
screen->width,
screen->height,
- srcPitch,
+ src->pitch,
format,
type);
diff --git a/src/mesa/drivers/dri/i915/intel_bufmgr.c b/src/mesa/drivers/dri/i915/intel_bufmgr.c
index 3997245f68..635ae8bad6 100644
--- a/src/mesa/drivers/dri/i915/intel_bufmgr.c
+++ b/src/mesa/drivers/dri/i915/intel_bufmgr.c
@@ -31,7 +31,6 @@
#include "intel_context.h"
#include "intel_ioctl.h"
-#include "hash.h"
#include "simple_list.h"
#include "mm.h"
#include "imports.h"
@@ -40,21 +39,26 @@
#include <unistd.h>
#include <drm.h>
-struct _mesa_HashTable;
+#define FILE_DEBUG_FLAG DEBUG_BUFMGR
/* The buffer manager is really part of the gl_shared_state struct.
* TODO: Organize for the bufmgr to be created/deleted with the shared
* state and stored within the DriverData of that struct. Currently
* there are no mesa callbacks for this.
*/
+struct buffer {
+ drmMMBuf drm_buf;
+ const char *name;
+ int refcount;
+};
+
#define BM_MAX 16
static struct bufmgr
{
_glthread_Mutex mutex; /**< for thread safety */
- int driFd;
int refcount;
- struct _mesa_HashTable *hash;
+ int driFd;
unsigned buf_nr; /* for generating ids */
drmMMPool batchPool;
@@ -115,7 +119,6 @@ bm_intel_Attach(struct intel_context *intel)
_mesa_printf("create new bufmgr for fd %d\n", intel->driFd);
bm->driFd = intel->driFd;
- bm->hash = _mesa_NewHashTable();
bm->refcount = 1;
_glthread_INIT_MUTEX(bm->mutex);
@@ -137,8 +140,12 @@ bm_intel_Attach(struct intel_context *intel)
}
void
-bmGenBuffers(struct bufmgr *bm, unsigned n, unsigned *buffers, unsigned flags)
+bmGenBuffers(struct intel_context *intel,
+ const char *name,
+ unsigned n, struct buffer **buffers, unsigned flags)
{
+ struct bufmgr *bm = intel->bm;
+
LOCK(bm);
{
unsigned i;
@@ -146,52 +153,49 @@ bmGenBuffers(struct bufmgr *bm, unsigned n, unsigned *buffers, unsigned flags)
(flags) ? flags : DRM_MM_TT | DRM_MM_VRAM | DRM_MM_SYSTEM;
for (i = 0; i < n; i++) {
- drmMMBuf *buf = calloc(sizeof(*buf), 1);
+ struct buffer *buf = calloc(sizeof(*buf), 1);
- BM_CKFATAL(drmMMInitBuffer(bm->driFd, bFlags, 12, buf));
- buf->client_priv = ++bm->buf_nr;
- buffers[i] = buf->client_priv;
- _mesa_HashInsert(bm->hash, buffers[i], buf);
+ BM_CKFATAL(drmMMInitBuffer(bm->driFd, bFlags, 12, &buf->drm_buf));
+ buf->refcount = 1;
+ buf->name = name;
+ buffers[i] = buf;
}
}
UNLOCK(bm);
}
void
-bmSetShared(struct bufmgr *bm, unsigned buffer, unsigned flags,
+bmSetShared(struct intel_context *intel, struct buffer *buffer, unsigned flags,
unsigned long offset, void *virtual)
{
+ struct bufmgr *bm = intel->bm;
+
LOCK(bm);
{
- drmMMBuf *buf = _mesa_HashLookup(bm->hash, buffer);
-
- assert(buf);
-
- buf->flags = DRM_MM_NO_EVICT | DRM_MM_SHARED
+ buffer->drm_buf.flags = DRM_MM_NO_EVICT | DRM_MM_SHARED
| DRM_MM_WRITE | DRM_MM_READ;
- buf->flags |= flags & DRM_MM_MEMTYPE_MASK;
- buf->offset = offset;
- buf->virtual = virtual;
- BM_CKFATAL(drmMMAllocBuffer(bm->driFd, 0, NULL, 0, buf));
+ buffer->drm_buf.flags |= flags & DRM_MM_MEMTYPE_MASK;
+ buffer->drm_buf.offset = offset;
+ buffer->drm_buf.virtual = virtual;
+ BM_CKFATAL(drmMMAllocBuffer(bm->driFd, 0, NULL, 0, &buffer->drm_buf));
}
UNLOCK(bm);
}
void
-bmDeleteBuffers(struct bufmgr *bm, unsigned n, unsigned *buffers)
+bmDeleteBuffers(struct intel_context *intel, unsigned n, struct buffer **buffers)
{
+ struct bufmgr *bm = intel->bm;
+
LOCK(bm);
{
unsigned i;
for (i = 0; i < n; i++) {
- drmMMBuf *buf = _mesa_HashLookup(bm->hash, buffers[i]);
+ struct buffer *buf = buffers[i];
- if (buf) {
- BM_CKFATAL(drmMMFreeBuffer(bm->driFd, buf));
-
- _mesa_HashRemove(bm->hash, buffers[i]);
- }
+ if (buf)
+ BM_CKFATAL(drmMMFreeBuffer(bm->driFd, &buf->drm_buf));
}
}
UNLOCK(bm);
@@ -202,12 +206,14 @@ bmDeleteBuffers(struct bufmgr *bm, unsigned n, unsigned *buffers)
*/
void
-bmBufferData(struct bufmgr *bm,
- unsigned buffer, unsigned size, const void *data, unsigned flags)
+bmBufferData(struct intel_context *intel,
+ struct buffer *buffer, unsigned size, const void *data, unsigned flags)
{
+ struct bufmgr *bm = intel->bm;
+
LOCK(bm);
{
- drmMMBuf *buf = (drmMMBuf *) _mesa_HashLookup(bm->hash, buffer);
+ drmMMBuf *buf = &buffer->drm_buf;
DBG("bmBufferData %d sz 0x%x data: %p\n", buffer, size, data);
@@ -243,13 +249,15 @@ bmBufferData(struct bufmgr *bm,
/* Update the buffer in place, in whatever space it is currently resident:
*/
void
-bmBufferSubData(struct bufmgr *bm,
- unsigned buffer,
+bmBufferSubData(struct intel_context *intel,
+ struct buffer *buffer,
unsigned offset, unsigned size, const void *data)
{
+ struct bufmgr *bm = intel->bm;
+
LOCK(bm);
{
- drmMMBuf *buf = (drmMMBuf *) _mesa_HashLookup(bm->hash, buffer);
+ drmMMBuf *buf = &buffer->drm_buf;
DBG("bmBufferSubdata %d offset 0x%x sz 0x%x\n", buffer, offset, size);
@@ -268,13 +276,15 @@ bmBufferSubData(struct bufmgr *bm,
/* Extract data from the buffer:
*/
void
-bmBufferGetSubData(struct bufmgr *bm,
- unsigned buffer,
+bmBufferGetSubData(struct intel_context *intel,
+ struct buffer *buffer,
unsigned offset, unsigned size, void *data)
{
+ struct bufmgr *bm = intel->bm;
+
LOCK(bm);
{
- drmMMBuf *buf = (drmMMBuf *) _mesa_HashLookup(bm->hash, buffer);
+ drmMMBuf *buf = &buffer->drm_buf;
DBG("bmBufferSubdata %d offset 0x%x sz 0x%x\n", buffer, offset, size);
@@ -294,13 +304,15 @@ bmBufferGetSubData(struct bufmgr *bm,
/* Return a pointer to whatever space the buffer is currently resident in:
*/
void *
-bmMapBuffer(struct bufmgr *bm, unsigned buffer, unsigned flags)
+bmMapBuffer(struct intel_context *intel,
+ struct buffer *buffer, unsigned flags)
{
+ struct bufmgr *bm = intel->bm;
void *retval;
LOCK(bm);
{
- drmMMBuf *buf = (drmMMBuf *) _mesa_HashLookup(bm->hash, buffer);
+ drmMMBuf *buf = &buffer->drm_buf;
DBG("bmMapBuffer %d\n", buffer);
DBG("Map: Block is 0x%x\n", &buf->block);
@@ -318,11 +330,14 @@ bmMapBuffer(struct bufmgr *bm, unsigned buffer, unsigned flags)
}
void
-bmUnmapBuffer(struct bufmgr *bm, unsigned buffer)
+bmUnmapBuffer(struct intel_context *intel,
+ struct buffer *buffer)
{
+ struct bufmgr *bm = intel->bm;
+
LOCK(bm);
{
- drmMMBuf *buf = (drmMMBuf *) _mesa_HashLookup(bm->hash, buffer);
+ drmMMBuf *buf = &buffer->drm_buf;
if (!buf)
goto out;
@@ -349,16 +364,14 @@ bmNewBufferList(void)
}
int
-bmAddBuffer(struct bufmgr *bm,
+bmAddBuffer(struct intel_context *intel,
struct _drmMMBufList *list,
- unsigned buffer,
+ struct buffer *buffer,
unsigned flags,
unsigned *memtype_return, unsigned long *offset_return)
{
- drmMMBuf *buf = (drmMMBuf *) _mesa_HashLookup(bm->hash, buffer);
-
- assert(buf);
- return drmMMBufListAdd(list, buf, 0, flags, memtype_return, offset_return);
+ assert(buffer);
+ return drmMMBufListAdd(list, &buffer->drm_buf, 0, flags, memtype_return, offset_return);
}
void
@@ -368,13 +381,10 @@ bmFreeBufferList(struct _drmMMBufList *list)
}
int
-bmScanBufferList(struct bufmgr *bm,
- struct _drmMMBufList *list, unsigned buffer)
+bmScanBufferList(struct intel_context *intel,
+ struct _drmMMBufList *list, struct buffer *buffer)
{
- drmMMBuf *buf = (drmMMBuf *) _mesa_HashLookup(bm->hash, buffer);
-
- assert(buf);
- return drmMMScanBufList(list, buf);
+ return drmMMScanBufList(list, &buffer->drm_buf);
}
/* To be called prior to emitting commands to hardware which reference
@@ -386,10 +396,10 @@ bmScanBufferList(struct bufmgr *bm,
*/
int
-bmValidateBufferList(struct bufmgr *bm,
+bmValidateBufferList(struct intel_context *intel,
struct _drmMMBufList *list, unsigned flags)
{
- BM_CKFATAL(drmMMValidateBuffers(bm->driFd, list));
+ BM_CKFATAL(drmMMValidateBuffers(intel->driFd, list));
return 0;
}
@@ -402,12 +412,12 @@ bmValidateBufferList(struct bufmgr *bm,
* through the drm and without callbacks or whatever into the driver.
*/
unsigned
-bmFenceBufferList(struct bufmgr *bm, struct _drmMMBufList *list)
+bmFenceBufferList(struct intel_context *intel, struct _drmMMBufList *list)
{
drmFence fence;
- BM_CKFATAL(drmMMFenceBuffers(bm->driFd, list));
- BM_CKFATAL(drmEmitFence(bm->driFd, 0, &fence));
+ BM_CKFATAL(drmMMFenceBuffers(intel->driFd, list));
+ BM_CKFATAL(drmEmitFence(intel->driFd, 0, &fence));
return fence.fenceSeq;
}
@@ -419,39 +429,39 @@ bmFenceBufferList(struct bufmgr *bm, struct _drmMMBufList *list)
* For now they can stay, but will likely change/move before final:
*/
unsigned
-bmSetFence(struct bufmgr *bm)
+bmSetFence(struct intel_context *intel)
{
drmFence dFence;
- BM_CKFATAL(drmEmitFence(bm->driFd, 0, &dFence));
+ BM_CKFATAL(drmEmitFence(intel->driFd, 0, &dFence));
return dFence.fenceSeq;
}
int
-bmTestFence(struct bufmgr *bm, unsigned fence)
+bmTestFence(struct intel_context *intel, unsigned fence)
{
drmFence dFence;
int retired;
dFence.fenceType = 0;
dFence.fenceSeq = fence;
- BM_CKFATAL(drmTestFence(bm->driFd, dFence, 0, &retired));
+ BM_CKFATAL(drmTestFence(intel->driFd, dFence, 0, &retired));
return retired;
}
void
-bmFinishFence(struct bufmgr *bm, unsigned fence)
+bmFinishFence(struct intel_context *intel, unsigned fence)
{
drmFence dFence;
dFence.fenceType = 0;
dFence.fenceSeq = fence;
- BM_CKFATAL(drmWaitFence(bm->driFd, dFence));
- bm->initFence = dFence;
+ BM_CKFATAL(drmWaitFence(intel->driFd, dFence));
+ intel->bm->initFence = dFence;
}
unsigned
-bmInitFence(struct bufmgr *bm)
+bmInitFence(struct intel_context *intel)
{
- return bm->initFence.fenceSeq;
+ return intel->bm->initFence.fenceSeq;
}
diff --git a/src/mesa/drivers/dri/i915/intel_bufmgr.h b/src/mesa/drivers/dri/i915/intel_bufmgr.h
index 1c69cf6cbf..3be1656c33 100644
--- a/src/mesa/drivers/dri/i915/intel_bufmgr.h
+++ b/src/mesa/drivers/dri/i915/intel_bufmgr.h
@@ -31,13 +31,11 @@
#include "intel_context.h"
-/* Note that this is destined to be external to Mesa, so don't use GL
- * types like GLuint, etc.
- */
/* The buffer manager context. Opaque.
*/
struct bufmgr;
+struct buffer;
struct bufmgr *bm_intel_Attach(struct intel_context *intel);
@@ -48,30 +46,32 @@ struct bufmgr *bm_intel_Attach(struct intel_context *intel);
* understood, and drivers can just pass the calls through without too
* much thunking.
*/
-void bmGenBuffers(struct bufmgr *, unsigned n, unsigned *buffers,
+void bmGenBuffers(struct intel_context *,
+ const char *name,
+ unsigned n, struct buffer **buffers,
unsigned flags);
-void bmDeleteBuffers(struct bufmgr *, unsigned n, unsigned *buffers);
+void bmDeleteBuffers(struct intel_context *, unsigned n, struct buffer **buffers);
/* The driver has more intimate knowledge of the hardare than a GL
* client would, so flags here is more proscriptive than the usage
* values in the ARB_vbo interface:
*/
-void bmBufferData(struct bufmgr *,
- unsigned buffer,
+void bmBufferData(struct intel_context *,
+ struct buffer *buffer,
unsigned size, const void *data, unsigned flags);
-void bmBufferSubData(struct bufmgr *,
- unsigned buffer,
+void bmBufferSubData(struct intel_context *,
+ struct buffer *buffer,
unsigned offset, unsigned size, const void *data);
-void bmBufferGetSubData(struct bufmgr *,
- unsigned buffer,
+void bmBufferGetSubData(struct intel_context *,
+ struct buffer *buffer,
unsigned offset, unsigned size, void *data);
-void *bmMapBuffer(struct bufmgr *, unsigned buffer, unsigned access);
+void *bmMapBuffer(struct intel_context *, struct buffer *buffer, unsigned access);
-void bmUnmapBuffer(struct bufmgr *, unsigned buffer);
+void bmUnmapBuffer(struct intel_context *, struct buffer *buffer);
/* To be called prior to emitting commands to hardware which reference
* these buffers.
@@ -94,21 +94,21 @@ void bmUnmapBuffer(struct bufmgr *, unsigned buffer);
*/
struct _drmMMBufList *bmNewBufferList(void);
-int bmAddBuffer(struct bufmgr *bm,
+int bmAddBuffer(struct intel_context *,
struct _drmMMBufList *list,
- unsigned buffer,
+ struct buffer *buffer,
unsigned flags,
unsigned *pool_return, unsigned long *offset_return);
-int bmValidateBufferList(struct bufmgr *,
+int bmValidateBufferList(struct intel_context *,
struct _drmMMBufList *, unsigned flags);
-unsigned bmFenceBufferList(struct bufmgr *, struct _drmMMBufList *);
+unsigned bmFenceBufferList(struct intel_context *, struct _drmMMBufList *);
void bmFreeBufferList(struct _drmMMBufList *);
-int bmScanBufferList(struct bufmgr *bm,
- struct _drmMMBufList *list, unsigned buffer);
+int bmScanBufferList(struct intel_context *,
+ struct _drmMMBufList *list, struct buffer *buffer);
/* This functionality is used by the buffer manager, not really sure
* if we need to be exposing it in this way, probably libdrm will
@@ -116,17 +116,11 @@ int bmScanBufferList(struct bufmgr *bm,
*
* For now they can stay, but will likely change/move before final:
*/
-unsigned bmSetFence(struct bufmgr *);
-int bmTestFence(struct bufmgr *, unsigned fence);
-void bmFinishFence(struct bufmgr *, unsigned fence);
-unsigned bmInitFence(struct bufmgr *bm);
-void bmSetShared(struct bufmgr *bm, unsigned buffer,
+unsigned bmSetFence(struct intel_context *);
+int bmTestFence(struct intel_context *, unsigned fence);
+void bmFinishFence(struct intel_context *, unsigned fence);
+unsigned bmInitFence(struct intel_context *);
+void bmSetShared(struct intel_context *, struct buffer *buffer,
unsigned flags, unsigned long offset, void *virtual);
-extern int INTEL_DEBUG;
-
-#define DEBUG_BUFMGR 0x2000
-
-#define DBG(...) do { if (INTEL_DEBUG & DEBUG_BUFMGR) _mesa_printf(__VA_ARGS__); } while(0)
-
#endif
diff --git a/src/mesa/drivers/dri/i915/intel_context.c b/src/mesa/drivers/dri/i915/intel_context.c
index a74018bac7..b7104a08b4 100644
--- a/src/mesa/drivers/dri/i915/intel_context.c
+++ b/src/mesa/drivers/dri/i915/intel_context.c
@@ -215,12 +215,12 @@ static const struct dri_debug_control debug_control[] =
{ "fall", DEBUG_FALLBACKS },
{ "tex", DEBUG_TEXTURE },
{ "ioctl", DEBUG_IOCTL },
- { "prim", DEBUG_PRIMS },
+ { "blit", DEBUG_BLIT },
{ "vert", DEBUG_VERTS },
{ "state", DEBUG_STATE },
{ "verb", DEBUG_VERBOSE },
{ "dri", DEBUG_DRI },
- { "dma", DEBUG_DMA },
+ { "bat", DEBUG_BATCH },
{ "san", DEBUG_SANITY },
{ "sync", DEBUG_SYNC },
{ "sleep", DEBUG_SLEEP },
@@ -363,7 +363,7 @@ void intelFinish( GLcontext *ctx )
{
struct intel_context *intel = intel_context( ctx );
intelFlush( ctx );
- bmFinishFence( intel->bm, intel->batch->last_fence );
+ bmFinishFence( intel, intel->batch->last_fence );
intelCheckFrontRotate(ctx);
}
@@ -508,7 +508,7 @@ GLboolean intelInitContext( struct intel_context *intel,
intel->batch = intel_batchbuffer_alloc( intel );
intel->last_swap_fence_retired = GL_TRUE;
- intel->last_swap_fence = bmInitFence(intel->bm);
+ intel->last_swap_fence = bmInitFence(intel);
intel_recreate_static_regions( intel );
intel_bufferobj_init( intel );
diff --git a/src/mesa/drivers/dri/i915/intel_context.h b/src/mesa/drivers/dri/i915/intel_context.h
index 8f36f03166..c7a4855aee 100644
--- a/src/mesa/drivers/dri/i915/intel_context.h
+++ b/src/mesa/drivers/dri/i915/intel_context.h
@@ -50,6 +50,7 @@
struct intel_region;
struct intel_context;
+struct buffer;
typedef void (*intel_tri_func)(struct intel_context *, intelVertex *, intelVertex *,
intelVertex *);
@@ -158,7 +159,7 @@ struct intel_context
void (*meta_import_pixel_state)( struct intel_context *intel );
GLboolean (*meta_tex_rect_source)( struct intel_context *intel,
- GLuint buffer,
+ struct buffer *buffer,
GLuint offset,
GLuint pitch,
GLuint height,
@@ -428,16 +429,19 @@ extern int INTEL_DEBUG;
#define DEBUG_TEXTURE 0x1
#define DEBUG_STATE 0x2
#define DEBUG_IOCTL 0x4
-#define DEBUG_PRIMS 0x8
+#define DEBUG_BLIT 0x8
#define DEBUG_VERTS 0x10
#define DEBUG_FALLBACKS 0x20
#define DEBUG_VERBOSE 0x40
#define DEBUG_DRI 0x80
-#define DEBUG_DMA 0x100
+#define DEBUG_BATCH 0x100
#define DEBUG_SANITY 0x200
#define DEBUG_SYNC 0x400
#define DEBUG_SLEEP 0x800
#define DEBUG_PIXEL 0x1000
+#define DEBUG_BUFMGR 0x2000
+
+#define DBG(...) do { if (INTEL_DEBUG & FILE_DEBUG_FLAG) _mesa_printf(__VA_ARGS__); } while(0)
#define PCI_CHIP_845_G 0x2562
diff --git a/src/mesa/drivers/dri/i915/intel_ioctl.c b/src/mesa/drivers/dri/i915/intel_ioctl.c
index 535b1b461d..a46c03fd3c 100644
--- a/src/mesa/drivers/dri/i915/intel_ioctl.c
+++ b/src/mesa/drivers/dri/i915/intel_ioctl.c
@@ -43,6 +43,8 @@
#include "drm.h"
#include "intel_bufmgr.h"
+#define FILE_DEBUG_FLAG DEBUG_IOCTL
+
int intelEmitIrqLocked( struct intel_context *intel )
{
drmI830IrqEmit ie;
@@ -60,8 +62,7 @@ int intelEmitIrqLocked( struct intel_context *intel )
exit(1);
}
- if (0)
- fprintf(stderr, "%s --> %d\n", __FUNCTION__, seq );
+ DBG("%s --> %d\n", __FUNCTION__, seq );
return seq;
}
@@ -70,8 +71,7 @@ void intelWaitIrq( struct intel_context *intel, int seq )
{
int ret;
- if (0)
- fprintf(stderr, "%s %d\n", __FUNCTION__, seq );
+ DBG("%s %d\n", __FUNCTION__, seq );
intel->iw.irq_seq = seq;
@@ -97,14 +97,13 @@ void intel_batch_ioctl( struct intel_context *intel,
assert(intel->locked);
assert(used);
- if (0)
- fprintf(stderr, "%s used %d offset %x..%x ignore_cliprects %d\n",
- __FUNCTION__,
- used,
- start_offset,
- start_offset + used,
- ignore_cliprects);
-
+ DBG("%s used %d offset %x..%x ignore_cliprects %d\n",
+ __FUNCTION__,
+ used,
+ start_offset,
+ start_offset + used,
+ ignore_cliprects);
+
/* Throw away non-effective packets. Won't work once we have
* hardware contexts which would preserve statechanges beyond a
* single buffer.
@@ -127,20 +126,18 @@ void intel_batch_ioctl( struct intel_context *intel,
batch.DR4 = ((((GLuint)intel->drawX) & 0xffff) |
(((GLuint)intel->drawY) << 16));
- if (INTEL_DEBUG & DEBUG_DMA)
- fprintf(stderr, "%s: 0x%x..0x%x DR4: %x cliprects: %d\n",
- __FUNCTION__,
- batch.start,
- batch.start + batch.used * 4,
- batch.DR4, batch.num_cliprects);
-#if 1
+ DBG("%s: 0x%x..0x%x DR4: %x cliprects: %d\n",
+ __FUNCTION__,
+ batch.start,
+ batch.start + batch.used * 4,
+ batch.DR4, batch.num_cliprects);
+
if (drmCommandWrite (intel->driFd, DRM_I830_BATCHBUFFER, &batch,
sizeof(batch))) {
fprintf(stderr, "DRM_I830_BATCHBUFFER: %d\n", -errno);
UNLOCK_HARDWARE(intel);
exit(1);
}
-#endif
/* FIXME: use hardware contexts to avoid 'losing' hardware after
* each buffer flush.
diff --git a/src/mesa/drivers/dri/i915/intel_mipmap_tree.c b/src/mesa/drivers/dri/i915/intel_mipmap_tree.c
index 97e76c4c80..5cc36a520e 100644
--- a/src/mesa/drivers/dri/i915/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i915/intel_mipmap_tree.c
@@ -31,6 +31,8 @@
#include "intel_bufmgr.h"
#include "enums.h"
+#define FILE_DEBUG_FLAG DEBUG_TEXTURE
+
static GLenum target_to_target( GLenum target )
{
switch (target) {
diff --git a/src/mesa/drivers/dri/i915/intel_pixel_draw.c b/src/mesa/drivers/dri/i915/intel_pixel_draw.c
index 3d38c529ce..52d6856184 100644
--- a/src/mesa/drivers/dri/i915/intel_pixel_draw.c
+++ b/src/mesa/drivers/dri/i915/intel_pixel_draw.c
@@ -218,7 +218,7 @@ static GLboolean do_blit_drawpixels( GLcontext *ctx,
struct intel_buffer_object *src = intel_buffer_object(unpack->BufferObj);
GLuint src_offset;
GLuint rowLength;
- GLuint fence = bmInitFence(intel->bm);
+ GLuint fence = bmInitFence(intel);
if (INTEL_DEBUG & DEBUG_PIXEL)
_mesa_printf("%s\n", __FUNCTION__);
@@ -329,7 +329,7 @@ static GLboolean do_blit_drawpixels( GLcontext *ctx,
UNLOCK_HARDWARE( intel );
if (intel->driDrawable->numClipRects)
- bmFinishFence(intel->bm, fence);
+ bmFinishFence(intel, fence);
if (INTEL_DEBUG & DEBUG_PIXEL)
_mesa_printf("%s - DONE\n", __FUNCTION__);
diff --git a/src/mesa/drivers/dri/i915/intel_pixel_read.c b/src/mesa/drivers/dri/i915/intel_pixel_read.c
index 027b31115e..7a5740fae8 100644
--- a/src/mesa/drivers/dri/i915/intel_pixel_read.c
+++ b/src/mesa/drivers/dri/i915/intel_pixel_read.c
@@ -184,7 +184,7 @@ static GLboolean do_blit_readpixels( GLcontext *ctx,
struct intel_buffer_object *dst = intel_buffer_object(pack->BufferObj);
GLuint dst_offset;
GLuint rowLength;
- GLuint fence = bmInitFence(intel->bm);
+ GLuint fence = bmInitFence(intel);
if (INTEL_DEBUG & DEBUG_PIXEL)
_mesa_printf("%s\n", __FUNCTION__);
@@ -287,7 +287,7 @@ static GLboolean do_blit_readpixels( GLcontext *ctx,
UNLOCK_HARDWARE( intel );
if (intel->driDrawable->numClipRects)
- bmFinishFence(intel->bm, fence);
+ bmFinishFence(intel, fence);
if (INTEL_DEBUG & DEBUG_PIXEL)
_mesa_printf("%s - DONE\n", __FUNCTION__);
diff --git a/src/mesa/drivers/dri/i915/intel_regions.c b/src/mesa/drivers/dri/i915/intel_regions.c
index f2932fd004..5c874625e7 100644
--- a/src/mesa/drivers/dri/i915/intel_regions.c
+++ b/src/mesa/drivers/dri/i915/intel_regions.c
@@ -44,13 +44,16 @@
#include "intel_blit.h"
#include "intel_bufmgr.h"
+#define FILE_DEBUG_FLAG DEBUG_BUFMGR
+
+
/* XXX: Thread safety?
*/
GLubyte *intel_region_map(struct intel_context *intel, struct intel_region *region)
{
DBG("%s\n", __FUNCTION__);
if (!region->map_refcount++) {
- region->map = bmMapBuffer(intel->bm, region->buffer, 0);
+ region->map = bmMapBuffer(intel, region->buffer, 0);
}
return region->map;
@@ -61,7 +64,7 @@ void intel_region_unmap(struct intel_context *intel,
{
DBG("%s\n", __FUNCTION__);
if (!--region->map_refcount) {
- bmUnmapBuffer(intel->bm, region->buffer);
+ bmUnmapBuffer(intel, region->buffer);
region->map = NULL;
}
}
@@ -80,8 +83,8 @@ struct intel_region *intel_region_alloc( struct intel_context *intel,
region->height = height; /* needed? */
region->refcount = 1;
- bmGenBuffers(intel->bm, 1, &region->buffer, 0);
- bmBufferData(intel->bm, region->buffer, pitch * cpp * height, NULL, 0);
+ bmGenBuffers(intel, "region", 1, &region->buffer, 0);
+ bmBufferData(intel, region->buffer, pitch * cpp * height, NULL, 0);
return region;
}
@@ -109,7 +112,7 @@ void intel_region_release( struct intel_context *intel,
if ((*region)->refcount == 0) {
assert((*region)->map_refcount == 0);
- bmDeleteBuffers(intel->bm, 1, &(*region)->buffer);
+ bmDeleteBuffers(intel, 1, &(*region)->buffer);
free(*region);
}
*region = NULL;
@@ -137,8 +140,8 @@ struct intel_region *intel_region_create_static( struct intel_context *intel,
* shared by others.
*/
- bmGenBuffers(intel->bm, 1, &region->buffer, DRM_MM_TT | DRM_MM_SHARED);
- bmSetShared(intel->bm, region->buffer, DRM_MM_TT, offset, virtual);
+ bmGenBuffers(intel, "static region", 1, &region->buffer, DRM_MM_TT | DRM_MM_SHARED);
+ bmSetShared(intel, region->buffer, DRM_MM_TT, offset, virtual);
return region;
}
diff --git a/src/mesa/drivers/dri/i915/intel_regions.h b/src/mesa/drivers/dri/i915/intel_regions.h
index c8173ae67f..eb744dfda5 100644
--- a/src/mesa/drivers/dri/i915/intel_regions.h
+++ b/src/mesa/drivers/dri/i915/intel_regions.h
@@ -41,7 +41,7 @@ struct intel_context;
* - Blitter commands for copying 2D regions between buffers. (really???)
*/
struct intel_region {
- GLuint buffer; /**< buffer manager's buffer ID */
+ struct buffer *buffer; /**< buffer manager's buffer ID */
GLuint refcount; /**< Reference count for region */
GLuint cpp; /**< bytes per pixel */
GLuint pitch; /**< in pixels */
diff --git a/src/mesa/drivers/dri/i915/intel_tex_image.c b/src/mesa/drivers/dri/i915/intel_tex_image.c
index b1a501ad84..c67e58533f 100644
--- a/src/mesa/drivers/dri/i915/intel_tex_image.c
+++ b/src/mesa/drivers/dri/i915/intel_tex_image.c
@@ -18,10 +18,12 @@
#include "intel_context.h"
#include "intel_mipmap_tree.h"
#include "intel_buffer_objects.h"
+#include "intel_batchbuffer.h"
#include "intel_tex.h"
#include "intel_ioctl.h"
#include "intel_blit.h"
+#define FILE_DEBUG_FLAG DEBUG_TEXTURE
/* Functions to store texture images. Where possible, mipmap_tree's
* will be created or further instantiated with image data, otherwise
diff --git a/src/mesa/drivers/dri/i915/intel_tex_subimage.c b/src/mesa/drivers/dri/i915/intel_tex_subimage.c
index 1424b31bec..258316d1b3 100644
--- a/src/mesa/drivers/dri/i915/intel_tex_subimage.c
+++ b/src/mesa/drivers/dri/i915/intel_tex_subimage.c
@@ -35,6 +35,7 @@
#include "intel_tex.h"
#include "intel_mipmap_tree.h"
+#define FILE_DEBUG_FLAG DEBUG_TEXTURE
static void intelTexSubimage (GLcontext *ctx,
GLint dims,
diff --git a/src/mesa/drivers/dri/i915/intel_tex_validate.c b/src/mesa/drivers/dri/i915/intel_tex_validate.c
index 18a2fee9ed..0941bc1840 100644
--- a/src/mesa/drivers/dri/i915/intel_tex_validate.c
+++ b/src/mesa/drivers/dri/i915/intel_tex_validate.c
@@ -6,6 +6,8 @@
#include "intel_tex.h"
#include "intel_bufmgr.h"
+#define FILE_DEBUG_FLAG DEBUG_TEXTURE
+
/**
* Compute which mipmap levels that really need to be sent to the hardware.
* This depends on the base image size, GL_TEXTURE_MIN_LOD,