aboutsummaryrefslogtreecommitdiff
path: root/render/vulkan/texture.c
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-09-07 14:58:26 +0200
committerSimon Zeni <simon@bl4ckb0ne.ca>2022-09-07 14:00:46 +0000
commit8026953df74becb38d37365d0446bec848299bf3 (patch)
tree87d5e853dce31b6e8f3bc58117ca187df3354c4f /render/vulkan/texture.c
parent30769723c1fb21761acaa4ca4e167de0aaaed891 (diff)
render/vulkan: remove unnecessary casts
No need to go back to the generic wlr_renderer/wlr_texture when passing a Vulkan renderer/texture to an internal function.
Diffstat (limited to 'render/vulkan/texture.c')
-rw-r--r--render/vulkan/texture.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/render/vulkan/texture.c b/render/vulkan/texture.c
index 52356f64..69ed3391 100644
--- a/render/vulkan/texture.c
+++ b/render/vulkan/texture.c
@@ -35,13 +35,12 @@ static VkImageAspectFlagBits mem_plane_aspect(unsigned i) {
// Will transition the texture to shaderReadOnlyOptimal layout for reading
// from fragment shader later on
-static bool write_pixels(struct wlr_texture *wlr_texture,
+static bool write_pixels(struct wlr_vk_texture *texture,
uint32_t stride, uint32_t width, uint32_t height, uint32_t src_x,
uint32_t src_y, uint32_t dst_x, uint32_t dst_y, const void *vdata,
VkImageLayout old_layout, VkPipelineStageFlags src_stage,
VkAccessFlags src_access) {
VkResult res;
- struct wlr_vk_texture *texture = vulkan_get_texture(wlr_texture);
struct wlr_vk_renderer *renderer = texture->renderer;
VkDevice dev = texture->renderer->dev->dev;
@@ -164,7 +163,7 @@ static bool vulkan_texture_update_from_buffer(struct wlr_texture *wlr_texture,
uint32_t height = rect.y2 - rect.y1;
// TODO: only map memory once
- ok = write_pixels(wlr_texture, stride, width, height, rect.x1, rect.y1,
+ ok = write_pixels(texture, stride, width, height, rect.x1, rect.y1,
rect.x1, rect.y1, data, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_ACCESS_SHADER_READ_BIT);
if (!ok) {
@@ -243,11 +242,9 @@ static struct wlr_vk_texture *vulkan_texture_create(
return texture;
}
-static struct wlr_texture *vulkan_texture_from_pixels(struct wlr_renderer *wlr_renderer,
- uint32_t drm_fmt, uint32_t stride, uint32_t width,
- uint32_t height, const void *data) {
- struct wlr_vk_renderer *renderer = vulkan_get_renderer(wlr_renderer);
-
+static struct wlr_texture *vulkan_texture_from_pixels(
+ struct wlr_vk_renderer *renderer, uint32_t drm_fmt, uint32_t stride,
+ uint32_t width, uint32_t height, const void *data) {
VkResult res;
VkDevice dev = renderer->dev->dev;
@@ -369,7 +366,7 @@ static struct wlr_texture *vulkan_texture_from_pixels(struct wlr_renderer *wlr_r
vkUpdateDescriptorSets(dev, 1, &ds_write, 0, NULL);
// write data
- if (!write_pixels(&texture->wlr_texture, stride,
+ if (!write_pixels(texture, stride,
width, height, 0, 0, 0, 0, data, VK_IMAGE_LAYOUT_UNDEFINED,
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, 0)) {
goto error;
@@ -610,10 +607,9 @@ error_image:
return VK_NULL_HANDLE;
}
-static struct wlr_texture *vulkan_texture_from_dmabuf(struct wlr_renderer *wlr_renderer,
+static struct wlr_vk_texture *vulkan_texture_from_dmabuf(
+ struct wlr_vk_renderer *renderer,
struct wlr_dmabuf_attributes *attribs) {
- struct wlr_vk_renderer *renderer = vulkan_get_renderer(wlr_renderer);
-
VkResult res;
VkDevice dev = renderer->dev->dev;
@@ -685,7 +681,7 @@ static struct wlr_texture *vulkan_texture_from_dmabuf(struct wlr_renderer *wlr_r
vkUpdateDescriptorSets(dev, 1, &ds_write, 0, NULL);
texture->dmabuf_imported = true;
- return &texture->wlr_texture;
+ return texture;
error:
vulkan_texture_destroy(texture);
@@ -710,13 +706,11 @@ static struct wlr_texture *vulkan_texture_from_dmabuf_buffer(
}
}
- struct wlr_texture *wlr_texture =
- vulkan_texture_from_dmabuf(&renderer->wlr_renderer, dmabuf);
- if (wlr_texture == NULL) {
+ texture = vulkan_texture_from_dmabuf(renderer, dmabuf);
+ if (texture == NULL) {
return false;
}
- texture = vulkan_get_texture(wlr_texture);
texture->buffer = wlr_buffer_lock(buffer);
texture->buffer_destroy.notify = texture_handle_buffer_destroy;
@@ -725,8 +719,7 @@ static struct wlr_texture *vulkan_texture_from_dmabuf_buffer(
return &texture->wlr_texture;
}
-struct wlr_texture *vulkan_texture_from_buffer(
- struct wlr_renderer *wlr_renderer,
+struct wlr_texture *vulkan_texture_from_buffer(struct wlr_renderer *wlr_renderer,
struct wlr_buffer *buffer) {
struct wlr_vk_renderer *renderer = vulkan_get_renderer(wlr_renderer);
@@ -738,7 +731,7 @@ struct wlr_texture *vulkan_texture_from_buffer(
return vulkan_texture_from_dmabuf_buffer(renderer, buffer, &dmabuf);
} else if (wlr_buffer_begin_data_ptr_access(buffer,
WLR_BUFFER_DATA_PTR_ACCESS_READ, &data, &format, &stride)) {
- struct wlr_texture *tex = vulkan_texture_from_pixels(wlr_renderer,
+ struct wlr_texture *tex = vulkan_texture_from_pixels(renderer,
format, stride, buffer->width, buffer->height, data);
wlr_buffer_end_data_ptr_access(buffer);
return tex;