Path: blob/21.2-virgl/src/gallium/winsys/svga/drm/vmw_buffer.h
4573 views
/**********************************************************1* Copyright 2009-2015 VMware, Inc. All rights reserved.2*3* Permission is hereby granted, free of charge, to any person4* obtaining a copy of this software and associated documentation5* files (the "Software"), to deal in the Software without6* restriction, including without limitation the rights to use, copy,7* modify, merge, publish, distribute, sublicense, and/or sell copies8* of the Software, and to permit persons to whom the Software is9* furnished to do so, subject to the following conditions:10*11* The above copyright notice and this permission notice shall be12* included in all copies or substantial portions of the Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,15* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF16* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND17* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS18* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN19* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN20* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE21* SOFTWARE.22*23**********************************************************/242526#ifndef VMW_BUFFER_H_27#define VMW_BUFFER_H_2829#include <assert.h>30#include "pipe/p_compiler.h"31#include "pipebuffer/pb_bufmgr.h"32#include "util/u_debug_flush.h"333435/* These extra flags are used wherever the pb_usage_flags enum type is used */36#define VMW_BUFFER_USAGE_SHARED (1 << 14)37#define VMW_BUFFER_USAGE_SYNC (1 << 15)3839struct SVGAGuestPtr;40struct pb_buffer;41struct pb_manager;42struct svga_winsys_buffer;43struct svga_winsys_surface;44struct vmw_winsys_screen;4546struct vmw_buffer_desc {47struct pb_desc pb_desc;48struct vmw_region *region;49};505152#ifdef DEBUG5354struct pb_buffer *55vmw_pb_buffer(struct svga_winsys_buffer *buffer);56struct svga_winsys_buffer *57vmw_svga_winsys_buffer_wrap(struct pb_buffer *buffer);58struct debug_flush_buf *59vmw_debug_flush_buf(struct svga_winsys_buffer *buffer);6061#else62static inline struct pb_buffer *63vmw_pb_buffer(struct svga_winsys_buffer *buffer)64{65assert(buffer);66return (struct pb_buffer *)buffer;67}686970static inline struct svga_winsys_buffer *71vmw_svga_winsys_buffer_wrap(struct pb_buffer *buffer)72{73return (struct svga_winsys_buffer *)buffer;74}75#endif7677void78vmw_svga_winsys_buffer_destroy(struct svga_winsys_screen *sws,79struct svga_winsys_buffer *buf);80void *81vmw_svga_winsys_buffer_map(struct svga_winsys_screen *sws,82struct svga_winsys_buffer *buf,83unsigned flags);8485void86vmw_svga_winsys_buffer_unmap(struct svga_winsys_screen *sws,87struct svga_winsys_buffer *buf);8889struct pb_manager *90vmw_gmr_bufmgr_create(struct vmw_winsys_screen *vws);9192boolean93vmw_gmr_bufmgr_region_ptr(struct pb_buffer *buf,94struct SVGAGuestPtr *ptr);959697#endif /* VMW_BUFFER_H_ */9899100