i965/clip: Make brw_clip_prog_key::interp_mode an array
Having it be a pointer means that we end up caching clip programs based
on a pointer to wm_prog_data rather than the actual interpolation modes.
We've been caching one clip program per FS ever since 91d61fbf7c
where Timothy rewrote brw_setup_vue_interpolation().
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
@@ -155,7 +155,11 @@ brw_upload_clip_prog(struct brw_context *brw)
|
||||
key.contains_flat_varying = wm_prog_data->contains_flat_varying;
|
||||
key.contains_noperspective_varying =
|
||||
wm_prog_data->contains_noperspective_varying;
|
||||
key.interp_mode = wm_prog_data->interp_mode;
|
||||
|
||||
STATIC_ASSERT(sizeof(key.interp_mode) ==
|
||||
sizeof(wm_prog_data->interp_mode));
|
||||
memcpy(key.interp_mode, wm_prog_data->interp_mode,
|
||||
sizeof(key.interp_mode));
|
||||
}
|
||||
|
||||
/* BRW_NEW_REDUCED_PRIMITIVE */
|
||||
|
||||
@@ -49,7 +49,7 @@ struct brw_clip_prog_key {
|
||||
GLbitfield64 attrs;
|
||||
bool contains_flat_varying;
|
||||
bool contains_noperspective_varying;
|
||||
const unsigned char *interp_mode;
|
||||
unsigned char interp_mode[65]; /* BRW_VARYING_SLOT_COUNT */
|
||||
GLuint primitive:4;
|
||||
GLuint nr_userclip:4;
|
||||
GLuint pv_first:1;
|
||||
|
||||
Reference in New Issue
Block a user