1/********************************************************** 2 * Copyright 2009-2015 VMware, Inc. All rights reserved. 3 * 4 * Permission is hereby granted, free of charge, to any person 5 * obtaining a copy of this software and associated documentation 6 * files (the "Software"), to deal in the Software without 7 * restriction, including without limitation the rights to use, copy, 8 * modify, merge, publish, distribute, sublicense, and/or sell copies 9 * of the Software, and to permit persons to whom the Software is 10 * furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be 13 * included in all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 * SOFTWARE. 23 * 24 **********************************************************/ 25 26 27#ifndef VMW_BUFFER_H_ 28#define VMW_BUFFER_H_ 29 30#include <assert.h> 31#include "pipe/p_compiler.h" 32#include "pipebuffer/pb_bufmgr.h" 33#include "util/u_debug_flush.h" 34 35 36/* These extra flags are used wherever the pb_usage_flags enum type is used */ 37#define VMW_BUFFER_USAGE_SHARED (1 << 14) 38#define VMW_BUFFER_USAGE_SYNC (1 << 15) 39 40struct SVGAGuestPtr; 41struct pb_buffer; 42struct pb_manager; 43struct svga_winsys_buffer; 44struct svga_winsys_surface; 45struct vmw_winsys_screen; 46 47struct vmw_buffer_desc { 48 struct pb_desc pb_desc; 49 struct vmw_region *region; 50}; 51 52 53#ifdef DEBUG 54 55struct pb_buffer * 56vmw_pb_buffer(struct svga_winsys_buffer *buffer); 57struct svga_winsys_buffer * 58vmw_svga_winsys_buffer_wrap(struct pb_buffer *buffer); 59struct debug_flush_buf * 60vmw_debug_flush_buf(struct svga_winsys_buffer *buffer); 61 62#else 63static inline struct pb_buffer * 64vmw_pb_buffer(struct svga_winsys_buffer *buffer) 65{ 66 assert(buffer); 67 return (struct pb_buffer *)buffer; 68} 69 70 71static inline struct svga_winsys_buffer * 72vmw_svga_winsys_buffer_wrap(struct pb_buffer *buffer) 73{ 74 return (struct svga_winsys_buffer *)buffer; 75} 76#endif 77 78void 79vmw_svga_winsys_buffer_destroy(struct svga_winsys_screen *sws, 80 struct svga_winsys_buffer *buf); 81void * 82vmw_svga_winsys_buffer_map(struct svga_winsys_screen *sws, 83 struct svga_winsys_buffer *buf, 84 unsigned flags); 85 86void 87vmw_svga_winsys_buffer_unmap(struct svga_winsys_screen *sws, 88 struct svga_winsys_buffer *buf); 89 90struct pb_manager * 91vmw_gmr_bufmgr_create(struct vmw_winsys_screen *vws); 92 93boolean 94vmw_gmr_bufmgr_region_ptr(struct pb_buffer *buf, 95 struct SVGAGuestPtr *ptr); 96 97 98#endif /* VMW_BUFFER_H_ */ 99