Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5085>
es_rel_patch_id,
es_sample_mask_in,
es_sample_id,
es_rel_patch_id,
es_sample_mask_in,
es_sample_id,
es_tess_factor_base,
es_vertexid,
es_tess_coord,
es_tess_factor_base,
es_vertexid,
es_tess_coord,
case nir_intrinsic_load_sample_mask_in:
m_sv_values.set(es_sample_mask_in);
break;
case nir_intrinsic_load_sample_mask_in:
m_sv_values.set(es_sample_mask_in);
break;
+ case nir_intrinsic_load_sample_pos:
+ m_sv_values.set(es_sample_pos);
+ /* fallthrough */
case nir_intrinsic_load_sample_id:
m_sv_values.set(es_sample_id);
break;
case nir_intrinsic_load_sample_id:
m_sv_values.set(es_sample_id);
break;
return emit_interp_deref_at_offset(instr);
case nir_intrinsic_interp_deref_at_centroid:
return emit_interp_deref_at_centroid(instr);
return emit_interp_deref_at_offset(instr);
case nir_intrinsic_interp_deref_at_centroid:
return emit_interp_deref_at_centroid(instr);
+ case nir_intrinsic_load_sample_pos:
+ return emit_load_sample_pos(instr);
+
+bool FragmentShaderFromNir::emit_load_sample_pos(nir_intrinsic_instr* instr)
+{
+ GPRVector dest = vec_from_nir(instr->dest, nir_dest_num_components(instr->dest));
+ auto fetch = new FetchInstruction(vc_fetch,
+ no_index_offset,
+ fmt_32_32_32_32_float,
+ vtx_nf_scaled,
+ vtx_es_none,
+ m_sample_id_reg,
+ dest,
+ 0,
+ false,
+ 0xf,
+ R600_BUFFER_INFO_CONST_BUFFER,
+ 0,
+ bim_none,
+ false,
+ false,
+ 0,
+ 0,
+ 0,
+ PValue(),
+ {0,1,2,3});
+ fetch->set_flag(vtx_srf_mode);
+ emit_instruction(fetch);
+ return true;
+}
+
bool FragmentShaderFromNir::emit_interp_deref_at_sample(nir_intrinsic_instr* instr)
{
GPRVector slope = get_temp_vec4();
bool FragmentShaderFromNir::emit_interp_deref_at_sample(nir_intrinsic_instr* instr)
{
GPRVector slope = get_temp_vec4();
bool emit_load_front_face(nir_intrinsic_instr* instr);
bool emit_load_sample_mask_in(nir_intrinsic_instr* instr);
bool emit_load_front_face(nir_intrinsic_instr* instr);
bool emit_load_sample_mask_in(nir_intrinsic_instr* instr);
+ bool emit_load_sample_pos(nir_intrinsic_instr* instr);
bool emit_load_sample_id(nir_intrinsic_instr* instr);
bool emit_interp_deref_at_sample(nir_intrinsic_instr* instr);
bool emit_interp_deref_at_offset(nir_intrinsic_instr* instr);
bool emit_load_sample_id(nir_intrinsic_instr* instr);
bool emit_interp_deref_at_sample(nir_intrinsic_instr* instr);
bool emit_interp_deref_at_offset(nir_intrinsic_instr* instr);