i965/wm: surfaces should have the API buffer size, not the drm buffer size
authorSamuel Iglesias Gonsalvez <siglesias@igalia.com>
Fri, 24 Apr 2015 05:02:19 +0000 (07:02 +0200)
committerSamuel Iglesias Gonsalvez <siglesias@igalia.com>
Fri, 25 Sep 2015 06:39:21 +0000 (08:39 +0200)
The returned drm buffer object has a size multiple of 4096 but that should not
be exposed to the API user, which is working with a different size.

As far as I can see this problem is only visible in the calculation of the
length of unsized arrays used in SSBOs, as the implementation of this needs
to query the underlying buffer size via a message.

Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index 61031d29db30b64bd31345d73c9373a75a2026a7..f2aaa0b178ed7e99c94c03a36fa4a75cd9adc1d7 100644 (file)
@@ -948,7 +948,7 @@ brw_upload_ubo_surfaces(struct brw_context *brw,
                                       binding->Offset,
                                       binding->BufferObject->Size - binding->Offset);
             brw_create_constant_surface(brw, bo, binding->Offset,
-                                        bo->size - binding->Offset,
+                                        binding->BufferObject->Size - binding->Offset,
                                         &surf_offsets[i],
                                         dword_pitch);
          }
@@ -965,7 +965,7 @@ brw_upload_ubo_surfaces(struct brw_context *brw,
                                       binding->Offset,
                                       binding->BufferObject->Size - binding->Offset);
             brw_create_buffer_surface(brw, bo, binding->Offset,
-                                      bo->size - binding->Offset,
+                                      binding->BufferObject->Size - binding->Offset,
                                       &surf_offsets[i],
                                       dword_pitch);
          }