X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fvc4%2Fvc4_resource.h;h=8c0aadbccb7276e385e6e23fbc8f870308309127;hb=c475e29be4f81b3bef8b55b1bc78023fdfdf26bb;hp=b2359f06c9b40aeda6986d8cdb95a589d6235606;hpb=7bc39c8418ee5de49e3d38aaf5f9e478ff78874c;p=mesa.git diff --git a/src/gallium/drivers/vc4/vc4_resource.h b/src/gallium/drivers/vc4/vc4_resource.h index b2359f06c9b..8c0aadbccb7 100644 --- a/src/gallium/drivers/vc4/vc4_resource.h +++ b/src/gallium/drivers/vc4/vc4_resource.h @@ -26,7 +26,7 @@ #define VC4_RESOURCE_H #include "vc4_screen.h" -#include "vc4_packet.h" +#include "kernel/vc4_packet.h" #include "util/u_transfer.h" struct vc4_transfer { @@ -45,16 +45,13 @@ struct vc4_resource_slice { struct vc4_surface { struct pipe_surface base; uint32_t offset; - uint32_t stride; - uint32_t width; - uint16_t height; - uint16_t depth; uint8_t tiling; }; struct vc4_resource { - struct u_resource base; + struct pipe_resource base; struct vc4_bo *bo; + struct renderonly_scanout *scanout; struct vc4_resource_slice slices[VC4_MAX_MIP_LEVELS]; uint32_t cube_map_stride; int cpp; @@ -72,33 +69,30 @@ struct vc4_resource { uint64_t writes; /** - * Resource containing the non-GL_TEXTURE_BASE_LEVEL-rebased texture - * contents, or the 4-byte index buffer. - * - * If the parent is set for an texture, then this resource is actually - * the texture contents just starting from the sampler_view's - * first_level. + * Bitmask of PIPE_CLEAR_COLOR0, PIPE_CLEAR_DEPTH, PIPE_CLEAR_STENCIL + * for which parts of the resource are defined. * - * If the parent is set for an index index buffer, then this resource - * is actually a shadow containing a 2-byte index buffer starting from - * the ib's offset. + * Used for avoiding fallback to quad clears for clearing just depth, + * when the stencil contents have never been initialized. Note that + * we're lazy and fields not present in the buffer (DEPTH in a color + * buffer) may get marked. */ - struct pipe_resource *shadow_parent; + uint32_t initialized_buffers; }; -static INLINE struct vc4_resource * +static inline struct vc4_resource * vc4_resource(struct pipe_resource *prsc) { return (struct vc4_resource *)prsc; } -static INLINE struct vc4_surface * +static inline struct vc4_surface * vc4_surface(struct pipe_surface *psurf) { return (struct vc4_surface *)psurf; } -static INLINE struct vc4_transfer * +static inline struct vc4_transfer * vc4_transfer(struct pipe_transfer *ptrans) { return (struct vc4_transfer *)ptrans; @@ -110,8 +104,11 @@ struct pipe_resource *vc4_resource_create(struct pipe_screen *pscreen, const struct pipe_resource *tmpl); void vc4_update_shadow_baselevel_texture(struct pipe_context *pctx, struct pipe_sampler_view *view); -void vc4_update_shadow_index_buffer(struct pipe_context *pctx, - const struct pipe_index_buffer *ib); +struct pipe_resource *vc4_get_shadow_index_buffer(struct pipe_context *pctx, + const struct pipe_draw_info *info, + uint32_t offset, + uint32_t count, + uint32_t *shadow_offset); void vc4_dump_surface(struct pipe_surface *psurf); #endif /* VC4_RESOURCE_H */