2 * Copyright (c) 2017-2019 Lima Project
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sub license,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice (including the
12 * next paragraph) shall be included in all copies or substantial portions
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
25 #ifndef H_LIMA_RESOURCE
26 #define H_LIMA_RESOURCE
28 #include "pipe/p_state.h"
30 /* max texture size is 4096x4096 */
31 #define LIMA_MAX_MIP_LEVELS 13
34 struct panfrost_minmax_cache
;
36 struct lima_resource_level
{
40 uint32_t layer_stride
;
43 struct lima_damage_region
{
44 struct pipe_scissor_state
*region
;
45 struct pipe_scissor_state bound
;
50 struct lima_resource
{
51 struct pipe_resource base
;
53 struct lima_damage_region damage
;
54 struct renderonly_scanout
*scanout
;
56 struct panfrost_minmax_cache
*index_cache
;
59 struct lima_resource_level levels
[LIMA_MAX_MIP_LEVELS
];
63 struct pipe_surface base
;
68 struct lima_transfer
{
69 struct pipe_transfer base
;
73 static inline struct lima_resource
*
74 lima_resource(struct pipe_resource
*res
)
76 return (struct lima_resource
*)res
;
79 static inline struct lima_surface
*
80 lima_surface(struct pipe_surface
*surf
)
82 return (struct lima_surface
*)surf
;
85 static inline struct lima_transfer
*
86 lima_transfer(struct pipe_transfer
*trans
)
88 return (struct lima_transfer
*)trans
;
92 lima_resource_screen_init(struct lima_screen
*screen
);
95 lima_resource_context_init(struct lima_context
*ctx
);