mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-12 08:21:33 -04:00
render/vulkan: move blend-to-output resources to render_xxx_pass
This commit is contained in:
parent
e78131f3d3
commit
6473365361
5 changed files with 264 additions and 160 deletions
|
|
@ -302,31 +302,8 @@ struct wlr_vk_renderer {
|
|||
|
||||
VkCommandPool command_pool;
|
||||
|
||||
VkShaderModule vert_module;
|
||||
VkShaderModule tex_frag_module;
|
||||
VkShaderModule quad_frag_module;
|
||||
VkShaderModule output_module;
|
||||
|
||||
struct wl_list pipeline_layouts; // struct wlr_vk_pipeline_layout.link
|
||||
|
||||
// for blend->output subpass
|
||||
VkPipelineLayout output_pipe_layout;
|
||||
VkDescriptorSetLayout output_ds_srgb_layout;
|
||||
VkDescriptorSetLayout output_ds_lut3d_layout;
|
||||
VkSampler output_sampler_lut3d;
|
||||
// descriptor set indicating dummy 1x1x1 image, for use in the lut3d slot
|
||||
VkDescriptorSet output_ds_lut3d_dummy;
|
||||
struct wlr_vk_descriptor_pool *output_ds_lut3d_dummy_pool;
|
||||
|
||||
size_t last_output_pool_size;
|
||||
struct wl_list output_descriptor_pools; // wlr_vk_descriptor_pool.link
|
||||
|
||||
// dummy sampler to bind when output shader is not using a lookup table
|
||||
VkImage dummy3d_image;
|
||||
VkDeviceMemory dummy3d_mem;
|
||||
VkImageView dummy3d_image_view;
|
||||
bool dummy3d_image_transitioned;
|
||||
|
||||
VkSemaphore timeline_semaphore;
|
||||
uint64_t timeline_point;
|
||||
|
||||
|
|
@ -392,7 +369,8 @@ struct wlr_vk_texture_view {
|
|||
|
||||
struct wlr_vk_pipeline *setup_get_or_create_pipeline(
|
||||
struct wlr_vk_render_format_setup *setup,
|
||||
const struct wlr_vk_pipeline_key *key);
|
||||
const struct wlr_vk_pipeline_key *key,
|
||||
VkShaderModule vert_module, VkShaderModule frag_module);
|
||||
struct wlr_vk_pipeline_layout *get_or_create_pipeline_layout(
|
||||
struct wlr_vk_renderer *renderer,
|
||||
const struct wlr_vk_pipeline_layout_key *key);
|
||||
|
|
@ -468,6 +446,7 @@ void vulkan_free_ds(struct wlr_vk_renderer *renderer,
|
|||
struct wlr_vk_format_props *vulkan_format_props_from_drm(
|
||||
struct wlr_vk_device *dev, uint32_t drm_format);
|
||||
struct wlr_vk_renderer *vulkan_get_renderer(struct wlr_renderer *r);
|
||||
VkShaderModule vulkan_create_common_vert_module(struct wlr_vk_renderer *renderer);
|
||||
|
||||
struct wlr_vk_command_buffer *vulkan_acquire_command_buffer(
|
||||
struct wlr_vk_renderer *renderer);
|
||||
|
|
@ -594,6 +573,11 @@ void vulkan_change_layout(VkCommandBuffer cb, VkImage img,
|
|||
|
||||
struct wlr_vk_render_rect_pass {
|
||||
struct wlr_render_rect_pass base;
|
||||
struct wlr_vk_renderer *renderer;
|
||||
struct {
|
||||
VkShaderModule vert_module;
|
||||
VkShaderModule frag_module;
|
||||
} shader;
|
||||
};
|
||||
|
||||
bool wlr_render_rect_pass_is_vk(const struct wlr_render_rect_pass *rect_pass);
|
||||
|
|
@ -602,6 +586,11 @@ struct wlr_vk_render_rect_pass *wlr_vk_render_rect_pass_from_pass(
|
|||
|
||||
struct wlr_vk_render_texture_pass {
|
||||
struct wlr_render_texture_pass base;
|
||||
struct wlr_vk_renderer *renderer;
|
||||
struct {
|
||||
VkShaderModule vert_module;
|
||||
VkShaderModule frag_module;
|
||||
} shader;
|
||||
};
|
||||
|
||||
bool wlr_render_texture_pass_is_vk(const struct wlr_render_texture_pass *texture_pass);
|
||||
|
|
@ -610,10 +599,36 @@ struct wlr_vk_render_texture_pass *wlr_vk_render_texture_pass_from_pass(
|
|||
|
||||
struct wlr_vk_render_submit_pass {
|
||||
struct wlr_render_submit_pass base;
|
||||
struct wlr_vk_renderer *renderer;
|
||||
|
||||
struct {
|
||||
VkShaderModule vert_module;
|
||||
VkShaderModule frag_module;
|
||||
|
||||
VkPipelineLayout pipe_layout;
|
||||
VkDescriptorSetLayout ds_srgb_layout;
|
||||
VkDescriptorSetLayout ds_lut3d_layout;
|
||||
VkSampler sampler_lut3d;
|
||||
// descriptor set indicating dummy 1x1x1 image, for use in the lut3d slot
|
||||
VkDescriptorSet ds_lut3d_dummy;
|
||||
struct wlr_vk_descriptor_pool *ds_lut3d_dummy_pool;
|
||||
|
||||
size_t last_pool_size;
|
||||
struct wl_list descriptor_pools; // wlr_vk_descriptor_pool.link
|
||||
|
||||
// dummy sampler to bind when output shader is not using a lookup table
|
||||
VkImage dummy3d_image;
|
||||
VkDeviceMemory dummy3d_mem;
|
||||
VkImageView dummy3d_image_view;
|
||||
bool dummy3d_image_transitioned;
|
||||
} output;
|
||||
};
|
||||
|
||||
bool wlr_render_submit_pass_is_vk(const struct wlr_render_submit_pass *submit_pass);
|
||||
struct wlr_vk_render_submit_pass *wlr_vk_render_submit_pass_from_pass(
|
||||
struct wlr_render_submit_pass *submit_pass);
|
||||
|
||||
bool vulkan_init_submit_pass_output(struct wlr_vk_renderer *renderer,
|
||||
struct wlr_vk_render_submit_pass *submit_pass);
|
||||
|
||||
#endif // RENDER_VULKAN_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue