[Mesa-dev] [PATCH] radeonsi: Enable VGPR spilling for all shader types v3
Christian König
deathsimple at vodafone.de
Wed Jan 21 03:31:25 PST 2015
In general I don't think that modifying shader code with the GPU is such
a good idea. We already had quite a number of occasions where the GPU
accidentally corrupted the shader data which usually leads to lockups.
Because of this I already wanted to suggest that everything that the GPU
executes (e.g. Rings, IB, shader etc...) is only mapped readonly into
the GPU address space.
Regards,
Christian.
Am 21.01.2015 um 12:20 schrieb Marek Olšák:
> On Wed, Jan 21, 2015 at 3:03 AM, Michel Dänzer <michel at daenzer.net> wrote:
>> On 20.01.2015 22:39, Marek Olšák wrote:
>>> The problem with CPDMA (DMA_DATA and WRITE_DATA) is that the ordering
>>> of flushes must be correct. First, partial flushes must be done, so
>>> that the shaders are idle.
>> That's only necessary when reusing a single BO for the shader code, not
>> when allocating a new BO when the relocations change, right?
> Yes.
>
>>
>>> Then you can use CP DMA to update the binary. After that, ICACHE should
>>> be invalidated.
>> ICACHE has to be invalidated when writing with the CPU as well, right?
> Yes, but the invalidation at the beginning of IBs is sufficient for
> all CPU accesses, so nothing needs to be done.
>
>>
>>> The problem with mapping VRAM can be avoided by keeping a CPU copy of
>>> the binary from the beginning. We would only need a CPU copy of those
>>> shaders that use the scratch buffer. Then, you wouldn't have to read
>>> VRAM at all, which would make it even simpler.
>> Right, but CPU writes to the new BO in VRAM could cause stalls anyway.
> If CPU writes are the problem, we can create a temporary BO in GTT,
> upload and update the shader there, and copy it to the shader BO in
> VRAM using CPDMA. In this case, the shader BO in VRAM doesn't have to
> be reallocated, and shader state doesn't have to be re-emitted. Only
> the ICACHE should be flushed after CPDMA.
>
> One copy packet is better than a lot of small WRITE_DATA packets.
>
> Marek
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list