i965: Revert the VBOs-in-system-memory hack.
authorEric Anholt <eric@anholt.net>
Thu, 5 Jul 2012 20:43:43 +0000 (13:43 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 11 Jul 2012 16:20:21 +0000 (09:20 -0700)
It didn't change performance on Lightsmark or Nexuiz, which both used
DYNAMIC_DRAW buffers, but it was killing performance (40% CPU wasted pwriting
buffers) on a closed-source app we're looking at.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/intel/intel_buffer_objects.c

index d2a0709768842739ebb97d2b85798fe2907ddec6..ef511e6a34e7c23f1f9ca8a1251773d1758a2e70 100644 (file)
@@ -140,15 +140,11 @@ intel_bufferobj_data(struct gl_context * ctx,
    intel_obj->sys_buffer = NULL;
 
    if (size != 0) {
-      if (usage == GL_DYNAMIC_DRAW
 #ifdef I915
-         /* On pre-965, stick VBOs in system memory, as we're always doing
-          * swtnl with their contents anyway.
-          */
-         || target == GL_ARRAY_BUFFER || target == GL_ELEMENT_ARRAY_BUFFER
-#endif
-        )
-      {
+      /* On pre-965, stick VBOs in system memory, as we're always doing
+       * swtnl with their contents anyway.
+       */
+      if (target == GL_ARRAY_BUFFER || target == GL_ELEMENT_ARRAY_BUFFER) {
         intel_obj->sys_buffer = malloc(size);
         if (intel_obj->sys_buffer != NULL) {
            if (data != NULL)
@@ -156,6 +152,7 @@ intel_bufferobj_data(struct gl_context * ctx,
            return true;
         }
       }
+#endif
       intel_bufferobj_alloc_buffer(intel, intel_obj);
       if (!intel_obj->buffer)
          return false;