Commit Graph
18 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5 70095e458b thin3d: add sub-rectangle texture updates, use them for imgui fonts
imgui 1.92 hands the backend a list of dirty rectangles when its font atlas
grows, but thin3d could only replace a whole mip level, so every new glyph
re-uploaded the entire atlas.

Adds DrawContext::UpdateTextureRegions, taking a batch of regions so each
backend can submit them together:

- Vulkan: packs the regions into the push pool and issues a single
  vkCmdCopyBufferToImage from the init command buffer, transitioning only
  the level being written.
- OpenGL: new TEXTURE_SUBIMAGE init step. The existing sub-image path is a
  render command needing an active render pass and a texture slot, which
  doesn't fit here. Rows are packed caller-side since GLES2 lacks
  GL_UNPACK_ROW_LENGTH.
- D3D11: UpdateSubresource with a box, no staging texture needed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-12 13:16:17 -06:00
Henrik Rydgård b32c0b461a Very minor VulkanImage optimization 2025-03-30 11:22:19 +02:00
Henrik Rydgård c91169e702 Restore removed <algorithm> includes.
Turns out these were needed after all. For some reason, on Windows and
Mac, <algorithm> gets auto-included by something else so I don't notice
when it's missing, and MSVC's include dependency tracker doesn't see it
either.
2024-12-19 09:53:07 +01:00
Henrik Rydgård a3d0cb1f12 Switch away from TransitionImageLayout2 2024-04-06 17:12:32 +02:00
Henrik Rydgård 6de05f13f1 More barrier batching 2023-12-30 10:41:59 +01:00
Henrik Rydgård 364c205d95 Quick, suboptimal barrier fix for the new UpdateImageLevels functionality 2023-05-30 18:29:49 +02:00
Henrik Rydgård 2b1e87792f Vulkan: During texture upload, batch the buffer->image copies to do all the mips at once. 2023-03-14 10:11:19 +01:00
Henrik Rydgård cdb830f390 Minor optimization/cleanup 2022-12-10 12:05:40 +01:00
Henrik Rydgård 40ae99073b Remove std::string from VulkanTexture 2022-12-01 12:17:03 +01:00
Henrik Rydgård 91259aaad7 Always use array textures for framebuffers in Vulkan for simplicity. 2022-10-27 11:05:58 +02:00
Henrik Rydgård f061eadc04 Initial implementation of 3D texturing through equal-size mips (see #6357)
Vulkan-only currently, though all the other backends except ES 2.0
without GL_OES_texture_3d can support it with some work.
2022-07-31 10:43:47 +02:00
Henrik Rydgård 73452b4743 Minor cleanups 2022-04-23 22:52:28 +02:00
Henrik Rydgård 55fe21db1e Add a simple GPU profiler to profile individual events, rather than full passes. 2021-12-12 12:11:54 +01:00
Henrik Rydgård 1b1e585a35 More integration, use VMA in VulkanTexture 2021-11-22 18:54:09 +01:00
Henrik Rydgård d7ac6aa63d Fix an assortment of minor VK barrier bugs in mostly texture upload 2021-10-08 21:58:03 +02:00
Henrik Rydgård 59ac4d3e27 Vulkan: Rework mipmap generation and its image barrier/layout handling.
Fixes bugs on mobile with texture scaling + auto max quality texturing
(since that generates mipmaps with blits from an image which was just generated from
compute, making proper barriers very critical).
2021-10-05 22:50:49 +02:00
Henrik Rydgård c48bdf7efc Vulkan: Fix image layout issues after compute shader uploads.
We're already in GENERAL so probably not worth to transfer to DST just
to do even more transfers due to the silliness of GenerateMip.

I'm planning to rework the whole texture upload thing to be far more
optimal with some kind of TextureUploadManager

Fixes #13987
2021-01-30 23:09:42 +01:00
Henrik Rydgård 0e3a84b4a8 Move most GPU things to Common.
It works after the move, on Windows and Android at least.

Deletes the D3DX9 shader compiler loader, which was not used.
2020-10-04 23:39:02 +02:00