render/vulkan: Guard hostmem import with env flag

Direct host memory import is experimental. Put it behind an environment
variable to allow easy testing.
This commit is contained in:
Kenny Levinsen 2024-06-25 12:52:09 +02:00
parent b385af41dc
commit dfbb819044
4 changed files with 11 additions and 1 deletions

View file

@ -49,6 +49,10 @@ wlroots reads these environment variables
* *WLR_RENDERER_ALLOW_SOFTWARE*: allows the gles2 renderer to use software
rendering
## Vulkan renderer
* *WLR_VK_DIRECT_SHM_IMPORT*: Allow importing shm buffers directly as host memory
## scenes
* *WLR_SCENE_DEBUG_DAMAGE*: specifies debug options for screen damage related

View file

@ -324,6 +324,8 @@ struct wlr_vk_renderer {
VkImage dst_image;
VkDeviceMemory dst_img_memory;
} read_pixels_cache;
bool direct_shm_import;
};
// vertex shader push constant range data

View file

@ -27,6 +27,7 @@
#include "render/vulkan/shaders/output.frag.h"
#include "types/wlr_buffer.h"
#include "types/wlr_matrix.h"
#include "util/env.h"
// TODO:
// - simplify stage allocation, don't track allocations but use ringbuffer-like
@ -2417,6 +2418,8 @@ struct wlr_renderer *vulkan_renderer_create_for_device(struct wlr_vk_device *dev
wl_list_init(&renderer->color_transforms);
wl_list_init(&renderer->pipeline_layouts);
renderer->direct_shm_import = env_parse_bool("WLR_VK_DIRECT_SHM_IMPORT");
if (!init_static_render_data(renderer)) {
goto error;
}

View file

@ -456,7 +456,8 @@ static struct wlr_texture *vulkan_texture_from_pixels(
img_info.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
}
if (renderer->dev->api.vkGetMemoryHostPointerPropertiesEXT) {
if (renderer->direct_shm_import &&
renderer->dev->api.vkGetMemoryHostPointerPropertiesEXT) {
img_info.tiling = VK_IMAGE_TILING_LINEAR;
img_info.initialLayout = VK_IMAGE_LAYOUT_PREINITIALIZED;