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
35 struct lima_resource_level
{
39 uint32_t layer_stride
;
42 struct lima_damage_region
{
43 struct pipe_scissor_state
*region
;
44 struct pipe_scissor_state bound
;
49 struct lima_resource
{
50 struct pipe_resource base
;
52 struct lima_damage_region damage
;
53 struct renderonly_scanout
*scanout
;
57 struct lima_resource_level levels
[LIMA_MAX_MIP_LEVELS
];
61 struct pipe_surface base
;
66 struct lima_transfer
{
67 struct pipe_transfer base
;
71 static inline struct lima_resource
*
72 lima_resource(struct pipe_resource
*res
)
74 return (struct lima_resource
*)res
;
77 static inline struct lima_surface
*
78 lima_surface(struct pipe_surface
*surf
)
80 return (struct lima_surface
*)surf
;
83 static inline struct lima_transfer
*
84 lima_transfer(struct pipe_transfer
*trans
)
86 return (struct lima_transfer
*)trans
;
90 lima_resource_screen_init(struct lima_screen
*screen
);
93 lima_resource_context_init(struct lima_context
*ctx
);