13192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz/**********************************************************
23192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Copyright 2009 VMware, Inc.  All rights reserved.
33192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz *
43192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * Permission is hereby granted, free of charge, to any person
53192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * obtaining a copy of this software and associated documentation
63192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * files (the "Software"), to deal in the Software without
73192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * restriction, including without limitation the rights to use, copy,
83192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * modify, merge, publish, distribute, sublicense, and/or sell copies
93192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * of the Software, and to permit persons to whom the Software is
103192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * furnished to do so, subject to the following conditions:
113192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz *
123192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * The above copyright notice and this permission notice shall be
133192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * included in all copies or substantial portions of the Software.
143192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz *
153192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
163192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
173192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
183192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
193192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
203192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
213192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
223192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz * SOFTWARE.
233192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz *
243192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz **********************************************************/
253192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
263192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
273192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#ifndef VMW_FENCE_H_
283192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#define VMW_FENCE_H_
293192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
303192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
313192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#include "pipe/p_compiler.h"
323192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
333192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
343192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct pipe_fence_handle;
353192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct pb_fence_ops;
363192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct vmw_winsys_screen;
373192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
383192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
39e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstromstruct pipe_fence_handle *
40e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstromvmw_fence_create(uint32_t handle, uint32_t mask);
41e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstrom
42e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstromint
43e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstromvmw_fence_finish(struct vmw_winsys_screen *vws,
44e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstrom		 struct pipe_fence_handle *fence,
45e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstrom		 unsigned flag);
46e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstromint
47e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstromvmw_fence_signalled(struct vmw_winsys_screen *vws,
48e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstrom		    struct pipe_fence_handle *fence,
49e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstrom		    unsigned flag);
50e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstromvoid
51e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstromvmw_fence_reference(struct vmw_winsys_screen *vws,
52e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstrom		    struct pipe_fence_handle **ptr,
53e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstrom		    struct pipe_fence_handle *fence);
543192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
553192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzstruct pb_fence_ops *
563192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantzvmw_fence_ops_create(struct vmw_winsys_screen *vws);
573192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
583192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz
59e7843273fae516fa9922f12053bb6c063b39921cThomas Hellstrom
603192633d4abe262d413e41feb871fe8deed409d8Jakob Bornecrantz#endif /* VMW_FENCE_H_ */
61