nv50: always keep TSC slot 0 bound
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 2 Dec 2018 02:28:04 +0000 (21:28 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Tue, 4 Dec 2018 04:11:29 +0000 (23:11 -0500)
commitde49e065077fcf26462f1859beafabf5e7a33757
treeffdf699b5eeb4fd4c878e7e0f0886c057fa88396
parent1363a47c9c4f8482fea9e8a2582a1d8e9db0e8a6
nv50: always keep TSC slot 0 bound

All TXF operations implicitly use sampler 0, and fail if it's not bound
to anything. This does not happen in LINKED_TSC mode, but we don't
currently use this.

We ensure that TSC entry at id 0 has the SRGB conversion bit enabled
(and all samplers we normally generate will too). Then when the TSC at
*slot* 0 (not to be confused with entry 0 in the global TSC table) is
unbound, we bind it to entry 0. This way, TXF operations are not
dependent on there being a regular sampler bound there.

Fixes arb_texture_buffer_object-subdata-sync among others. (TBO's are
particularly susceptible to this as they don't bind a sampler.)

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/nv50/nv50_context.c
src/gallium/drivers/nouveau/nv50/nv50_context.h
src/gallium/drivers/nouveau/nv50/nv50_tex.c