<div dir="ltr"><div>Fine by me.  All four are<br><br></div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 1, 2017 at 6:56 PM, 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">We never actually used the resource streamer in any shipping build<br>
of Mesa.  We have no plans to do so in the future.  We looked into<br>
using it in Vulkan, and concluded that it was unusable.  We're not<br>
the only ones to arrive at the conclusion that it's not worth using.<br>
<br>
So, drop the last vestiges of resource streamer support and move on.<br>
<br>
Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_<wbr>binding_tables.c | 223 +------------------------<br>
 src/mesa/drivers/dri/i965/brw_<wbr>context.c        |   8 -<br>
 src/mesa/drivers/dri/i965/brw_<wbr>context.h        |   6 -<br>
 src/mesa/drivers/dri/i965/brw_<wbr>defines.h        |  52 ------<br>
 src/mesa/drivers/dri/i965/brw_<wbr>misc_state.c     |  40 -----<br>
 src/mesa/drivers/dri/i965/brw_<wbr>state.h          |  15 --<br>
 src/mesa/drivers/dri/i965/brw_<wbr>state_upload.c   |   4 -<br>
 src/mesa/drivers/dri/i965/<wbr>genX_blorp_exec.c    |   3 -<br>
 src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c  |   6 +-<br>
 src/mesa/drivers/dri/i965/<wbr>intel_screen.c       |   5 -<br>
 src/mesa/drivers/dri/i965/<wbr>intel_screen.h       |   5 -<br>
 11 files changed, 10 insertions(+), 357 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_binding_tables.c b/src/mesa/drivers/dri/i965/<wbr>brw_binding_tables.c<br>
index 9ca841a9de0..2b9ed67e231 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_binding_tables.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_binding_tables.c<br>
@@ -44,41 +44,6 @@<br>
 #include "brw_state.h"<br>
 #include "intel_batchbuffer.h"<br>
<br>
-static const GLuint stage_to_bt_edit[] = {<br>
-   [MESA_SHADER_VERTEX] = _3DSTATE_BINDING_TABLE_EDIT_<wbr>VS,<br>
-   [MESA_SHADER_GEOMETRY] = _3DSTATE_BINDING_TABLE_EDIT_<wbr>GS,<br>
-   [MESA_SHADER_FRAGMENT] = _3DSTATE_BINDING_TABLE_EDIT_<wbr>PS,<br>
-};<br>
-<br>
-static uint32_t<br>
-reserve_hw_bt_space(struct brw_context *brw, unsigned bytes)<br>
-{<br>
-   /* From the Broadwell PRM, Volume 16, "Workarounds",<br>
-    * WaStateBindingTableOverfetch:<br>
-    * "HW over-fetches two cache lines of binding table indices.  When<br>
-    *  using the resource streamer, SW needs to pad binding table pointer<br>
-    *  updates with an additional two cache lines."<br>
-    *<br>
-    * Cache lines are 64 bytes, so we subtract 128 bytes from the size of<br>
-    * the binding table pool buffer.<br>
-    */<br>
-   if (brw->hw_bt_pool.next_offset + bytes >= brw->hw_bt_pool.bo->size - 128) {<br>
-      gen7_reset_hw_bt_pool_offsets(<wbr>brw);<br>
-   }<br>
-<br>
-   uint32_t offset = brw->hw_bt_pool.next_offset;<br>
-<br>
-   /* From the Haswell PRM, Volume 2b: Command Reference: Instructions,<br>
-    * 3DSTATE_BINDING_TABLE_<wbr>POINTERS_xS:<br>
-    *<br>
-    * "If HW Binding Table is enabled, the offset is relative to the<br>
-    *  Binding Table Pool Base Address and the alignment is 64 bytes."<br>
-    */<br>
-   brw->hw_bt_pool.next_offset += ALIGN(bytes, 64);<br>
-<br>
-   return offset;<br>
-}<br>
-<br>
 /**<br>
  * Upload a shader stage's binding table as indirect state.<br>
  *<br>
@@ -106,41 +71,25 @@ brw_upload_binding_table(<wbr>struct brw_context *brw,<br>
             brw-><a href="http://shader_time.bo" rel="noreferrer" target="_blank">shader_time.bo</a>, 0, BRW_SURFACEFORMAT_RAW,<br>
             brw->shader_time.bo->size, 1, true);<br>
       }<br>
-      /* When RS is enabled use hw-binding table uploads, otherwise fallback to<br>
-       * software-uploads.<br>
-       */<br>
-      if (brw->use_resource_streamer) {<br>
-         gen7_update_binding_table_<wbr>from_array(brw, stage_state->stage,<br>
-                                              stage_state->surf_offset,<br>
-                                              prog_data->binding_table<br>
-                                              .size_bytes / 4);<br>
-      } else {<br>
-         uint32_t *bind = brw_state_batch(brw, AUB_TRACE_BINDING_TABLE,<br>
-                                          prog_data->binding_table.size_<wbr>bytes,<br>
-                                          32,<br>
-                                          &stage_state->bind_bo_offset);<br>
-<br>
-         /* BRW_NEW_SURFACES and BRW_NEW_*_CONSTBUF */<br>
-         memcpy(bind, stage_state->surf_offset,<br>
-                prog_data->binding_table.size_<wbr>bytes);<br>
-      }<br>
+      uint32_t *bind = brw_state_batch(brw, AUB_TRACE_BINDING_TABLE,<br>
+                                       prog_data->binding_table.size_<wbr>bytes,<br>
+                                       32,<br>
+                                       &stage_state->bind_bo_offset);<br>
+<br>
+      /* BRW_NEW_SURFACES and BRW_NEW_*_CONSTBUF */<br>
+      memcpy(bind, stage_state->surf_offset,<br>
+             prog_data->binding_table.size_<wbr>bytes);<br>
    }<br>
<br>
    brw->ctx.NewDriverState |= BRW_NEW_BINDING_TABLE_<wbr>POINTERS;<br>
<br>
    if (brw->gen >= 7) {<br>
-      if (brw->use_resource_streamer) {<br>
-         stage_state->bind_bo_offset =<br>
-            reserve_hw_bt_space(brw, prog_data->binding_table.size_<wbr>bytes);<br>
-      }<br>
       BEGIN_BATCH(2);<br>
       OUT_BATCH(packet_name << 16 | (2 - 2));<br>
       /* Align SurfaceStateOffset[16:6] format to [15:5] PS Binding Table field<br>
        * when hw-generated binding table is enabled.<br>
        */<br>
-      OUT_BATCH(brw->use_resource_<wbr>streamer ?<br>
-                (stage_state->bind_bo_offset >> 1) :<br>
-                stage_state->bind_bo_offset);<br>
+      OUT_BATCH(stage_state->bind_<wbr>bo_offset);<br>
       ADVANCE_BATCH();<br>
    }<br>
 }<br>
@@ -282,160 +231,6 @@ const struct brw_tracked_state brw_gs_binding_table = {<br>
    },<br>
    .emit = brw_gs_upload_binding_table,<br>
 };<br>
-<br>
-/**<br>
- * Edit a single entry in a hardware-generated binding table<br>
- */<br>
-void<br>
-gen7_edit_hw_binding_table_<wbr>entry(struct brw_context *brw,<br>
-                                 gl_shader_stage stage,<br>
-                                 uint32_t index,<br>
-                                 uint32_t surf_offset)<br>
-{<br>
-   assert(stage < ARRAY_SIZE(stage_to_bt_edit));<br>
-   assert(stage_to_bt_edit[stage]<wbr>);<br>
-<br>
-   uint32_t dw2 = SET_FIELD(index, BRW_BINDING_TABLE_INDEX) |<br>
-      (brw->gen >= 8 ? GEN8_SURFACE_STATE_EDIT(surf_<wbr>offset) :<br>
-       HSW_SURFACE_STATE_EDIT(surf_<wbr>offset));<br>
-<br>
-   BEGIN_BATCH(3);<br>
-   OUT_BATCH(stage_to_bt_edit[<wbr>stage] << 16 | (3 - 2));<br>
-   OUT_BATCH(BRW_BINDING_TABLE_<wbr>EDIT_TARGET_ALL);<br>
-   OUT_BATCH(dw2);<br>
-   ADVANCE_BATCH();<br>
-}<br>
-<br>
-/**<br>
- * Upload a whole hardware binding table for the given stage.<br>
- *<br>
- * Takes an array of surface offsets and the number of binding table<br>
- * entries.<br>
- */<br>
-void<br>
-gen7_update_binding_table_<wbr>from_array(struct brw_context *brw,<br>
-                                     gl_shader_stage stage,<br>
-                                     const uint32_t* binding_table,<br>
-                                     int num_surfaces)<br>
-{<br>
-   uint32_t dw2 = 0;<br>
-<br>
-   assert(stage < ARRAY_SIZE(stage_to_bt_edit));<br>
-   assert(stage_to_bt_edit[stage]<wbr>);<br>
-<br>
-   BEGIN_BATCH(num_surfaces + 2);<br>
-   OUT_BATCH(stage_to_bt_edit[<wbr>stage] << 16 | num_surfaces);<br>
-   OUT_BATCH(BRW_BINDING_TABLE_<wbr>EDIT_TARGET_ALL);<br>
-   for (int i = 0; i < num_surfaces; i++) {<br>
-      dw2 = SET_FIELD(i, BRW_BINDING_TABLE_INDEX) |<br>
-         (brw->gen >= 8 ? GEN8_SURFACE_STATE_EDIT(<wbr>binding_table[i]) :<br>
-          HSW_SURFACE_STATE_EDIT(<wbr>binding_table[i]));<br>
-      OUT_BATCH(dw2);<br>
-   }<br>
-   ADVANCE_BATCH();<br>
-}<br>
-<br>
-/**<br>
- * Disable hardware binding table support, falling back to the<br>
- * older software-generated binding table mechanism.<br>
- */<br>
-void<br>
-gen7_disable_hw_binding_<wbr>tables(struct brw_context *brw)<br>
-{<br>
-   if (!brw->use_resource_streamer)<br>
-      return;<br>
-   /* From the Haswell PRM, Volume 7: 3D Media GPGPU,<br>
-    * 3DSTATE_BINDING_TABLE_POOL_<wbr>ALLOC > Programming Note:<br>
-    *<br>
-    * "When switching between HW and SW binding table generation, SW must<br>
-    * issue a state cache invalidate."<br>
-    */<br>
-   brw_emit_pipe_control_flush(<wbr>brw, PIPE_CONTROL_STATE_CACHE_<wbr>INVALIDATE);<br>
-<br>
-   int pkt_len = brw->gen >= 8 ? 4 : 3;<br>
-<br>
-   BEGIN_BATCH(pkt_len);<br>
-   OUT_BATCH(_3DSTATE_BINDING_<wbr>TABLE_POOL_ALLOC << 16 | (pkt_len - 2));<br>
-   if (brw->gen >= 8) {<br>
-      OUT_BATCH(0);<br>
-      OUT_BATCH(0);<br>
-      OUT_BATCH(0);<br>
-   } else {<br>
-      OUT_BATCH(HSW_BT_POOL_ALLOC_<wbr>MUST_BE_ONE);<br>
-      OUT_BATCH(0);<br>
-   }<br>
-   ADVANCE_BATCH();<br>
-}<br>
-<br>
-/**<br>
- * Enable hardware binding tables and set up the binding table pool.<br>
- */<br>
-void<br>
-gen7_enable_hw_binding_<wbr>tables(struct brw_context *brw)<br>
-{<br>
-   if (!brw->use_resource_streamer)<br>
-      return;<br>
-<br>
-   if (!brw-><a href="http://hw_bt_pool.bo" rel="noreferrer" target="_blank">hw_bt_pool.bo</a>) {<br>
-      /* We use a single re-usable buffer object for the lifetime of the<br>
-       * context and size it to maximum allowed binding tables that can be<br>
-       * programmed per batch:<br>
-       *<br>
-       * From the Haswell PRM, Volume 7: 3D Media GPGPU,<br>
-       * 3DSTATE_BINDING_TABLE_POOL_<wbr>ALLOC > Programming Note:<br>
-       * "A maximum of 16,383 Binding tables are allowed in any batch buffer"<br>
-       */<br>
-      static const int max_size = 16383 * 4;<br>
-      brw-><a href="http://hw_bt_pool.bo" rel="noreferrer" target="_blank">hw_bt_pool.bo</a> = drm_intel_bo_alloc(brw-><wbr>bufmgr, "hw_bt",<br>
-                                              max_size, 64);<br>
-      brw->hw_bt_pool.next_offset = 0;<br>
-   }<br>
-<br>
-   /* From the Haswell PRM, Volume 7: 3D Media GPGPU,<br>
-    * 3DSTATE_BINDING_TABLE_POOL_<wbr>ALLOC > Programming Note:<br>
-    *<br>
-    * "When switching between HW and SW binding table generation, SW must<br>
-    * issue a state cache invalidate."<br>
-    */<br>
-   brw_emit_pipe_control_flush(<wbr>brw, PIPE_CONTROL_STATE_CACHE_<wbr>INVALIDATE);<br>
-<br>
-   int pkt_len = brw->gen >= 8 ? 4 : 3;<br>
-   uint32_t dw1 = BRW_HW_BINDING_TABLE_ENABLE;<br>
-   if (brw->is_haswell) {<br>
-      dw1 |= SET_FIELD(GEN7_MOCS_L3, GEN7_HW_BT_POOL_MOCS) |<br>
-             HSW_BT_POOL_ALLOC_MUST_BE_ONE;<br>
-   } else if (brw->gen >= 8) {<br>
-      dw1 |= BDW_MOCS_WB;<br>
-   }<br>
-<br>
-   BEGIN_BATCH(pkt_len);<br>
-   OUT_BATCH(_3DSTATE_BINDING_<wbr>TABLE_POOL_ALLOC << 16 | (pkt_len - 2));<br>
-   if (brw->gen >= 8) {<br>
-      OUT_RELOC64(brw-><a href="http://hw_bt_pool.bo" rel="noreferrer" target="_blank">hw_bt_pool.bo</a><wbr>, I915_GEM_DOMAIN_SAMPLER, 0, dw1);<br>
-      OUT_BATCH(brw->hw_bt_pool.bo-><wbr>size);<br>
-   } else {<br>
-      OUT_RELOC(brw-><a href="http://hw_bt_pool.bo" rel="noreferrer" target="_blank">hw_bt_pool.bo</a>, I915_GEM_DOMAIN_SAMPLER, 0, dw1);<br>
-      OUT_RELOC(brw-><a href="http://hw_bt_pool.bo" rel="noreferrer" target="_blank">hw_bt_pool.bo</a>, I915_GEM_DOMAIN_SAMPLER, 0,<br>
-             brw->hw_bt_pool.bo->size);<br>
-   }<br>
-   ADVANCE_BATCH();<br>
-}<br>
-<br>
-void<br>
-gen7_reset_hw_bt_pool_<wbr>offsets(struct brw_context *brw)<br>
-{<br>
-   brw->hw_bt_pool.next_offset = 0;<br>
-}<br>
-<br>
-const struct brw_tracked_state gen7_hw_binding_tables = {<br>
-   .dirty = {<br>
-      .mesa = 0,<br>
-      .brw = BRW_NEW_BATCH |<br>
-             BRW_NEW_BLORP,<br>
-   },<br>
-   .emit = gen7_enable_hw_binding_tables<br>
-};<br>
-<br>
 /** @} */<br>
<br>
 /**<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_context.c b/src/mesa/drivers/dri/i965/<wbr>brw_context.c<br>
index fb97743b86a..a676978a98c 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_context.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_context.c<br>
@@ -1116,10 +1116,6 @@ brwCreateContext(gl_api api,<br>
<br>
    brw->max_gtt_map_object_size = screen->max_gtt_map_object_<wbr>size;<br>
<br>
-   brw->use_resource_streamer = screen->has_resource_streamer &&<br>
-      (env_var_as_boolean("INTEL_<wbr>USE_HW_BT", false) ||<br>
-       env_var_as_boolean("INTEL_USE_<wbr>GATHER", false));<br>
-<br>
    ctx->VertexProgram._<wbr>MaintainTnlProgram = true;<br>
    ctx->FragmentProgram._<wbr>MaintainTexEnvProgram = true;<br>
<br>
@@ -1193,10 +1189,6 @@ intelDestroyContext(__<wbr>DRIcontext * driContextPriv)<br>
    if (brw->wm.base.scratch_bo)<br>
       drm_intel_bo_unreference(brw-><wbr>wm.base.scratch_bo);<br>
<br>
-   gen7_reset_hw_bt_pool_offsets(<wbr>brw);<br>
-   drm_intel_bo_unreference(brw-><a href="http://hw_bt_pool.bo" rel="noreferrer" target="_blank"><wbr>hw_bt_pool.bo</a>);<br>
-   brw-><a href="http://hw_bt_pool.bo" rel="noreferrer" target="_blank">hw_bt_pool.bo</a> = NULL;<br>
-<br>
    drm_intel_gem_context_destroy(<wbr>brw->hw_ctx);<br>
<br>
    if (ctx->swrast_context) {<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_context.h b/src/mesa/drivers/dri/i965/<wbr>brw_context.h<br>
index 7ff7b74252f..8ea7703aa68 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_context.h<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_context.h<br>
@@ -1118,12 +1118,6 @@ struct brw_context<br>
       struct brw_stage_state base;<br>
    } cs;<br>
<br>
-   /* RS hardware binding table */<br>
-   struct {<br>
-      drm_intel_bo *bo;<br>
-      uint32_t next_offset;<br>
-   } hw_bt_pool;<br>
-<br>
    struct {<br>
       uint32_t state_offset;<br>
       uint32_t blend_state_offset;<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_defines.h b/src/mesa/drivers/dri/i965/<wbr>brw_defines.h<br>
index 3c5c6c484d7..c7c34762be8 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_defines.h<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_defines.h<br>
@@ -1911,36 +1911,6 @@ enum brw_message_target {<br>
 #define _3DSTATE_BINDING_TABLE_<wbr>POINTERS_GS     0x7829 /* GEN7+ */<br>
 #define _3DSTATE_BINDING_TABLE_<wbr>POINTERS_PS     0x782A /* GEN7+ */<br>
<br>
-#define _3DSTATE_BINDING_TABLE_POOL_<wbr>ALLOC       0x7919 /* GEN7.5+ */<br>
-#define BRW_HW_BINDING_TABLE_ENABLE             (1 << 11)<br>
-#define GEN7_HW_BT_POOL_MOCS_SHIFT              7<br>
-#define GEN7_HW_BT_POOL_MOCS_MASK               INTEL_MASK(10, 7)<br>
-#define GEN8_HW_BT_POOL_MOCS_SHIFT              0<br>
-#define GEN8_HW_BT_POOL_MOCS_MASK               INTEL_MASK(6, 0)<br>
-/* Only required in HSW */<br>
-#define HSW_BT_POOL_ALLOC_MUST_BE_ONE           (3 << 5)<br>
-<br>
-#define _3DSTATE_BINDING_TABLE_EDIT_VS          0x7843 /* GEN7.5 */<br>
-#define _3DSTATE_BINDING_TABLE_EDIT_GS          0x7844 /* GEN7.5 */<br>
-#define _3DSTATE_BINDING_TABLE_EDIT_HS          0x7845 /* GEN7.5 */<br>
-#define _3DSTATE_BINDING_TABLE_EDIT_DS          0x7846 /* GEN7.5 */<br>
-#define _3DSTATE_BINDING_TABLE_EDIT_PS          0x7847 /* GEN7.5 */<br>
-#define BRW_BINDING_TABLE_INDEX_SHIFT           16<br>
-#define BRW_BINDING_TABLE_INDEX_MASK            INTEL_MASK(23, 16)<br>
-<br>
-#define BRW_BINDING_TABLE_EDIT_TARGET_<wbr>ALL       3<br>
-#define BRW_BINDING_TABLE_EDIT_TARGET_<wbr>CORE1     2<br>
-#define BRW_BINDING_TABLE_EDIT_TARGET_<wbr>CORE0     1<br>
-/* In HSW, when editing binding table entries to surface state offsets,<br>
- * the surface state offset is a 16-bit value aligned to 32 bytes. But<br>
- * Surface State Pointer in dword 2 is [15:0]. Right shift surf_offset<br>
- * by 5 bits so it won't disturb bit 16 (which is used as the binding<br>
- * table index entry), otherwise it would hang the GPU.<br>
- */<br>
-#define HSW_SURFACE_STATE_EDIT(value)           (value >> 5)<br>
-/* Same as Haswell, but surface state offsets now aligned to 64 bytes.*/<br>
-#define GEN8_SURFACE_STATE_EDIT(value)          (value >> 6)<br>
-<br>
 #define _3DSTATE_SAMPLER_STATE_<wbr>POINTERS                0x7802 /* GEN6+ */<br>
 # define PS_SAMPLER_STATE_CHANGE                               (1 << 12)<br>
 # define GS_SAMPLER_STATE_CHANGE                               (1 << 9)<br>
@@ -2643,25 +2613,6 @@ enum brw_barycentric_mode {<br>
 #define _3DSTATE_CONSTANT_HS                  0x7819 /* GEN7+ */<br>
 #define _3DSTATE_CONSTANT_DS                  0x781A /* GEN7+ */<br>
<br>
-/* Resource streamer gather constants */<br>
-#define _3DSTATE_GATHER_POOL_ALLOC            0x791A /* GEN7.5+ */<br>
-#define HSW_GATHER_POOL_ALLOC_MUST_BE_<wbr>ONE     (3 << 4) /* GEN7.5 only */<br>
-<br>
-#define _3DSTATE_GATHER_CONSTANT_VS           0x7834 /* GEN7.5+ */<br>
-#define _3DSTATE_GATHER_CONSTANT_GS           0x7835<br>
-#define _3DSTATE_GATHER_CONSTANT_HS           0x7836<br>
-#define _3DSTATE_GATHER_CONSTANT_DS           0x7837<br>
-#define _3DSTATE_GATHER_CONSTANT_PS           0x7838<br>
-#define HSW_GATHER_CONSTANT_ENABLE            (1 << 11)<br>
-#define HSW_GATHER_CONSTANT_BUFFER_<wbr>VALID_SHIFT         16<br>
-#define HSW_GATHER_CONSTANT_BUFFER_<wbr>VALID_MASK          INTEL_MASK(31, 16)<br>
-#define HSW_GATHER_CONSTANT_BINDING_<wbr>TABLE_BLOCK_SHIFT  12<br>
-#define HSW_GATHER_CONSTANT_BINDING_<wbr>TABLE_BLOCK_MASK   INTEL_MASK(15, 12)<br>
-#define HSW_GATHER_CONSTANT_CONST_<wbr>BUFFER_OFFSET_SHIFT  8<br>
-#define HSW_GATHER_CONSTANT_CONST_<wbr>BUFFER_OFFSET_MASK   INTEL_MASK(15, 8)<br>
-#define HSW_GATHER_CONSTANT_CHANNEL_<wbr>MASK_SHIFT         4<br>
-#define HSW_GATHER_CONSTANT_CHANNEL_<wbr>MASK_MASK          INTEL_MASK(7, 4)<br>
-<br>
 #define _3DSTATE_STREAMOUT                    0x781e /* GEN7+ */<br>
 /* DW1 */<br>
 # define SO_FUNCTION_ENABLE                            (1 << 31)<br>
@@ -3009,9 +2960,6 @@ enum brw_barycentric_mode {<br>
 /* Load a value from memory into a register.  Only available on Gen7+. */<br>
 #define GEN7_MI_LOAD_REGISTER_MEM      (CMD_MI | (0x29 << 23))<br>
 # define MI_LOAD_REGISTER_MEM_USE_GGTT         (1 << 22)<br>
-/* Haswell RS control */<br>
-#define MI_RS_CONTROL                   (CMD_MI | (0x6 << 23))<br>
-#define MI_RS_STORE_DATA_IMM            (CMD_MI | (0x2b << 23))<br>
<br>
 /* Manipulate the predicate bit based on some register values. Only on Gen7+ */<br>
 #define GEN7_MI_PREDICATE              (CMD_MI | (0xC << 23))<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_misc_state.c b/src/mesa/drivers/dri/i965/<wbr>brw_misc_state.c<br>
index af050a0ace6..83da94155f6 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_misc_state.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_misc_state.c<br>
@@ -824,26 +824,6 @@ brw_emit_select_pipeline(<wbr>struct brw_context *brw, enum brw_pipeline pipeline)<br>
    const uint32_t _3DSTATE_PIPELINE_SELECT =<br>
       is_965 ? CMD_PIPELINE_SELECT_965 : CMD_PIPELINE_SELECT_GM45;<br>
<br>
-   if (brw->use_resource_streamer && pipeline != BRW_RENDER_PIPELINE) {<br>
-      /* From "BXML » GT » MI » vol1a GPU Overview » [Instruction]<br>
-       * PIPELINE_SELECT [DevBWR+]":<br>
-       *<br>
-       *   Project: HSW, BDW, CHV, SKL, BXT<br>
-       *<br>
-       *   Hardware Binding Tables are only supported for 3D<br>
-       *   workloads. Resource streamer must be enabled only for 3D<br>
-       *   workloads. Resource streamer must be disabled for Media and GPGPU<br>
-       *   workloads.<br>
-       */<br>
-      BEGIN_BATCH(1);<br>
-      OUT_BATCH(MI_RS_CONTROL | 0);<br>
-      ADVANCE_BATCH();<br>
-<br>
-      gen7_disable_hw_binding_<wbr>tables(brw);<br>
-<br>
-      /* XXX - Disable gather constant pool too when we start using it. */<br>
-   }<br>
-<br>
    if (brw->gen >= 8 && brw->gen < 10) {<br>
       /* From the Broadwell PRM, Volume 2a: Instructions, PIPELINE_SELECT:<br>
        *<br>
@@ -935,26 +915,6 @@ brw_emit_select_pipeline(<wbr>struct brw_context *brw, enum brw_pipeline pipeline)<br>
       OUT_BATCH(0);<br>
       ADVANCE_BATCH();<br>
    }<br>
-<br>
-   if (brw->use_resource_streamer && pipeline == BRW_RENDER_PIPELINE) {<br>
-      /* From "BXML » GT » MI » vol1a GPU Overview » [Instruction]<br>
-       * PIPELINE_SELECT [DevBWR+]":<br>
-       *<br>
-       *   Project: HSW, BDW, CHV, SKL, BXT<br>
-       *<br>
-       *   Hardware Binding Tables are only supported for 3D<br>
-       *   workloads. Resource streamer must be enabled only for 3D<br>
-       *   workloads. Resource streamer must be disabled for Media and GPGPU<br>
-       *   workloads.<br>
-       */<br>
-      BEGIN_BATCH(1);<br>
-      OUT_BATCH(MI_RS_CONTROL | 1);<br>
-      ADVANCE_BATCH();<br>
-<br>
-      gen7_enable_hw_binding_tables(<wbr>brw);<br>
-<br>
-      /* XXX - Re-enable gather constant pool here. */<br>
-   }<br>
 }<br>
<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 4b7e3c2966f..ecafa84f9fc 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_state.h<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_state.h<br>
@@ -146,7 +146,6 @@ extern const struct brw_tracked_state gen7_tes_push_constants;<br>
 extern const struct brw_tracked_state gen7_urb;<br>
 extern const struct brw_tracked_state gen7_vs_state;<br>
 extern const struct brw_tracked_state gen7_wm_state;<br>
-extern const struct brw_tracked_state gen7_hw_binding_tables;<br>
 extern const struct brw_tracked_state haswell_cut_index;<br>
 extern const struct brw_tracked_state gen8_blend_state;<br>
 extern const struct brw_tracked_state gen8_ds_state;<br>
@@ -379,20 +378,6 @@ gen7_upload_constant_state(<wbr>struct brw_context *brw,<br>
                            const struct brw_stage_state *stage_state,<br>
                            bool active, unsigned opcode);<br>
<br>
-void gen7_rs_control(struct brw_context *brw, int enable);<br>
-<br>
-void gen7_edit_hw_binding_table_<wbr>entry(struct brw_context *brw,<br>
-                                      gl_shader_stage stage,<br>
-                                      uint32_t index,<br>
-                                      uint32_t surf_offset);<br>
-void gen7_update_binding_table_<wbr>from_array(struct brw_context *brw,<br>
-                                          gl_shader_stage stage,<br>
-                                          const uint32_t* binding_table,<br>
-                                          int num_surfaces);<br>
-void gen7_enable_hw_binding_tables(<wbr>struct brw_context *brw);<br>
-void gen7_disable_hw_binding_<wbr>tables(struct brw_context *brw);<br>
-void gen7_reset_hw_bt_pool_offsets(<wbr>struct brw_context *brw);<br>
-<br>
 /* brw_clip.c */<br>
 void brw_upload_clip_prog(struct brw_context *brw);<br>
<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 52b74a7c527..0f7ea9bb290 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>
@@ -180,8 +180,6 @@ static const struct brw_tracked_state *gen7_render_atoms[] =<br>
    &gen6_color_calc_state,     /* must do before cc unit */<br>
    &gen6_depth_stencil_state,  /* must do before cc unit */<br>
<br>
-   &gen7_hw_binding_tables, /* Enable hw-generated binding tables for Haswell */<br>
-<br>
    &brw_vs_image_surfaces, /* Before vs push/pull constants and binding table */<br>
    &brw_tcs_image_surfaces, /* Before tcs push/pull constants and binding table */<br>
    &brw_tes_image_surfaces, /* Before tes push/pull constants and binding table */<br>
@@ -283,8 +281,6 @@ static const struct brw_tracked_state *gen8_render_atoms[] =<br>
    &gen8_blend_state,<br>
    &gen6_color_calc_state,<br>
<br>
-   &gen7_hw_binding_tables, /* Enable hw-generated binding tables for Broadwell */<br>
-<br>
    &brw_vs_image_surfaces, /* Before vs push/pull constants and binding table */<br>
    &brw_tcs_image_surfaces, /* Before tcs push/pull constants and binding table */<br>
    &brw_tes_image_surfaces, /* Before tes push/pull constants and binding table */<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>genX_blorp_exec.c b/src/mesa/drivers/dri/i965/<wbr>genX_blorp_exec.c<br>
index 8e011e98cec..0224d6e43df 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>genX_blorp_exec.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>genX_blorp_exec.c<br>
@@ -212,9 +212,6 @@ retry:<br>
    gen7_l3_state.emit(brw);<br>
 #endif<br>
<br>
-   if (brw->use_resource_streamer)<br>
-      gen7_disable_hw_binding_<wbr>tables(brw);<br>
-<br>
    brw_emit_depth_stall_flushes(<wbr>brw);<br>
<br>
 #if GEN_GEN == 8<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c b/src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c<br>
index 3e87e3479ae..ae0fd4cd7ab 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c<br>
@@ -337,8 +337,7 @@ do_flush_locked(struct brw_context *brw, int in_fence_fd, int *out_fence_fd)<br>
       if (brw->gen >= 6 && batch->ring == BLT_RING) {<br>
          flags = I915_EXEC_BLT;<br>
       } else {<br>
-         flags = I915_EXEC_RENDER |<br>
-            (brw->use_resource_streamer ? I915_EXEC_RESOURCE_STREAMER : 0);<br>
+         flags = I915_EXEC_RENDER;<br>
       }<br>
       if (batch->needs_sol_reset)<br>
         flags |= I915_EXEC_GEN7_SOL_RESET;<br>
@@ -433,9 +432,6 @@ _intel_batchbuffer_flush_<wbr>fence(struct brw_context *brw,<br>
       drm_intel_bo_wait_rendering(<wbr>brw-><a href="http://batch.bo" rel="noreferrer" target="_blank">batch.bo</a>);<br>
    }<br>
<br>
-   if (brw->use_resource_streamer)<br>
-      gen7_reset_hw_bt_pool_offsets(<wbr>brw);<br>
-<br>
    /* Start a new batch buffer. */<br>
    brw_new_batch(brw);<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>intel_screen.c b/src/mesa/drivers/dri/i965/<wbr>intel_screen.c<br>
index 855817089c9..7e60d182dec 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>intel_screen.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>intel_screen.c<br>
@@ -1806,11 +1806,6 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen)<br>
    screen->compiler->shader_perf_<wbr>log = shader_perf_log_mesa;<br>
    screen->program_id = 1;<br>
<br>
-   if (screen->devinfo.has_resource_<wbr>streamer) {<br>
-      screen->has_resource_streamer =<br>
-        intel_get_boolean(screen, I915_PARAM_HAS_RESOURCE_<wbr>STREAMER);<br>
-   }<br>
-<br>
    screen->has_exec_fence =<br>
      intel_get_boolean(screen, I915_PARAM_HAS_EXEC_FENCE);<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>intel_screen.h b/src/mesa/drivers/dri/i965/<wbr>intel_screen.h<br>
index 147af257beb..41db83bb679 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>intel_screen.h<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>intel_screen.h<br>
@@ -57,11 +57,6 @@ struct intel_screen<br>
    int hw_has_timestamp;<br>
<br>
    /**<br>
-    * Does the kernel support resource streamer?<br>
-    */<br>
-   bool has_resource_streamer;<br>
-<br>
-   /**<br>
     * Does the kernel support context reset notifications?<br>
     */<br>
    bool has_context_reset_<wbr>notification;<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.11.1<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>