nir: Add a concept of constant data associated with a shader
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 29 Jun 2018 02:16:19 +0000 (19:16 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 2 Jul 2018 19:09:42 +0000 (12:09 -0700)
commitc90f221e0a1f89332189dd5ec79dccf6b251ecf5
treeb4c2356897c19e02834d0f47d0107492cab6643a
parente8e159e9df40ee76468e05be073d94ec78d4bf32
nir: Add a concept of constant data associated with a shader

This commit adds a concept to NIR of having a blob of constant data
associated with a shader.  Instead of being a UBO or uniform that can be
manipulated by the client, this constant data considered part of the
shader and remains constant across all invocations of the given shader
until the end of time.  To access this constant data from the shader, we
add a new load_constant intrinsic.  The intention is that drivers will
eventually lower load_constant intrinsics to load_ubo, load_uniform, or
something similar.  Constant data will be used by the optimization pass
in the next commit but this concept may also be useful for OpenCL.

v2 (Jason Ekstrand):
 - Rename num_constants to constant_data_size (anholt)

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/compiler/nir/nir.h
src/compiler/nir/nir_clone.c
src/compiler/nir/nir_intrinsics.py
src/compiler/nir/nir_serialize.c
src/compiler/nir/nir_sweep.c