Path: blob/21.2-virgl/src/broadcom/vulkan/v3dvx_private.h
4560 views
/*1* Copyright © 2021 Raspberry Pi2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL17* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING19* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS20* IN THE SOFTWARE.21*/2223/* This file generates the per-v3d-version function prototypes. It must only24* be included from v3dv_private.h.25*/2627#ifndef V3DV_PRIVATE_H28#error This file is included by means other than v3dv_private.h29#endif3031/* Used at v3dv_cmd_buffer */32void33v3dX(job_emit_binning_flush)(struct v3dv_job *job);3435void36v3dX(cmd_buffer_end_render_pass_secondary)(struct v3dv_cmd_buffer *cmd_buffer);3738void39v3dX(job_emit_clip_window)(struct v3dv_job *job, const VkRect2D *rect);4041void42v3dX(cmd_buffer_emit_render_pass_rcl)(struct v3dv_cmd_buffer *cmd_buffer);4344void45v3dX(cmd_buffer_emit_viewport)(struct v3dv_cmd_buffer *cmd_buffer);4647void48v3dX(cmd_buffer_emit_stencil)(struct v3dv_cmd_buffer *cmd_buffer);4950void51v3dX(cmd_buffer_emit_depth_bias)(struct v3dv_cmd_buffer *cmd_buffer);5253void54v3dX(cmd_buffer_emit_line_width)(struct v3dv_cmd_buffer *cmd_buffer);5556void57v3dX(cmd_buffer_emit_sample_state)(struct v3dv_cmd_buffer *cmd_buffer);5859void60v3dX(cmd_buffer_emit_blend)(struct v3dv_cmd_buffer *cmd_buffer);6162void63v3dX(cmd_buffer_emit_varyings_state)(struct v3dv_cmd_buffer *cmd_buffer);6465void66v3dX(cmd_buffer_emit_configuration_bits)(struct v3dv_cmd_buffer *cmd_buffer);6768void69v3dX(job_emit_binning_prolog)(struct v3dv_job *job,70const struct v3dv_frame_tiling *tiling,71uint32_t layers);7273void74v3dX(cmd_buffer_execute_inside_pass)(struct v3dv_cmd_buffer *primary,75uint32_t cmd_buffer_count,76const VkCommandBuffer *cmd_buffers);7778void79v3dX(cmd_buffer_emit_occlusion_query)(struct v3dv_cmd_buffer *cmd_buffer);8081void82v3dX(cmd_buffer_emit_gl_shader_state)(struct v3dv_cmd_buffer *cmd_buffer);838485void86v3dX(cmd_buffer_emit_draw)(struct v3dv_cmd_buffer *cmd_buffer,87struct v3dv_draw_info *info);888990void91v3dX(cmd_buffer_emit_index_buffer)(struct v3dv_cmd_buffer *cmd_buffer);9293void94v3dX(cmd_buffer_emit_draw_indexed)(struct v3dv_cmd_buffer *cmd_buffer,95uint32_t indexCount,96uint32_t instanceCount,97uint32_t firstIndex,98int32_t vertexOffset,99uint32_t firstInstance);100101void102v3dX(cmd_buffer_emit_draw_indirect)(struct v3dv_cmd_buffer *cmd_buffer,103struct v3dv_buffer *buffer,104VkDeviceSize offset,105uint32_t drawCount,106uint32_t stride);107108void109v3dX(cmd_buffer_emit_indexed_indirect)(struct v3dv_cmd_buffer *cmd_buffer,110struct v3dv_buffer *buffer,111VkDeviceSize offset,112uint32_t drawCount,113uint32_t stride);114115void116v3dX(get_hw_clear_color)(const VkClearColorValue *color,117uint32_t internal_type,118uint32_t internal_size,119uint32_t *hw_color);120121void122v3dX(cmd_buffer_render_pass_setup_render_target)(struct v3dv_cmd_buffer *cmd_buffer,123int rt,124uint32_t *rt_bpp,125uint32_t *rt_type,126uint32_t *rt_clamp);127128/* Used at v3dv_device */129130void131v3dX(pack_sampler_state)(struct v3dv_sampler *sampler,132const VkSamplerCreateInfo *pCreateInfo);133134void135v3dX(framebuffer_compute_internal_bpp_msaa)(const struct v3dv_framebuffer *framebuffer,136const struct v3dv_subpass *subpass,137uint8_t *max_bpp, bool *msaa);138139#ifdef DEBUG140void141v3dX(device_check_prepacked_sizes)(void);142#endif143144/* Used at v3dv_format */145const struct v3dv_format *146v3dX(get_format)(VkFormat);147148void149v3dX(get_internal_type_bpp_for_output_format)(uint32_t format,150uint32_t *type,151uint32_t *bpp);152153bool154v3dX(format_supports_tlb_resolve)(const struct v3dv_format *format);155156bool157v3dX(format_supports_blending)(const struct v3dv_format *format);158159bool160v3dX(tfu_supports_tex_format)(uint32_t tex_format);161162/* Used at v3dv_image */163164void165v3dX(pack_texture_shader_state)(struct v3dv_device *device,166struct v3dv_image_view *iview);167168void169v3dX(pack_texture_shader_state_from_buffer_view)(struct v3dv_device *device,170struct v3dv_buffer_view *buffer_view);171172/* Used at v3dv_meta_copy */173174uint32_t175v3dX(zs_buffer_from_aspect_bits)(VkImageAspectFlags aspects);176177uint8_t178v3dX(get_internal_depth_type)(VkFormat format);179180struct framebuffer_data;181182void183v3dX(job_emit_copy_image_to_buffer_rcl)(struct v3dv_job *job,184struct v3dv_buffer *buffer,185struct v3dv_image *image,186struct framebuffer_data *framebuffer,187const VkBufferImageCopy2KHR *region);188189void190v3dX(job_emit_resolve_image_rcl)(struct v3dv_job *job,191struct v3dv_image *dst,192struct v3dv_image *src,193struct framebuffer_data *framebuffer,194const VkImageResolve2KHR *region);195196197void198v3dX(job_emit_copy_buffer)(struct v3dv_job *job,199struct v3dv_bo *dst,200struct v3dv_bo *src,201uint32_t dst_offset,202uint32_t src_offset,203struct framebuffer_data *framebuffer,204uint32_t format,205uint32_t item_size);206207void208v3dX(job_emit_copy_buffer_rcl)(struct v3dv_job *job,209struct v3dv_bo *dst,210struct v3dv_bo *src,211uint32_t dst_offset,212uint32_t src_offset,213struct framebuffer_data *framebuffer,214uint32_t format,215uint32_t item_size);216217void218v3dX(job_emit_copy_image_rcl)(struct v3dv_job *job,219struct v3dv_image *dst,220struct v3dv_image *src,221struct framebuffer_data *framebuffer,222const VkImageCopy2KHR *region);223224void225v3dX(cmd_buffer_emit_tfu_job)(struct v3dv_cmd_buffer *cmd_buffer,226struct v3dv_image *dst,227uint32_t dst_mip_level,228uint32_t dst_layer,229struct v3dv_image *src,230uint32_t src_mip_level,231uint32_t src_layer,232uint32_t width,233uint32_t height,234const struct v3dv_format *format);235236void237v3dX(job_emit_clear_image_rcl)(struct v3dv_job *job,238struct v3dv_image *image,239struct framebuffer_data *framebuffer,240const union v3dv_clear_value *clear_value,241VkImageAspectFlags aspects,242uint32_t layer,243uint32_t level);244245void246v3dX(job_emit_fill_buffer_rcl)(struct v3dv_job *job,247struct v3dv_bo *bo,248uint32_t offset,249struct framebuffer_data *framebuffer,250uint32_t data);251252void253v3dX(job_emit_copy_buffer_to_image_rcl)(struct v3dv_job *job,254struct v3dv_image *image,255struct v3dv_buffer *buffer,256struct framebuffer_data *framebuffer,257const VkBufferImageCopy2KHR *region);258259void260v3dX(get_internal_type_bpp_for_image_aspects)(VkFormat vk_format,261VkImageAspectFlags aspect_mask,262uint32_t *internal_type,263uint32_t *internal_bpp);264265struct v3dv_job *266v3dX(cmd_buffer_copy_buffer)(struct v3dv_cmd_buffer *cmd_buffer,267struct v3dv_bo *dst,268uint32_t dst_offset,269struct v3dv_bo *src,270uint32_t src_offset,271const VkBufferCopy2KHR *region);272273void274v3dX(cmd_buffer_fill_buffer)(struct v3dv_cmd_buffer *cmd_buffer,275struct v3dv_bo *bo,276uint32_t offset,277uint32_t size,278uint32_t data);279280void281v3dX(setup_framebuffer_data)(struct framebuffer_data *fb,282VkFormat vk_format,283uint32_t internal_type,284const struct v3dv_frame_tiling *tiling);285286/* Used at v3dv_pipeline */287void288v3dX(pipeline_pack_state)(struct v3dv_pipeline *pipeline,289const VkPipelineColorBlendStateCreateInfo *cb_info,290const VkPipelineDepthStencilStateCreateInfo *ds_info,291const VkPipelineRasterizationStateCreateInfo *rs_info,292const VkPipelineMultisampleStateCreateInfo *ms_info);293void294v3dX(pipeline_pack_compile_state)(struct v3dv_pipeline *pipeline,295const VkPipelineVertexInputStateCreateInfo *vi_info);296297/* Used at v3dv_queue */298void299v3dX(job_emit_noop)(struct v3dv_job *job);300301/* Used at v3dv_descriptor_set, and other descriptor set utils */302uint32_t v3dX(descriptor_bo_size)(VkDescriptorType type);303304uint32_t v3dX(max_descriptor_bo_size)(void);305306uint32_t v3dX(combined_image_sampler_texture_state_offset)(void);307308uint32_t v3dX(combined_image_sampler_sampler_state_offset)(void);309310311