m_uses_interpolate_at_centroid = true;
}
-Shader::Shader(const char *type_id):
+Shader::Shader(const char *type_id, unsigned atomic_base):
m_current_block(nullptr),
m_type_id(type_id),
m_chip_class(ISA_CC_R600),
- m_next_block(0)
+ m_next_block(0),
+ m_atomic_base(atomic_base)
{
m_instr_factory = new InstrFactory();
m_chain_instr.this_shader = this;
std::bitset<es_last> m_sv_values;
- Shader(const char *type_id);
+ Shader(const char *type_id, unsigned atomic_base);
const ShaderInput& input(int base) const;
namespace r600 {
ComputeShader::ComputeShader(UNUSED const r600_shader_key& key):
- Shader("CS")
+ Shader("CS", 0)
{
}
using std::string;
FragmentShader::FragmentShader(const r600_shader_key& key):
- Shader("FS"),
+ Shader("FS", key.ps.first_atomic_counter),
m_dual_source_blend(key.ps.dual_source_blend),
m_max_color_exports(MAX2(key.ps.nr_cbufs, 1)),
m_export_highest(0),
namespace r600 {
GeometryShader::GeometryShader(const r600_shader_key& key):
- Shader("GS"),
+ Shader("GS", key.gs.first_atomic_counter),
m_tri_strip_adj_fix(key.gs.tri_strip_adj_fix)
{
}
using std::string;
TCSShader::TCSShader(const r600_shader_key& key):
- Shader("TCS"),
+ Shader("TCS", key.tcs.first_atomic_counter),
m_tcs_prim_mode(key.tcs.prim_mode)
{
}
TESShader::TESShader(const pipe_stream_output_info *so_info,
const r600_shader *gs_shader,
const r600_shader_key& key):
- VertexStageShader("TES"),
+ VertexStageShader("TES", key.tes.first_atomic_counter),
m_vs_as_gs_a(key.vs.as_gs_a),
m_tes_as_es(key.tes.as_es)
{
VertexShader::VertexShader(const pipe_stream_output_info *so_info,
r600_shader *gs_shader,
r600_shader_key& key):
- VertexStageShader("VS"),
+ VertexStageShader("VS", key.vs.first_atomic_counter),
m_vs_as_gs_a(key.vs.as_gs_a)
{
if (key.vs.as_es)