mirror of https://gitlab.freedesktop.org/mesa/mesa
45 lines
986 B
C
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);
|