*/
bool extended_bindless_surface_offset;
+ /**
+ * Gfx11+ has a bit in the dword 3 of the sampler message header that
+ * indicates whether the sampler handle is relative to the dynamic state
+ * base address (0) or the bindless sampler base address (1). The driver
+ * can select this.
+ */
+ bool use_bindless_sampler_offset;
+
struct nir_shader *clc_shader;
};
* address space but means we can do something more efficient in the
* shader.
*/
- ubld1.MOV(component(header, 3), sampler_handle);
+ if (compiler->use_bindless_sampler_offset) {
+ assert(devinfo->ver >= 11);
+ ubld1.OR(component(header, 3), sampler_handle, brw_imm_ud(1));
+ } else {
+ ubld1.MOV(component(header, 3), sampler_handle);
+ }
} else if (is_high_sampler(devinfo, sampler)) {
fs_reg sampler_state_ptr =
retype(brw_vec1_grf(0, 3), BRW_REGISTER_TYPE_UD);