Skip to content

Initial TBR chapter.#338

Merged
gpx1000 merged 8 commits intoKhronosGroup:mainfrom
gpx1000:TBR-and-IBR
Apr 8, 2026
Merged

Initial TBR chapter.#338
gpx1000 merged 8 commits intoKhronosGroup:mainfrom
gpx1000:TBR-and-IBR

Conversation

@gpx1000
Copy link
Copy Markdown
Contributor

@gpx1000 gpx1000 commented Aug 4, 2025

NB, fix the TBR link to the Simple Game Engine tutorial when it is published.

@cforfang
Copy link
Copy Markdown

cforfang commented Aug 5, 2025

Can I ask if a lot of this was written by AI? I'm very surprised by a lot of the text. Also the notion that one might as a SW developer 'choose' between TBR vs IMR, and have code trying to determine what to pick (ref the PowerConsumptionAnalyzer code) is very strange to me.

@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Aug 5, 2025

Parts were written by AI, specifically the power consumption analyzer code as that is outside my normal wheelhouse; but looking at the references they looked solid and I edited it to make it read mostly correct to me. So, genesis by AI sure, but heavy human editing.

@cforfang
Copy link
Copy Markdown

cforfang commented Aug 5, 2025

I'm not able to a point by point feedback, but for example the VK_EXT_robustness2 section seems like total nonsense to me. And claims about use of VK_KHR_dynamic_rendering_local_read by Unity and Unreal is as far as I know also not true. As I scroll through the guide there is in general a lot of strange claims and commentary I think.

@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Aug 5, 2025

Okay, no worries, I'll rewrite it.

@cforfang
Copy link
Copy Markdown

cforfang commented Aug 5, 2025

Probably not too useful to drop more 'random' drive-by comments like this, but for another example I think none of the use-cases mentioned for VK_EXT_shader_tile_image (bloom, edge-detection, FXAA, SSR) makes sense as the extension only gives access to the current pixel while all of these effects need access to other pixels.

FWIW I've ping some folks here at Arm to see if we can help review and support development of the guide -- I think it's a great initiative to be clear, but it probably needs some close review especially as there is not too much good and up-to-date public info about current mobile GPUs to pull from (hence also why the idea of the guide is good, of course) :)

@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Aug 5, 2025

Thanks it's MUCH appreciated. I'm by far not the best expert at TBR; and I really want to try to get updated information out there. There's a reason I read all of the research articles linked and tried to put as much research into this chapter as I could. If we could get more details and more review, I'm much happier. Soon as I get a chance, I'm going to update from the comments already generated here.

@solidpixel
Copy link
Copy Markdown

solidpixel commented Aug 5, 2025

The chapter title is Tile-Based Rendering Best Practices, but most of what it talks about is nothing to do with tile-based rendering but related to other aspects of vendor-specific implementation detail or orthogonal mobile GPU issues (constant registers, coherent memory, thermal, etc). For a Vulkan guide I'd probably split this up - having a topic focused only on the effects of being tile based is useful and the rest is somewhat a distraction.

The most important things for tilers (good use of loadOp/storeOp) seems to be buried right at the end, and the second most important (good use of pipeline barriers to get pipelining) isn't mentioned at all.

@SaschaWillems
Copy link
Copy Markdown
Collaborator

Not that much of a hardware guy, but isn't laziliy allocated memory / transient attachment and important Vulkan concept for TBRs? If so might be good to add that.

@SaschaWillems
Copy link
Copy Markdown
Collaborator

And I second the remarks about the power consumption part of that chapter. I tried to understand the code and data, but felt kinda lost. Wouldn't stuff like that require querying vendor specific apis to get real world power usage? Didn't see that mentioned anywhere.

@SaschaWillems
Copy link
Copy Markdown
Collaborator

SaschaWillems commented Aug 5, 2025

Also some of the links don't point to anything usefull, e.g. these:

Imagination PowerVR Architecture Guide: Shows tile memory providing 10-20x bandwidth compared to external memory

Qualcomm Adreno Performance Guide: Demonstrates GMEM (tile memory) efficiency in mobile gaming scenarios

NVIDIA Tegra TBR Analysis: Research paper showing 60% power reduction through bandwidth optimization

IEEE Computer Graphics and Applications: Tile-Based Rendering analysis and improvements research

IEEE Transactions on Computers: Thermal management in mobile graphics processing research

Either point to or redirect to a (company) landing page instead of the linked e.g. "Research papers" or documents.

@SaschaWillems
Copy link
Copy Markdown
Collaborator

And other links don't make sense, e.g. this:

Vulkan-Hpp: Modern C++ bindings with TBR optimization examples

That links to the Vulkan-Hpp headers, I don't see why or how that relates to TBR optimizations?

@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Aug 5, 2025

I'm going to rewrite this. Sorry not ready for prime time.

@ZehuiLin-Huawei
Copy link
Copy Markdown

Huawei Maleoon GPU Guide: Maleoon GPU Rendering Optimization

…ines, and implementation-agnostic practices.
@ZehuiLin-Huawei
Copy link
Copy Markdown

Currently information is scattered in various corners. And same information appears a few times including thing like "profile on target devices", or "Tile size not exposed by core Vulkan".
The documentation structure could be improved by establishing a main line of reasoning and developing the content within the framework of this logic. The current version does not seem to be really useful for developers.

@marty-johnson59 marty-johnson59 added the Priority Important to do this as soon as possible label Jan 22, 2026
…ation, attachment management, and mobile-specific techniques
@iagoCL
Copy link
Copy Markdown

iagoCL commented Mar 10, 2026

A bit orthogonal to tilers, but it might be useful to explain that compute shaders can have lower effective bandwidth compared to the vertex and fragment stages on mobile GPUs.

Developers may want to move work to fragment and avoid enabling USAGE_STORAGE on images that do not need it, as this can disable compression: https://developer.arm.com/documentation/101897/0304/Buffers-and-textures/AFBC-textures-for-Vulkan

Refine TBR best practices: improve precision guidance, clarify MSAA/HSR sections, and expand attachment operation details
@gpx1000
Copy link
Copy Markdown
Contributor Author

gpx1000 commented Mar 16, 2026

#367 I added an embedded chapter here as it looked like some of the advice was starting to get away from TBR and into generic embedded programming. That made me realize we had a gap. Please help review that and see if we need to add things there or move some things from here into there or vice-versa.

gpx1000 added 2 commits April 8, 2026 11:03
# Conflicts:
#	antora/modules/ROOT/nav.adoc
#	guide.adoc
@gpx1000 gpx1000 merged commit e189447 into KhronosGroup:main Apr 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Priority Important to do this as soon as possible

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants