summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nvfx/nvfx_resource.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/nvfx/nvfx_resource.h')
-rw-r--r--src/gallium/drivers/nvfx/nvfx_resource.h194
1 files changed, 0 insertions, 194 deletions
diff --git a/src/gallium/drivers/nvfx/nvfx_resource.h b/src/gallium/drivers/nvfx/nvfx_resource.h
deleted file mode 100644
index 4a663583b46..00000000000
--- a/src/gallium/drivers/nvfx/nvfx_resource.h
+++ /dev/null
@@ -1,194 +0,0 @@
-#ifndef NVFX_RESOURCE_H
-#define NVFX_RESOURCE_H
-
-#include "util/u_transfer.h"
-#include "util/u_format.h"
-#include "util/u_math.h"
-#include "util/u_double_list.h"
-#include "util/u_surfaces.h"
-#include "util/u_dirty_surfaces.h"
-#include <nouveau/nouveau_bo.h>
-
-struct pipe_resource;
-struct nv04_region;
-
-struct nvfx_resource {
- struct pipe_resource base;
- struct nouveau_bo *bo;
-};
-
-static INLINE
-struct nvfx_resource *nvfx_resource(struct pipe_resource *resource)
-{
- return (struct nvfx_resource *)resource;
-}
-
-#define NVFX_RESOURCE_FLAG_USER (NOUVEAU_RESOURCE_FLAG_DRV_PRIV << 0)
-
-/* is resource mapped into the GPU's address space (i.e. VRAM or GART) ? */
-static INLINE boolean
-nvfx_resource_mapped_by_gpu(struct pipe_resource *resource)
-{
- return nvfx_resource(resource)->bo->handle;
-}
-
-/* is resource in VRAM? */
-static inline int
-nvfx_resource_on_gpu(struct pipe_resource* pr)
-{
-#if 0
- // a compiler error here means you need to apply libdrm-nouveau-add-domain.patch to libdrm
- // TODO: return FALSE if not VRAM and on a PCI-E system
- return ((struct nvfx_resource*)pr)->bo->domain & (NOUVEAU_BO_VRAM | NOUVEAU_BO_GART);
-#else
- return TRUE;
-#endif
-}
-
-#define NVFX_MAX_TEXTURE_LEVELS 16
-
-struct nvfx_miptree {
- struct nvfx_resource base;
-
- unsigned linear_pitch; /* for linear textures, 0 for swizzled and compressed textures with level-dependent minimal pitch */
- unsigned face_size; /* 128-byte aligned face/total size */
- unsigned level_offset[NVFX_MAX_TEXTURE_LEVELS];
-
- struct util_surfaces surfaces;
-};
-
-struct nvfx_surface {
- struct pipe_surface base;
- unsigned pitch;
- unsigned offset;
-};
-
-static INLINE struct nouveau_bo *
-nvfx_surface_buffer(struct pipe_surface *surf)
-{
- struct nvfx_resource *mt = nvfx_resource(surf->texture);
-
- return mt->bo;
-}
-
-void
-nvfx_init_resource_functions(struct pipe_context *pipe);
-
-void
-nvfx_screen_init_resource_functions(struct pipe_screen *pscreen);
-
-
-/* Internal:
- */
-
-struct pipe_resource *
-nvfx_miptree_create(struct pipe_screen *pscreen, const struct pipe_resource *pt);
-
-void
-nvfx_miptree_destroy(struct pipe_screen *pscreen,
- struct pipe_resource *presource);
-
-struct pipe_resource *
-nvfx_miptree_from_handle(struct pipe_screen *pscreen,
- const struct pipe_resource *template,
- struct winsys_handle *whandle);
-
-void
-nvfx_miptree_surface_del(struct pipe_context *pipe, struct pipe_surface *ps);
-
-struct pipe_surface *
-nvfx_miptree_surface_new(struct pipe_context *pipe, struct pipe_resource *pt,
- const struct pipe_surface *surf_tmpl);
-
-/* only for miptrees, don't use for buffers */
-
-/* NOTE: for swizzled 3D textures, this just returns the offset of the mipmap level */
-static inline unsigned
-nvfx_subresource_offset(struct pipe_resource* pt, unsigned face, unsigned level, unsigned zslice)
-{
- if(pt->target == PIPE_BUFFER)
- return 0;
- else
- {
- struct nvfx_miptree *mt = (struct nvfx_miptree *)pt;
-
- unsigned offset = mt->level_offset[level];
- if (pt->target == PIPE_TEXTURE_CUBE)
- offset += mt->face_size * face;
- else if (pt->target == PIPE_TEXTURE_3D && mt->linear_pitch)
- offset += zslice * util_format_get_2d_size(pt->format, (mt->linear_pitch ? mt->linear_pitch : util_format_get_stride(pt->format, u_minify(pt->width0, level))), u_minify(pt->height0, level));
- return offset;
- }
-}
-
-static inline unsigned
-nvfx_subresource_pitch(struct pipe_resource* pt, unsigned level)
-{
- if(pt->target == PIPE_BUFFER)
- return ((struct nvfx_resource*)pt)->bo->size;
- else
- {
- struct nvfx_miptree *mt = (struct nvfx_miptree *)pt;
-
- if(mt->linear_pitch)
- return mt->linear_pitch;
- else
- return util_format_get_stride(pt->format, u_minify(pt->width0, level));
- }
-}
-
-struct nvfx_buffer
-{
- struct nvfx_resource base;
- uint8_t* data;
- unsigned size;
-
- /* the range of data not yet uploaded to the GPU bo */
- unsigned dirty_begin;
- unsigned dirty_end;
-
- /* whether all transfers were unsynchronized */
- boolean dirty_unsynchronized;
-
- /* whether it would have been profitable to upload
- * the latest updated data to the GPU immediately */
- boolean last_update_static;
-
- /* how many bytes we need to draw before we deem
- * the buffer to be static
- */
- long long bytes_to_draw_until_static;
-};
-
-static inline struct nvfx_buffer* nvfx_buffer(struct pipe_resource* pr)
-{
- return (struct nvfx_buffer*)pr;
-}
-
-/* this is an heuristic to determine whether we are better off uploading the
- * buffer to the GPU, or just continuing pushing it on the FIFO
- */
-static inline boolean nvfx_buffer_seems_static(struct nvfx_buffer* buffer)
-{
- return buffer->last_update_static
- || buffer->bytes_to_draw_until_static < 0;
-}
-
-struct pipe_resource *
-nvfx_buffer_create(struct pipe_screen *pscreen,
- const struct pipe_resource *template);
-
-void
-nvfx_buffer_destroy(struct pipe_screen *pscreen,
- struct pipe_resource *presource);
-
-struct pipe_resource *
-nvfx_user_buffer_create(struct pipe_screen *screen,
- void *ptr,
- unsigned bytes,
- unsigned usage);
-
-void
-nvfx_buffer_upload(struct nvfx_buffer* buffer);
-
-#endif