intel: Take advantage of GL_READ_ONLY_ARB to map to GEM bo_map write flag.
authorEric Anholt <eric@anholt.net>
Wed, 22 Apr 2009 23:24:42 +0000 (16:24 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 23 Apr 2009 18:13:04 +0000 (11:13 -0700)
This is a CPU win in general, but in particular reduces the pain of
Mesa's calculation of min/max indices in DrawElements (wtf?).

src/mesa/drivers/dri/i965/brw_curbe.c
src/mesa/drivers/dri/intel/intel_buffer_objects.c

index 18b187ed1dc3a5cd379d4bd2c83a236708e10892..03371564e13c913a43f9fcb45c8875181b61e138 100644 (file)
@@ -353,10 +353,10 @@ update_constant_buffer(struct brw_context *brw,
       assert(const_buffer);
       assert(const_buffer->size >= size);
 
-      dri_bo_map(const_buffer, GL_TRUE);
+      drm_intel_gem_bo_map_gtt(const_buffer);
       map = const_buffer->virtual;
       memcpy(map, params->ParameterValues, size);
-      dri_bo_unmap(const_buffer);
+      drm_intel_gem_bo_unmap_gtt(const_buffer);
 
       if (0) {
          int i;
index b7c7eeb368ff09a047c100bed74df426d56918d9..c849e4869e5f55482ef05c3b5f101acab888f271 100644 (file)
@@ -204,9 +204,8 @@ intel_bufferobj_map(GLcontext * ctx,
 {
    struct intel_context *intel = intel_context(ctx);
    struct intel_buffer_object *intel_obj = intel_buffer_object(obj);
+   GLboolean read_only = (access == GL_READ_ONLY_ARB);
 
-   /* XXX: Translate access to flags arg below:
-    */
    assert(intel_obj);
 
    if (intel_obj->region)
@@ -217,7 +216,7 @@ intel_bufferobj_map(GLcontext * ctx,
       return NULL;
    }
 
-   dri_bo_map(intel_obj->buffer, GL_TRUE);
+   dri_bo_map(intel_obj->buffer, !read_only);
    obj->Pointer = intel_obj->buffer->virtual;
    return obj->Pointer;
 }