blob: c70061165173d5665914a8cc4833c2210cfad565 [file] [log] [blame]
#ifndef H_CMDSTREAM
#define H_CMDSTREAM
#include <etnaviv_drmif.h>
#include "cmdstream.xml.h"
static inline void etna_emit_load_state(struct etna_cmd_stream *stream,
const uint16_t offset, const uint16_t count)
{
uint32_t v;
v = (VIV_FE_LOAD_STATE_HEADER_OP_LOAD_STATE | VIV_FE_LOAD_STATE_HEADER_OFFSET(offset) |
(VIV_FE_LOAD_STATE_HEADER_COUNT(count) & VIV_FE_LOAD_STATE_HEADER_COUNT__MASK));
etna_cmd_stream_emit(stream, v);
}
static inline void etna_set_state(struct etna_cmd_stream *stream, uint32_t address, uint32_t value)
{
etna_cmd_stream_reserve(stream, 2);
etna_emit_load_state(stream, address >> 2, 1);
etna_cmd_stream_emit(stream, value);
}
static inline void etna_set_state_from_bo(struct etna_cmd_stream *stream,
uint32_t address, struct etna_bo *bo)
{
etna_cmd_stream_reserve(stream, 2);
etna_emit_load_state(stream, address >> 2, 1);
etna_cmd_stream_reloc(stream, &(struct etna_reloc){
.bo = bo,
.flags = ETNA_RELOC_WRITE,
.offset = 0,
});
}
#endif