1 /* 2 * Copyright (c) 2022-2024 Broadcom. All Rights Reserved. 3 * The term “Broadcom” refers to Broadcom Inc. 4 * and/or its subsidiaries. 5 * SPDX-License-Identifier: MIT 6 */ 7 8 #ifndef SVGA_SHADER_BUFFER_H 9 #define SVGA_SHADER_BUFFER_H 10 11 struct svga_shader_buffer { 12 struct pipe_shader_buffer desc; 13 struct pipe_resource *resource; 14 unsigned uav_index; 15 struct svga_winsys_surface *handle; 16 bool writeAccess; 17 }; 18 19 void 20 svga_init_shader_buffer_functions(struct svga_context *svga); 21 22 void 23 svga_cleanup_shader_buffer_state(struct svga_context *svga); 24 25 enum pipe_error 26 svga_validate_shader_buffer_resources(struct svga_context *svga, 27 unsigned count, 28 struct svga_shader_buffer *buffers, 29 bool rebind); 30 31 SVGA3dUAViewId 32 svga_create_uav_buffer(struct svga_context *svga, 33 const struct pipe_shader_buffer *buf, 34 SVGA3dSurfaceFormat format, 35 SVGA3dUABufferFlags bufFlag); 36 37 void 38 svga_uav_cache_purge_buffers(struct svga_context *svga); 39 40 bool 41 svga_shader_buffer_can_use_srv(struct svga_context *svga, 42 enum pipe_shader_type shader, 43 unsigned index, 44 struct svga_shader_buffer *buffer); 45 46 enum pipe_error 47 svga_shader_buffer_bind_srv(struct svga_context *svga, 48 enum pipe_shader_type shader, 49 unsigned index, 50 struct svga_shader_buffer *buffer); 51 52 enum pipe_error 53 svga_shader_buffer_unbind_srv(struct svga_context *svga, 54 enum pipe_shader_type shader, 55 unsigned index, 56 struct svga_shader_buffer *buffer); 57 58 enum pipe_error 59 svga_emit_rawbuf(struct svga_context *svga, 60 unsigned slot, 61 enum pipe_shader_type shader, 62 unsigned buffer_offset, 63 unsigned buffer_size, 64 void *buffer); 65 66 #endif /* SVGA_SHADER_BUFFER_H */ 67