123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /*
- * Copyright (c) 2017-2019 Lima Project
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- */
-
- #ifndef H_LIMA_SCREEN
- #define H_LIMA_SCREEN
-
- #include <stdio.h>
-
- #include "util/slab.h"
- #include "util/list.h"
- #include "os/os_thread.h"
-
- #include "pipe/p_screen.h"
-
- #define LIMA_DEBUG_GP (1 << 0)
- #define LIMA_DEBUG_PP (1 << 1)
- #define LIMA_DEBUG_DUMP (1 << 2)
- #define LIMA_DEBUG_SHADERDB (1 << 3)
- #define LIMA_DEBUG_NO_BO_CACHE (1 << 4)
- #define LIMA_DEBUG_BO_CACHE (1 << 5)
-
- extern uint32_t lima_debug;
- extern FILE *lima_dump_command_stream;
- extern int lima_ctx_num_plb;
- extern int lima_plb_max_blk;
- extern int lima_ppir_force_spilling;
-
- struct ra_regs;
-
- #define MIN_BO_CACHE_BUCKET (12) /* 2^12 = 4KB */
- #define MAX_BO_CACHE_BUCKET (22) /* 2^22 = 4MB */
-
- #define NR_BO_CACHE_BUCKETS (MAX_BO_CACHE_BUCKET - MIN_BO_CACHE_BUCKET + 1)
-
- struct lima_screen {
- struct pipe_screen base;
- struct renderonly *ro;
-
- int refcnt;
- void *winsys_priv;
-
- int fd;
- int gpu_type;
- int num_pp;
- uint32_t plb_max_blk;
-
- /* bo table */
- mtx_t bo_table_lock;
- mtx_t bo_cache_lock;
- struct util_hash_table *bo_handles;
- struct util_hash_table *bo_flink_names;
- struct list_head bo_cache_buckets[NR_BO_CACHE_BUCKETS];
- struct list_head bo_cache_time;
-
- struct slab_parent_pool transfer_pool;
-
- struct ra_regs *pp_ra;
-
- struct lima_bo *pp_buffer;
- #define pp_frame_rsw_offset 0x0000
- #define pp_clear_program_offset 0x0040
- #define pp_reload_program_offset 0x0080
- #define pp_shared_index_offset 0x00c0
- #define pp_clear_gl_pos_offset 0x0100
- #define pp_buffer_size 0x1000
-
- };
-
- static inline struct lima_screen *
- lima_screen(struct pipe_screen *pscreen)
- {
- return (struct lima_screen *)pscreen;
- }
-
- struct pipe_screen *
- lima_screen_create(int fd, struct renderonly *ro);
-
- #endif
|