mesa/src/asahi/lib/agx_bg_eot.h

45 lines
986 B
C

/*
* Copyright 2022 Alyssa Rosenzweig
* SPDX-License-Identifier: MIT
*/
#pragma once
#include "asahi/compiler/agx_compile.h"
#include "agx_tilebuffer.h"
#include "pool.h"
struct agx_bg_eot_cache {
struct agx_device *dev;
struct agx_pool pool;
/* Map from agx_bg_eot_key to agx_bg_eot_shader */
struct hash_table *ht;
};
enum agx_bg_eot_op {
AGX_BG_EOT_NONE,
AGX_BG_CLEAR,
AGX_BG_LOAD,
AGX_EOT_STORE,
};
struct agx_bg_eot_key {
struct agx_tilebuffer_layout tib;
enum agx_bg_eot_op op[8];
unsigned reserved_preamble;
};
struct agx_bg_eot_shader {
struct agx_bg_eot_key key;
struct agx_shader_info info;
struct agx_bo *bo;
uint32_t ptr;
};
struct agx_bg_eot_shader *agx_get_bg_eot_shader(struct agx_bg_eot_cache *cache,
struct agx_bg_eot_key *key);
void agx_bg_eot_init(struct agx_bg_eot_cache *cache, struct agx_device *dev);
void agx_bg_eot_cleanup(struct agx_bg_eot_cache *cache);