i965: Set up sandybridge binding table pointers but don't enable it yet.
It hangs the GPU at the clipper stage, presumably because we're lacking other setup.
This commit is contained in:
@@ -778,6 +778,9 @@
|
||||
|
||||
#define CMD_PIPELINED_STATE_POINTERS 0x7800
|
||||
#define CMD_BINDING_TABLE_PTRS 0x7801
|
||||
# define GEN6_BINDING_TABLE_MODIFY_VS (1 << 8)
|
||||
# define GEN6_BINDING_TABLE_MODIFY_GS (1 << 9)
|
||||
# define GEN6_BINDING_TABLE_MODIFY_PS (1 << 10)
|
||||
|
||||
#define CMD_VERTEX_BUFFER 0x7808
|
||||
# define BRW_VB0_INDEX_SHIFT 27
|
||||
|
||||
@@ -136,6 +136,41 @@ const struct brw_tracked_state brw_binding_table_pointers = {
|
||||
.emit = upload_binding_table_pointers,
|
||||
};
|
||||
|
||||
/**
|
||||
* Upload the binding table pointers, which point each stage's array of surface
|
||||
* state pointers.
|
||||
*
|
||||
* The binding table pointers are relative to the surface state base address,
|
||||
* which is 0.
|
||||
*/
|
||||
static void upload_gen6_binding_table_pointers(struct brw_context *brw)
|
||||
{
|
||||
struct intel_context *intel = &brw->intel;
|
||||
|
||||
BEGIN_BATCH(4);
|
||||
OUT_BATCH(CMD_BINDING_TABLE_PTRS << 16 |
|
||||
GEN6_BINDING_TABLE_MODIFY_VS |
|
||||
GEN6_BINDING_TABLE_MODIFY_GS |
|
||||
GEN6_BINDING_TABLE_MODIFY_PS |
|
||||
(4 - 2));
|
||||
if (brw->vs.bind_bo != NULL)
|
||||
OUT_RELOC(brw->vs.bind_bo, I915_GEM_DOMAIN_SAMPLER, 0, 0); /* vs */
|
||||
else
|
||||
OUT_BATCH(0);
|
||||
OUT_BATCH(0); /* gs */
|
||||
OUT_RELOC(brw->wm.bind_bo, I915_GEM_DOMAIN_SAMPLER, 0, 0); /* wm/ps */
|
||||
ADVANCE_BATCH();
|
||||
}
|
||||
|
||||
const struct brw_tracked_state gen6_binding_table_pointers = {
|
||||
.dirty = {
|
||||
.mesa = 0,
|
||||
.brw = BRW_NEW_BATCH,
|
||||
.cache = CACHE_NEW_SURF_BIND,
|
||||
},
|
||||
.prepare = prepare_binding_table_pointers,
|
||||
.emit = upload_gen6_binding_table_pointers,
|
||||
};
|
||||
|
||||
/**
|
||||
* Upload pointers to the per-stage state.
|
||||
|
||||
@@ -90,6 +90,7 @@ const struct brw_tracked_state brw_drawing_rect;
|
||||
const struct brw_tracked_state brw_indices;
|
||||
const struct brw_tracked_state brw_vertices;
|
||||
const struct brw_tracked_state brw_index_buffer;
|
||||
const struct brw_tracked_state gen6_binding_table_pointers;
|
||||
|
||||
/**
|
||||
* Use same key for WM and VS surfaces.
|
||||
|
||||
Reference in New Issue
Block a user