<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Nov 9, 2017 at 12:45 AM, Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Having this separate could potentially make programs that rebind atomics<br>
but no other surfaces ever so slightly faster.  But it's a tiny amount<br>
of code to add to the existing UBO/SSBO atom, and very related.<br>
<br>
The extra atoms have a cost on every draw call, and so dropping some of<br>
them would be nice.  This also reclaims a dirty bit.<br>
---<br>
 src/mesa/drivers/dri/i965/brw_<wbr>context.h           |  6 --<br>
 src/mesa/drivers/dri/i965/brw_<wbr>gs_surface_state.c  | 22 ------<br>
 src/mesa/drivers/dri/i965/brw_<wbr>state.h             |  6 --<br>
 src/mesa/drivers/dri/i965/brw_<wbr>state_upload.c      |  3 +-<br>
 src/mesa/drivers/dri/i965/brw_<wbr>tcs_surface_state.c | 23 ------<br>
 src/mesa/drivers/dri/i965/brw_<wbr>tes_surface_state.c | 23 ------<br>
 src/mesa/drivers/dri/i965/brw_<wbr>vs_surface_state.c  | 22 ------<br>
 src/mesa/drivers/dri/i965/brw_<wbr>wm_surface_state.c  | 87 ++++-------------------<br>
 src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c     | 11 ---<br>
 src/mesa/drivers/dri/i965/<wbr>intel_buffer_objects.c  |  2 +-<br>
 10 files changed, 16 insertions(+), 189 deletions(-)<br>
<br>
Total diffstat for the series:<br>
<br>
 18 files changed, 54 insertions(+), 416 deletions(-)<br></blockquote><div><br></div><div>Nice!  Patches 2 and 3 are</div><div><br></div><div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_context.h b/src/mesa/drivers/dri/i965/<wbr>brw_context.h<br>
