Notes
Quickly: ES 3.2
Roadmapping
What’s Next
Two With One Blow
By Now
New Order
Read MoreMilestone
If you’re on Intel…
Nv
All In A Day’s Work
I posted yesterday in brief about zink on nvidia blob, But what actually was necessary to get this working?
Mo Cards Mo Problems
What Is Even Happening Anymore
Thanks once again to my generous sponsors at Valve, as well as a patch from a GLX guru with the very accurate commit log “I hate everything.”, I put in a little time today and came up with this:
Samplin
Overhead Migration
Itshappening.gif
Return of the Blog
Overhead
A Quintessential Metric
Hold Em
A Different Strategy
Why Do I Do These Things
Some People Will Appreciate This
New Year New Corrections
It Happens
Inlining Problems Away
A Different Sort Of Optimization
poll()ing For WSI
A New Sync
Rebase Me Out Of Here
ETOOMUCHREBASE
Differently Cached
memcpy harder
Alpha First
The Name Of The Game
Pointers
To Begin
This is the journey of how zink-wip went from 0 fps in RPCS3 to a bit more than that. Quite a bit more, in fact, if you’re using RADV.
Emulation
In Many Forms
New Strategy
New Week, New Idea
Count Harder
Counting
I keep saying this, but I feel like I’m progressively getting further away from the original goal of this blog, which was to talk about actual code that I’m writing and not just create great graphics memes. So today it’s once again a return to the roots and the code that I had intended to talk about yesterday.
Subtle Movements
Alright, But Now I’m Really Back
Starting Over
New Game+
Don't Call It A Comeback
I’ve Been Here For…
Roundup 20201122
Another Brief Review
Roundup 20201115
A Brief Review
Last Day
This Is The End
Architecture
It’s Time.
Bringing The Heat
New Hotness
Invalidation
Buffering
Catching Up
Never Seen Before
Blended
Brain Hurty
An Update
Busy, Busy, Busy
Performance Can Only Increase
Jumping Right In
Back To Being Interesting
Moar Descriptors
Cache Harder
Descriptors Once More
Back To Caching
I Skipped Bucket Day
Back To Basics
Healthier Blogging
Automate
A Showcase
Perhaps You Thought I Was Finished
But No, I’m Not
Engage Thrusters
Performance 2.0
Accelerate
Finally, Performance
Will It Blend
Adventures In Blending
Dynamism
Viewporting
Long Week
Blog Returns
Draw Parameters
Hoo Boy
Query Stats
Long, Long Day
Funday
Just For Fun
More Map Gains
The Optimizations Continue
Optimizing transfer_map is one of the first issues I created, and it’s definitely one of the most important, at least as it pertains to unit tests. So many unit tests perform reads on buffers that it’s crucial to ensure no unnecessary flushing or stalling is happening here.
Buffer Ranging
A Quick Optimization
Test Xzibiting
Benchmarking vs Testing
Geometry Overview
At Last, Geometry Shaders
Zink Gains Part One
A Different Friday
Borders
Extensions Extensions Extensions
Clear Out
glClear
Tessellation
The Tessellating Commences
Victory Lap
After Some Time
Xfb And Barriers
Yet Another XFB Post
Xfb Redux
XFB: The Re-Return of the Sequel I Didn’t Want
Formatting
enum pipe_format
One thing that’s everywhere in mesa (at least outside of mesa core) is enum pipe_format
. This enum is used to describe image formats. The general way that it works is that there’s a hook in struct pipe_screen
:
/**
* Check if the given pipe_format is supported as a texture or
* drawing surface.
* \param bindings bitmask of PIPE_BIND_*
*/
bool (*is_format_supported)( struct pipe_screen *,
enum pipe_format format,
enum pipe_texture_target target,
unsigned sample_count,
unsigned storage_sample_count,
unsigned bindings );
Each gallium driver implements this hook, and then gallium queries the driver before creating a resource using a given format and then also before using a created resource in various ways.
Shader Testing
Post-Storm Posting
I’m back, and today’s topic is testing.
Another Minor Annoyance
Instancing
Primitive Pain
Queries Again
Debugging
The Hidden Dangers of State Tracking
Versioning
How Do Mesa Versions Work?
Internal Changes
Variable Lists
Today I’m going to briefly go over a big-ish API change that’s taking place as a result of a MR from Jason Ekstrand.
Fast Friday
Spec Harder
Partial Writes
A Slow Day
Shader Processing
Last of the Vertex Processors
Gross Restarts
Directing Indirection
Memory
I’m Back
Timestamps
We’re Back
aNIRtomy
NIR passes
Extensions
Something different
Restart
Primitive Restart
Status Update
A quick break
I’ve been blogging pretty in-depth about Zink and related code for a while, so let’s do a quick roundup with some future blog post spoilers.
Testing Accidents
Something more recent
Fragcolors
Extensions Extensions Extensions
Smol Extension
ARB_arrays_of_arrays
UBO Sighting
At last
It’s time to finish up UBO support in this long form patch review blog series. Here’s where the current progress has left things:
Binding Locations
No time to waste
Nirly There
assert()gery
Opengl 3.1
Long Weekend
Briefly Piglit
A quick word
When Maths Get Weird
Shader ALUs
Anatomy Of A Shader Bugfix
Something different
A Step Back
Finally, An Introduction
Slots
A new problem
Query Finishing Touches
Testing Testing Testing
Query Overwhelming
The overflow problem
Query Resets
To start with
Query Interrupted
Short post today
Queries
The next problem
The Saga Continues
More Fixes
Yesterday I covered the problems related to handling gl_PointSize
during the SPIR-V
conversion. But there were still more problems to overcome.
But It Was Not Over
There’s always more tests
Finally Extensions
What are extensions?
Querying Xfb
Queries: What are they?
Drawing At Last
Quick Runthrough
This xfb
blog series has gone on for a while now, and it’d be great if it ended soon. Unfortunately, there’s a lot of corner cases which are being found by piglit, and the work and fixing continue.
Stream Output
To Begin…
Stream output is another name for xfb
closer to the driver level. Inside mesa (and gallium), we’ll commonly see different types related to struct pipe_stream_output_*
which provide info about how the xfb
info is output to its corresponding buffers.
XFB And Me
Getting Deeper
After getting the extensions and features enabled so things would run (more on this in a future post), I dove into the deep end of ntv
because I was getting some crazy assert()
errors.
Transform Feedback: What Is It?
But really, what is it?
New Blog Who Dis
After years of using one blog, then using a number of different blogs, then not blogging at all, I’m now blogging once more. Currently, the plan is to focus on mesa code that I’m working on, specifically (at least for now) zink code.