<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>