index 5d19a6bfc9a..60279dbde46 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_context.h<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_context.h<br>
@@ -195,7 +195,6 @@ enum brw_state_id {<br>
    BRW_STATE_RASTERIZER_DISCARD,<br>
    BRW_STATE_STATS_WM,<br>
    BRW_STATE_UNIFORM_BUFFER,<br>
-   BRW_STATE_ATOMIC_BUFFER,<br>
    BRW_STATE_IMAGE_UNITS,<br>
    BRW_STATE_META_IN_PROGRESS,<br>
    BRW_STATE_PUSH_CONSTANT_<wbr>ALLOCATION,<br>
@@ -288,7 +287,6 @@ enum brw_state_id {<br>
 #define BRW_NEW_RASTERIZER_DISCARD      (1ull << BRW_STATE_RASTERIZER_DISCARD)<br>
 #define BRW_NEW_STATS_WM                (1ull << BRW_STATE_STATS_WM)<br>
 #define BRW_NEW_UNIFORM_BUFFER          (1ull << BRW_STATE_UNIFORM_BUFFER)<br>
-#define BRW_NEW_ATOMIC_BUFFER           (1ull << BRW_STATE_ATOMIC_BUFFER)<br>
 #define BRW_NEW_IMAGE_UNITS             (1ull << BRW_STATE_IMAGE_UNITS)<br>
 #define BRW_NEW_META_IN_PROGRESS        (1ull << BRW_STATE_META_IN_PROGRESS)<br>
 #define BRW_NEW_PUSH_CONSTANT_<wbr>ALLOCATION (1ull << BRW_STATE_PUSH_CONSTANT_<wbr>ALLOCATION)<br>
@@ -1406,10 +1404,6 @@ brw_update_sol_surface(struct brw_context *brw,<br>
 void brw_upload_ubo_surfaces(struct brw_context *brw, struct gl_program *prog,<br>
                              struct brw_stage_state *stage_state,<br>
                              struct brw_stage_prog_data *prog_data);<br>
-void brw_upload_abo_surfaces(struct brw_context *brw,<br>
-                             const struct gl_program *prog,<br>
-                             struct brw_stage_state *stage_state,<br>
-                             struct brw_stage_prog_data *prog_data);<br>
 void brw_upload_image_surfaces(<wbr>struct brw_context *brw,<br>
                                const struct gl_program *prog,<br>
                                struct brw_stage_state *stage_state,<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_gs_surface_state.c b/src/mesa/drivers/dri/i965/<wbr>brw_gs_surface_state.c<br>
index 570f3fb4dd2..6f2629eb29d 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_gs_surface_state.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_gs_surface_state.c<br>
@@ -91,28 +91,6 @@ const struct brw_tracked_state brw_gs_ubo_surfaces = {<br>
    .emit = brw_upload_gs_ubo_surfaces,<br>
 };<br>
<br>
-static void<br>
-brw_upload_gs_abo_surfaces(<wbr>struct brw_context *brw)<br>
-{<br>
-   /* _NEW_PROGRAM */<br>
-   const struct gl_program *gp = brw->programs[MESA_SHADER_<wbr>GEOMETRY];<br>
-<br>
-   if (gp) {<br>
-      /* BRW_NEW_GS_PROG_DATA */<br>
-      brw_upload_abo_surfaces(brw, gp, &brw->gs.base, brw->gs.base.prog_data);<br>
-   }<br>
-}<br>
-<br>
-const struct brw_tracked_state brw_gs_abo_surfaces = {<br>
-   .dirty = {<br>
-      .mesa = _NEW_PROGRAM,<br>
-      .brw = BRW_NEW_ATOMIC_BUFFER |<br>
-             BRW_NEW_BATCH |<br>
-             BRW_NEW_GS_PROG_DATA,<br>
-   },<br>
-   .emit = brw_upload_gs_abo_surfaces,<br>
-};<br>
-<br>
 static void<br>
 brw_upload_gs_image_surfaces(<wbr>struct brw_context *brw)<br>
 {<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_state.h b/src/mesa/drivers/dri/i965/<wbr>brw_state.h<br>
index 927e77920ef..f668b807fc7 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_state.h<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_state.h<br>
@@ -58,16 +58,12 @@ extern const struct brw_tracked_state brw_recalculate_urb_fence;<br>
 extern const struct brw_tracked_state brw_sf_vp;<br>
 extern const struct brw_tracked_state brw_cs_texture_surfaces;<br>
 extern const struct brw_tracked_state brw_vs_ubo_surfaces;<br>
-extern const struct brw_tracked_state brw_vs_abo_surfaces;<br>
 extern const struct brw_tracked_state brw_vs_image_surfaces;<br>
 extern const struct brw_tracked_state brw_tcs_ubo_surfaces;<br>
-extern const struct brw_tracked_state brw_tcs_abo_surfaces;<br>
 extern const struct brw_tracked_state brw_tcs_image_surfaces;<br>
 extern const struct brw_tracked_state brw_tes_ubo_surfaces;<br>
-extern const struct brw_tracked_state brw_tes_abo_surfaces;<br>
 extern const struct brw_tracked_state brw_tes_image_surfaces;<br>
 extern const struct brw_tracked_state brw_gs_ubo_surfaces;<br>
-extern const struct brw_tracked_state brw_gs_abo_surfaces;<br>
 extern const struct brw_tracked_state brw_gs_image_surfaces;<br>
 extern const struct brw_tracked_state brw_renderbuffer_surfaces;<br>
 extern const struct brw_tracked_state brw_renderbuffer_read_<wbr>surfaces;<br>
@@ -78,10 +74,8 @@ extern const struct brw_tracked_state brw_tes_binding_table;<br>
 extern const struct brw_tracked_state brw_tcs_binding_table;<br>
 extern const struct brw_tracked_state brw_vs_binding_table;<br>
 extern const struct brw_tracked_state brw_wm_ubo_surfaces;<br>
-extern const struct brw_tracked_state brw_wm_abo_surfaces;<br>
 extern const struct brw_tracked_state brw_wm_image_surfaces;<br>
 extern const struct brw_tracked_state brw_cs_ubo_surfaces;<br>
-extern const struct brw_tracked_state brw_cs_abo_surfaces;<br>
 extern const struct brw_tracked_state brw_cs_image_surfaces;<br>
<br>
 extern const struct brw_tracked_state brw_psp_urb_cbs;<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_state_upload.c b/src/mesa/drivers/dri/i965/<wbr>brw_state_upload.c<br>
index f54e15e92bf..4867d8fba70 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_state_upload.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_state_upload.c<br>
@@ -210,7 +210,7 @@ void brw_init_state( struct brw_context *brw )<br>
    ctx->DriverFlags.<wbr>NewUniformBuffer = BRW_NEW_UNIFORM_BUFFER;<br>
    ctx->DriverFlags.<wbr>NewShaderStorageBuffer = BRW_NEW_UNIFORM_BUFFER;<br>
    ctx->DriverFlags.<wbr>NewTextureBuffer = BRW_NEW_TEXTURE_BUFFER;<br>
-   ctx->DriverFlags.<wbr>NewAtomicBuffer = BRW_NEW_ATOMIC_BUFFER;<br>
+   ctx->DriverFlags.<wbr>NewAtomicBuffer = BRW_NEW_UNIFORM_BUFFER;<br>
    ctx->DriverFlags.NewImageUnits = BRW_NEW_IMAGE_UNITS;<br>
    ctx->DriverFlags.<wbr>NewDefaultTessLevels = BRW_NEW_DEFAULT_TESS_LEVELS;<br>
    ctx->DriverFlags.<wbr>NewIntelConservativeRasterizat<wbr>ion = BRW_NEW_CONSERVATIVE_<wbr>RASTERIZATION;<br>
@@ -329,7 +329,6 @@ static struct dirty_bit_map brw_bits[] = {<br>
    DEFINE_BIT(BRW_NEW_RASTERIZER_<wbr>DISCARD),<br>
    DEFINE_BIT(BRW_NEW_STATS_WM),<br>
    DEFINE_BIT(BRW_NEW_UNIFORM_<wbr>BUFFER),<br>
-   DEFINE_BIT(BRW_NEW_ATOMIC_<wbr>BUFFER),<br>
    DEFINE_BIT(BRW_NEW_IMAGE_<wbr>UNITS),<br>
    DEFINE_BIT(BRW_NEW_META_IN_<wbr>PROGRESS),<br>
    DEFINE_BIT(BRW_NEW_PUSH_<wbr>CONSTANT_ALLOCATION),<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_tcs_surface_state.c b/src/mesa/drivers/dri/i965/<wbr>brw_tcs_surface_state.c<br>
index f4f9abc0620..73179c006a0 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_tcs_surface_state.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_tcs_surface_state.c<br>
@@ -91,29 +91,6 @@ const struct brw_tracked_state brw_tcs_ubo_surfaces = {<br>
    .emit = brw_upload_tcs_ubo_surfaces,<br>
 };<br>
<br>
-static void<br>
-brw_upload_tcs_abo_surfaces(<wbr>struct brw_context *brw)<br>
-{<br>
-   /* _NEW_PROGRAM */<br>
-   const struct gl_program *tcp = brw->programs[MESA_SHADER_<wbr>TESS_CTRL];<br>
-<br>
-   if (tcp) {<br>
-      /* BRW_NEW_TCS_PROG_DATA */<br>
-      brw_upload_abo_surfaces(brw, tcp, &brw->tcs.base,<br>
-                              brw->tcs.base.prog_data);<br>
-   }<br>
-}<br>
-<br>
-const struct brw_tracked_state brw_tcs_abo_surfaces = {<br>
-   .dirty = {<br>
-      .mesa = _NEW_PROGRAM,<br>
-      .brw = BRW_NEW_ATOMIC_BUFFER |<br>
-             BRW_NEW_BATCH |<br>
-             BRW_NEW_TCS_PROG_DATA,<br>
-   },<br>
-   .emit = brw_upload_tcs_abo_surfaces,<br>
-};<br>
-<br>
 static void<br>
 brw_upload_tcs_image_surfaces(<wbr>struct brw_context *brw)<br>
 {<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_tes_surface_state.c b/src/mesa/drivers/dri/i965/<wbr>brw_tes_surface_state.c<br>
index 85b285d8688..6e9e58a4f17 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_tes_surface_state.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_tes_surface_state.c<br>
@@ -91,29 +91,6 @@ const struct brw_tracked_state brw_tes_ubo_surfaces = {<br>
    .emit = brw_upload_tes_ubo_surfaces,<br>
 };<br>
<br>
-static void<br>
-brw_upload_tes_abo_surfaces(<wbr>struct brw_context *brw)<br>
-{<br>
-   /* _NEW_PROGRAM */<br>
-   const struct gl_program *tep = brw->programs[MESA_SHADER_<wbr>TESS_EVAL];<br>
-<br>
-   if (tep) {<br>
-      /* BRW_NEW_TES_PROG_DATA */<br>
-      brw_upload_abo_surfaces(brw, tep, &brw->tes.base,<br>
-                              brw->tes.base.prog_data);<br>
-   }<br>
-}<br>
-<br>
-const struct brw_tracked_state brw_tes_abo_surfaces = {<br>
-   .dirty = {<br>
-      .mesa = _NEW_PROGRAM,<br>
-      .brw = BRW_NEW_ATOMIC_BUFFER |<br>
-             BRW_NEW_BATCH |<br>
-             BRW_NEW_TES_PROG_DATA,<br>
-   },<br>
-   .emit = brw_upload_tes_abo_surfaces,<br>
-};<br>
-<br>
 static void<br>
 brw_upload_tes_image_surfaces(<wbr>struct brw_context *brw)<br>
 {<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_vs_surface_state.c b/src/mesa/drivers/dri/i965/<wbr>brw_vs_surface_state.c<br>
index 24c22e087d9..289c791b872 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_vs_surface_state.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_vs_surface_state.c<br>
@@ -93,28 +93,6 @@ const struct brw_tracked_state brw_vs_ubo_surfaces = {<br>
    .emit = brw_upload_vs_ubo_surfaces,<br>
 };<br>
<br>
-static void<br>
-brw_upload_vs_abo_surfaces(<wbr>struct brw_context *brw)<br>
-{<br>
-   /* _NEW_PROGRAM */<br>
-   const struct gl_program *vp = brw->programs[MESA_SHADER_<wbr>VERTEX];<br>
-<br>
-   if (vp) {<br>
-      /* BRW_NEW_VS_PROG_DATA */<br>
-      brw_upload_abo_surfaces(brw, vp, &brw->vs.base, brw->vs.base.prog_data);<br>
-   }<br>
-}<br>
-<br>
-const struct brw_tracked_state brw_vs_abo_surfaces = {<br>
-   .dirty = {<br>
-      .mesa = _NEW_PROGRAM,<br>
-      .brw = BRW_NEW_ATOMIC_BUFFER |<br>
-             BRW_NEW_BATCH |<br>
-             BRW_NEW_VS_PROG_DATA,<br>
-   },<br>
-   .emit = brw_upload_vs_abo_surfaces,<br>
-};<br>
-<br>
 static void<br>
 brw_upload_vs_image_surfaces(<wbr>struct brw_context *brw)<br>
 {<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/<wbr>brw_wm_surface_state.c<br>
index 0653fbfe798..0183da45bf1 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_wm_surface_state.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_wm_surface_state.c<br>
@@ -1266,7 +1266,9 @@ brw_upload_ubo_surfaces(struct brw_context *brw, struct gl_program *prog,<br>
 {<br>
    struct gl_context *ctx = &brw->ctx;<br>
<br>
-   if (!prog)<br>
+   if (!prog || (prog->info.num_ubos == 0 &&<br>
+                 prog->info.num_ssbos == 0 &&<br>
+                 prog->info.num_abos == 0))<br>
       return;<br>
<br>
    uint32_t *ubo_surf_offsets =<br>
@@ -1279,9 +1281,16 @@ brw_upload_ubo_surfaces(struct brw_context *brw, struct gl_program *prog,<br>
                             ISL_FORMAT_R32G32B32A32_FLOAT, 0);<br>
    }<br>
<br>
-   uint32_t *ssbo_surf_offsets =<br>
-      &stage_state->surf_offset[<wbr>prog_data->binding_table.ssbo_<wbr>start] +<br>
-      prog->info.num_abos;<br>
+   uint32_t *abo_surf_offsets =<br>
+      &stage_state->surf_offset[<wbr>prog_data->binding_table.ssbo_<wbr>start];<br>
+   uint32_t *ssbo_surf_offsets = abo_surf_offsets + prog->info.num_abos;<br>
+<br>
+   for (int i = 0; i < prog->info.num_abos; i++) {<br>
+      struct gl_buffer_binding *binding =<br>
+         &ctx->AtomicBufferBindings[<wbr>prog->sh.AtomicBuffers[i]-><wbr>Binding];<br>
+      upload_buffer_surface(brw, binding, &abo_surf_offsets[i],<br>
+                            ISL_FORMAT_RAW, RELOC_WRITE);<br>
+   }<br>
<br>
    for (int i = 0; i < prog->info.num_ssbos; i++) {<br>
       struct gl_buffer_binding *binding =<br>
@@ -1292,9 +1301,7 @@ brw_upload_ubo_surfaces(struct brw_context *brw, struct gl_program *prog,<br>
    }<br>
<br>
    stage_state->push_constants_<wbr>dirty = true;<br>
-<br>
-   if (prog->info.num_ubos || prog->info.num_ssbos)<br>
-      brw->ctx.NewDriverState |= BRW_NEW_SURFACES;<br>
+   brw->ctx.NewDriverState |= BRW_NEW_SURFACES;<br>
 }<br>
<br>
 static void<br>
@@ -1340,72 +1347,6 @@ const struct brw_tracked_state brw_cs_ubo_surfaces = {<br>
    .emit = brw_upload_cs_ubo_surfaces,<br>
 };<br>
<br>
-void<br>
-brw_upload_abo_surfaces(<wbr>struct brw_context *brw,<br>
-                        const struct gl_program *prog,<br>
-                        struct brw_stage_state *stage_state,<br>
-                        struct brw_stage_prog_data *prog_data)<br>
-{<br>
-   struct gl_context *ctx = &brw->ctx;<br>
-   uint32_t *surf_offsets =<br>
-      &stage_state->surf_offset[<wbr>prog_data->binding_table.ssbo_<wbr>start];<br>
-<br>
-   if (prog->info.num_abos) {<br>
-      for (unsigned i = 0; i < prog->info.num_abos; i++) {<br>
-         struct gl_buffer_binding *binding =<br>
-            &ctx->AtomicBufferBindings[<wbr>prog->sh.AtomicBuffers[i]-><wbr>Binding];<br>
-         upload_buffer_surface(brw, binding, &surf_offsets[i],<br>
-                               ISL_FORMAT_RAW, RELOC_WRITE);<br>
-      }<br>
-<br>
-      brw->ctx.NewDriverState |= BRW_NEW_SURFACES;<br>
-   }<br>
-}<br>
-<br>
-static void<br>
-brw_upload_wm_abo_surfaces(<wbr>struct brw_context *brw)<br>
-{<br>
-   /* _NEW_PROGRAM */<br>
-   const struct gl_program *wm = brw->programs[MESA_SHADER_<wbr>FRAGMENT];<br>
-<br>
-   if (wm) {<br>
-      /* BRW_NEW_FS_PROG_DATA */<br>
-      brw_upload_abo_surfaces(brw, wm, &brw->wm.base, brw->wm.base.prog_data);<br>
-   }<br>
-}<br>
-<br>
-const struct brw_tracked_state brw_wm_abo_surfaces = {<br>
-   .dirty = {<br>
-      .mesa = _NEW_PROGRAM,<br>
-      .brw = BRW_NEW_ATOMIC_BUFFER |<br>
-             BRW_NEW_BATCH |<br>
-             BRW_NEW_FS_PROG_DATA,<br>
-   },<br>
-   .emit = brw_upload_wm_abo_surfaces,<br>
-};<br>
-<br>
-static void<br>
-brw_upload_cs_abo_surfaces(<wbr>struct brw_context *brw)<br>
-{<br>
-   /* _NEW_PROGRAM */<br>
-   const struct gl_program *cp = brw->programs[MESA_SHADER_<wbr>COMPUTE];<br>
-<br>
-   if (cp) {<br>
-      /* BRW_NEW_CS_PROG_DATA */<br>
-      brw_upload_abo_surfaces(brw, cp, &brw->cs.base, brw->cs.base.prog_data);<br>
-   }<br>
-}<br>
-<br>
-const struct brw_tracked_state brw_cs_abo_surfaces = {<br>
-   .dirty = {<br>
-      .mesa = _NEW_PROGRAM,<br>
-      .brw = BRW_NEW_ATOMIC_BUFFER |<br>
-             BRW_NEW_BATCH |<br>
-             BRW_NEW_CS_PROG_DATA,<br>
-   },<br>
-   .emit = brw_upload_cs_abo_surfaces,<br>
-};<br>
-<br>
 static void<br>
 brw_upload_cs_image_surfaces(<wbr>struct brw_context *brw)<br>
 {<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c b/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
index 453b8e4adda..d4b0de850c9 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
@@ -5483,19 +5483,14 @@ genX(init_atoms)(struct brw_context *brw)<br>
        */<br>
       &brw_vs_pull_constants,<br>
       &brw_vs_ubo_surfaces,<br>
-      &brw_vs_abo_surfaces,<br>
       &brw_tcs_pull_constants,<br>
       &brw_tcs_ubo_surfaces,<br>
-      &brw_tcs_abo_surfaces,<br>
       &brw_tes_pull_constants,<br>
       &brw_tes_ubo_surfaces,<br>
-      &brw_tes_abo_surfaces,<br>
       &brw_gs_pull_constants,<br>
       &brw_gs_ubo_surfaces,<br>
-      &brw_gs_abo_surfaces,<br>
       &brw_wm_pull_constants,<br>
       &brw_wm_ubo_surfaces,<br>
-      &brw_wm_abo_surfaces,<br>
       &gen6_renderbuffer_surfaces,<br>
       &brw_renderbuffer_read_<wbr>surfaces,<br>
       &brw_texture_surfaces,<br>
@@ -5575,19 +5570,14 @@ genX(init_atoms)(struct brw_context *brw)<br>
        */<br>
       &brw_vs_pull_constants,<br>
       &brw_vs_ubo_surfaces,<br>
-      &brw_vs_abo_surfaces,<br>
       &brw_tcs_pull_constants,<br>
       &brw_tcs_ubo_surfaces,<br>
-      &brw_tcs_abo_surfaces,<br>
       &brw_tes_pull_constants,<br>
       &brw_tes_ubo_surfaces,<br>
-      &brw_tes_abo_surfaces,<br>
       &brw_gs_pull_constants,<br>
       &brw_gs_ubo_surfaces,<br>
-      &brw_gs_abo_surfaces,<br>
       &brw_wm_pull_constants,<br>
       &brw_wm_ubo_surfaces,<br>
-      &brw_wm_abo_surfaces,<br>
       &gen6_renderbuffer_surfaces,<br>
       &brw_renderbuffer_read_<wbr>surfaces,<br>
       &brw_texture_surfaces,<br>
@@ -5657,7 +5647,6 @@ genX(init_atoms)(struct brw_context *brw)<br>
       &genX(cs_push_constants),<br>
       &genX(cs_pull_constants),<br>
       &brw_cs_ubo_surfaces,<br>
-      &brw_cs_abo_surfaces,<br>
       &brw_cs_texture_surfaces,<br>
       &brw_cs_work_groups_surface,<br>
       &genX(cs_samplers),<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>intel_buffer_objects.c b/src/mesa/drivers/dri/i965/<wbr>intel_buffer_objects.c<br>
index 49e68bd7392..8268040911a 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>intel_buffer_objects.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>intel_buffer_objects.c<br>
@@ -107,7 +107,7 @@ alloc_buffer_object(struct brw_context *brw,<br>
    if (intel_obj->Base.UsageHistory & USAGE_TEXTURE_BUFFER)<br>
       brw->ctx.NewDriverState |= BRW_NEW_TEXTURE_BUFFER;<br>
    if (intel_obj->Base.UsageHistory & USAGE_ATOMIC_COUNTER_BUFFER)<br>
-      brw->ctx.NewDriverState |= BRW_NEW_ATOMIC_BUFFER;<br>
+      brw->ctx.NewDriverState |= BRW_NEW_UNIFORM_BUFFER;<br>
<br>
    mark_buffer_inactive(intel_<wbr>obj);<br>
    mark_buffer_invalid(intel_obj)<wbr>;<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.15.0<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>