#include "fd5_program.h"
#include "fd5_rasterizer.h"
#include "fd5_texture.h"
+#include "fd5_screen.h"
#include "fd5_format.h"
#include "fd5_zsa.h"
static void
fd5_emit_ib(struct fd_ringbuffer *ring, struct fd_ringbuffer *target)
{
+ /* for debug after a lock up, write a unique counter value
+ * to scratch6 for each IB, to make it easier to match up
+ * register dumps to cmdstream. The combination of IB and
+ * DRAW (scratch7) is enough to "triangulate" the particular
+ * draw that caused lockup.
+ */
+ emit_marker5(ring, 6);
__OUT_IB5(ring, target);
+ emit_marker5(ring, 6);
}
static void
#include "pipe/p_screen.h"
+#include "freedreno_util.h"
+
+#include "a5xx.xml.h"
+
void fd5_screen_init(struct pipe_screen *pscreen);
+static inline void
+emit_marker5(struct fd_ringbuffer *ring, int scratch_idx)
+{
+ extern unsigned marker_cnt;
+ unsigned reg = REG_A5XX_CP_SCRATCH_REG(scratch_idx);
+ OUT_PKT4(ring, reg, 1);
+ OUT_RING(ring, ++marker_cnt);
+}
+
#endif /* FD5_SCREEN_H_ */
#define LOG_DWORDS 0
static inline void emit_marker(struct fd_ringbuffer *ring, int scratch_idx);
-static inline void emit_marker5(struct fd_ringbuffer *ring, int scratch_idx);
static inline void
OUT_RING(struct fd_ringbuffer *ring, uint32_t data)
{
unsigned count = fd_ringbuffer_cmd_count(target);
- /* for debug after a lock up, write a unique counter value
- * to scratch6 for each IB, to make it easier to match up
- * register dumps to cmdstream. The combination of IB and
- * DRAW (scratch7) is enough to "triangulate" the particular
- * draw that caused lockup.
- */
- emit_marker5(ring, 6);
-
for (unsigned i = 0; i < count; i++) {
uint32_t dwords;
OUT_PKT7(ring, CP_INDIRECT_BUFFER, 3);
assert(dwords > 0);
OUT_RING(ring, dwords);
}
-
- emit_marker5(ring, 6);
}
/* CP_SCRATCH_REG4 is used to hold base address for query results: */
OUT_RING(ring, ++marker_cnt);
}
-static inline void
-emit_marker5(struct fd_ringbuffer *ring, int scratch_idx)
-{
- extern unsigned marker_cnt;
-//XXX unsigned reg = REG_A5XX_CP_SCRATCH_REG(scratch_idx);
- unsigned reg = 0x00000b78 + scratch_idx;
- OUT_PKT4(ring, reg, 1);
- OUT_RING(ring, ++marker_cnt);
-}
-
/* helper to get numeric value from environment variable.. mostly
* just leaving this here because it is helpful to brute-force figure
* out unknown formats, etc, which blob driver does not support: