1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef __NV30_RESOURCE_H__ 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define __NV30_RESOURCE_H__ 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "nouveau/nouveau_buffer.h" 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid nv30_resource_screen_init(struct pipe_screen *); 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid nv30_resource_init(struct pipe_context *); 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct nv30_surface { 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_surface base; 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t offset; 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t pitch; 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t width; 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint16_t height; 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint16_t depth; 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic INLINE struct nv30_surface * 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_surface(struct pipe_surface *ps) 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (struct nv30_surface *)ps; 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct nv30_miptree_level { 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t offset; 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t pitch; 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t zslice_size; 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct nv30_miptree { 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct nv04_resource base; 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct nv30_miptree_level level[13]; 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t uniform_pitch; 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t layer_size; 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org boolean swizzled; 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ms_mode; 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ms_x:1; 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned ms_y:1; 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic INLINE struct nv30_miptree * 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_miptree(struct pipe_resource *pt) 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (struct nv30_miptree *)pt; 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct pipe_resource * 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_miptree_create(struct pipe_screen *, const struct pipe_resource *); 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct pipe_resource * 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_miptree_from_handle(struct pipe_screen *, const struct pipe_resource *, 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct winsys_handle *); 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct pipe_surface * 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_miptree_surface_new(struct pipe_context *, struct pipe_resource *, 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const struct pipe_surface *); 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_miptree_surface_del(struct pipe_context *, struct pipe_surface *); 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_resource_copy_region(struct pipe_context *pipe, 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_resource *dst, unsigned dst_level, 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned dstx, unsigned dsty, unsigned dstz, 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_resource *src, unsigned src_level, 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const struct pipe_box *src_box); 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnv30_resource_resolve(struct pipe_context *, const struct pipe_resolve_info *); 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 72