i965: Select ranges of UBO data to be uploaded as push constants.
This adds a NIR pass that decides which portions of UBOS we should upload as push constants, rather than pull constants. v2: Switch to uint16_t for the UBO block number, because we may have a lot of them in Vulkan (suggested by Jason). Add more comments about bitfield trickery (requested by Matt). v3: Skip vec4 stages for now...I haven't finished wiring up support in the vec4 backend, and so pushing the data but not using it will just be wasteful. Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
@@ -468,6 +468,13 @@ struct brw_image_param {
|
||||
*/
|
||||
#define BRW_SHADER_TIME_STRIDE 64
|
||||
|
||||
struct brw_ubo_range
|
||||
{
|
||||
uint16_t block;
|
||||
uint8_t start;
|
||||
uint8_t length;
|
||||
};
|
||||
|
||||
struct brw_stage_prog_data {
|
||||
struct {
|
||||
/** size of our binding table. */
|
||||
@@ -488,6 +495,8 @@ struct brw_stage_prog_data {
|
||||
/** @} */
|
||||
} binding_table;
|
||||
|
||||
struct brw_ubo_range ubo_ranges[4];
|
||||
|
||||
GLuint nr_params; /**< number of float params/constants */
|
||||
GLuint nr_pull_params;
|
||||
unsigned nr_image_params;
|
||||
|
Reference in New Issue
Block a user