#ifndef SI_PM4_H
#define SI_PM4_H
-#include "radeon/drm/radeon_winsys.h"
+#include "radeon/radeon_winsys.h"
-#define SI_PM4_MAX_DW 140
-#define SI_PM4_MAX_BO 4
+#define SI_PM4_MAX_DW 176
+#define SI_PM4_MAX_BO 1
// forward defines
struct si_context;
struct si_pm4_state
{
+ /* optional indirect buffer */
+ struct r600_resource *indirect_buffer;
+
/* PKT3_SET_*_REG handling */
unsigned last_opcode;
unsigned last_reg;
struct r600_resource *bo,
enum radeon_bo_usage usage,
enum radeon_bo_priority priority);
+void si_pm4_upload_indirect_buffer(struct si_context *sctx,
+ struct si_pm4_state *state);
+void si_pm4_free_state_simple(struct si_pm4_state *state);
void si_pm4_free_state(struct si_context *sctx,
struct si_pm4_state *state,
unsigned idx);
-unsigned si_pm4_dirty_dw(struct si_context *sctx);
void si_pm4_emit(struct si_context *sctx, struct si_pm4_state *state);
void si_pm4_emit_dirty(struct si_context *sctx);
void si_pm4_reset_emitted(struct si_context *sctx);
-void si_pm4_cleanup(struct si_context *sctx);
#endif