aboutsummaryrefslogtreecommitdiff
path: root/render
AgeCommit message (Collapse)Author
2023-11-30wlr_texture: Introduce wlr_texture_read_pixelsAlexander Orzechowski
2023-11-30render/gles2: save/restore context when creating/submitting a render passSimon Ser
This is useful for e.g. lazily blitting a texture for readback purposes while rendering.
2023-11-30render/gles2: reword wlr_gles2_texture commentsSimon Ser
These comments were a bit misleading: - "GL_TEXTURE_2D == mutable": not really, imported non-external-only DMA-BUFs would also use this target, but are not mutable. - "Only affects target == GL_TEXTURE_2D": same here. - "If imported from a wlr_buffer": not really, would be NULL if imported from a shm wlr_buffer. Adjust these comments to better reflect reality and adjust the check in gles2_texture_update_from_buffer().
2023-11-30render/gles2: Inline texture invalidationAlexander Orzechowski
Let's us share more code with the other code path
2023-11-30render/gles2: Don't attach texture as buffer addonAlexander Orzechowski
Since wlr_gles2_buffer is now managing importing for us, there is no reason for us to continue doing this.
2023-11-30render/gles2: Don't track image in textureAlexander Orzechowski
We can get it from the buffer
2023-11-30render/gles2: Don't double import dmabufAlexander Orzechowski
We can double import a dmabuf if we use it as a texture target and a render target. Instead, let's unify render targets and texture dmabuf imports to use wlr_gles2_buffer which manages the EGLImageKHR
2023-11-30render/gles2: Destroy textures firstAlexander Orzechowski
Since imported textures will be based off of gles2_buffer we have to destroy textures first or else they will have an invalid reference to the buffers they are imported from.
2023-11-30renderer/gles2: Bail rendering to external buffers when binding themAlexander Orzechowski
We can't do it while we're creating them because we'll want to use gles2 buffers for textures soon.
2023-11-30render/gles2: Lazily create buffer fboAlexander Orzechowski
2023-11-29render: Drop rendering_with_bufferAlexander Orzechowski
This is always true now that we can only render with a buffer.
2023-11-29renderer: Drop wlr_renderer_beginAlexander Orzechowski
2023-11-29render/gles2: check external-only flag in get_or_create_buffer()Simon Ser
If the external-only flag is set, then the EGLImage is only supported for use with GL_TEXTURE_EXTERNAL_OES texture targets. In particular, the EGLImage cannot be bound to a RBO.
2023-11-29render/gles2: Don't track has_alpha in pixel_formatAlexander Orzechowski
Why track the alpha here when we can already get that information elsewhere?
2023-11-28render/egl: fallback to GBM FD if EGLDevice is not availableSimon Ser
It's possible that we don't have an EGLDevice if we created the EGL context from a GBM device. Let's ensure all GPU-accelerated renderers always have a DRM FD to return by falling back to GBM's FD.
2023-11-28render/vulkan: drop current_command_bufferSimon Ser
This was used by the legacy rendering API. Since begin()/end() only need to set current_render_buffer and nothing else, we can drop all of these bits.
2023-11-25Cleanup wlr_matrix.h includesSimon Ser
Many files used to require wlr_matrix but no longer do.
2023-11-23util/transform: move over wl_output_transform helpersSimon Ser
These aren't really tied to wlr_output.
2023-11-22render: drop legacy rendering APISimon Ser
2023-11-22render/vulkan: drop legacy rendering APISimon Ser
2023-11-22render/pixman: drop legacy rendering APISimon Ser
2023-11-22render/gles2: drop legacy rendering APISimon Ser
2023-11-22render: drop legacy render passSimon Ser
All built-in renderers now implement the new API.
2023-11-21render/vulkan: undo alpha premult for 8-bpc ARGB/ABGRManuel Stoeckl
When a texel from the Vulkan format VK_FORMAT_B8G8R8A8_SRGB is read, the sRGB to linear conversion is applied independently to the R, G, and B channels; the A channel has no influence on this. However, DRM_FORMAT_ARGB8888 buffers are, per Wayland protocol, not encoded in this fashion; one must first unpremultiply the color channels before doing sRGB to linear conversion. This commit switches to handling ARGB8888 and ABGR8888 formats using the general fragment shader conversion from electrical to optical values.
2023-10-31Remove unnecessary codeJiDe Zhang
Not needs set GL_DEPTH_TEST, Because when rendering to a framebuffer that has no depth buffer, depth testing always behaves as though the test is disabled, The initial value for each capability with the exception of GL_DITHER is GL_FALSE.
2023-10-26render/vulkan: use VK_KHR_global_priorityeri
References: #3386
2023-10-26render/vulkan: remove unused queue_props in rendererSimon Zeni
2023-10-21renderer/vulkan: don't add two alphas together in blend funcBrett Ernst
2023-10-17render/vulkan: undo alpha premult before sRGB encoding/decodingSimon Ser
sRGB encoding/decoding needs to happen with straight alpha, not pre-multiplied alpha.
2023-10-06render/allocator: log message when GBM is disabledSimon Ser
When the backend and renderer would need GBM but it's disabled at compile-time, log a message to make this situation easier to debug.
2023-10-06render: log error when requested renderer is compile-time disabledSimon Ser
It can be a bit confusing to debug when the user requests an explicit renderer but it's disabled at build-time. Log an error when that happens.
2023-10-05render/vulkan: constrain blend to output subpass to redrawn regionManuel Stoeckl
This commit only applies to the render pass API.
2023-10-05renderer: Don't crash when trying to fallback to pixmanAlexander Orzechowski
Pixman won't be chosen by default if the system has a valid render node but gles2 and vulkan creation failed.
2023-10-05renderer_autocreate_with_drm_fd: Ensure fd isn't bogusAlexander Orzechowski
2023-10-03treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practicalAlexander Orzechowski
2023-09-21render/pass: Remove empty box early returnAlexander Orzechowski
2023-09-21renderer: Use wlr_render_rect_options_get_boxAlexander Orzechowski
Fixes: #3697
2023-09-21render/pass: Introduce wlr_render_rect_options_get_boxAlexander Orzechowski
2023-09-10render/vulkan: fix validation error with vkCmdBlitImageManuel Stoeckl
Specfically, VUID-vkCmdBlitImage-srcImage-00247.
2023-09-09render/vulkan: de-duplicate VkImageUsageFlagsSimon Ser
The flags passed to vkCreateImage() must match the flags used when querying formats. Make this clearer by using the same variable.
2023-08-24render/pass: ensure rect has positive sizeSimon Ser
Ported from wlr_render_rect().
2023-08-23render: ensure wlr_render_rect_options->box is nonemptyManuel Stoeckl
This optimization also fixes an validation error with the Vulkan renderer by ensuring vkCmdClearAttachments does not receive empty regions.
2023-08-23render: only open DRM render node if necessarySimon Ser
Only open a render node if we actually need one (ie, if we're about to attempt GLES2 or Vulkan).
2023-08-21egl: Don't assume display is owned when KHR_display_reference is unsupportedAlexander Orzechowski
We could potentially leak a display here, but not really because the display acts as a singleton that will be returned next time a renderer of the same device is created.
2023-08-21egl: Remove dead codeAlexander Orzechowski
Display is always NULL here since egl_init is always last to be called.
2023-08-20renderer/vulkan: Defer device lost signal until end of passAlexander Orzechowski
If the compositor were to try to handle a GPU reset within the lost signal (by recreating the renderer) we should avoid referencing renderer resources after the lost signal. This prevents use after free for such compositors.
2023-08-14renderer: Sanity check texture source boundsAlexander Orzechowski
2023-08-03Avoid using memcpy() to copy structsSimon Ser
We can just use a regular assignment instead. This is more type-safe since there is no need to provide the struct size. The remaining memcpy() calls perform array copies or copies from void pointers (which may be unaligned).
2023-07-27render/vulkan: use renamed glslang binary by defaultq234rty
glslang 12.3.0 renamed glslangValidator to glslang, use that by default and use the old name as a fallback. References: https://github.com/KhronosGroup/glslang/blob/main/CHANGES.md?plain=1#L14
2023-07-12render/gles2: wrap timer setup in push_gles2_debug()Simon Ser
With this, errors should be properly wrapped in the debug scope.