v3d: Add VIR dumping of TMU config p0/p1.
I had a bit of it for V3D 3.x, but didn't update it for 4.x.
This commit is contained in:
@@ -252,6 +252,21 @@ enum quniform_contents {
|
|||||||
QUNIFORM_SPILL_SIZE_PER_THREAD,
|
QUNIFORM_SPILL_SIZE_PER_THREAD,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline uint32_t v3d_tmu_config_data_create(uint32_t unit, uint32_t value)
|
||||||
|
{
|
||||||
|
return unit << 24 | value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t v3d_tmu_config_data_get_unit(uint32_t data)
|
||||||
|
{
|
||||||
|
return data >> 24;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t v3d_tmu_config_data_get_value(uint32_t data)
|
||||||
|
{
|
||||||
|
return data & 0xffffff;
|
||||||
|
}
|
||||||
|
|
||||||
struct v3d_varying_slot {
|
struct v3d_varying_slot {
|
||||||
uint8_t slot_and_component;
|
uint8_t slot_and_component;
|
||||||
};
|
};
|
||||||
|
@@ -103,6 +103,18 @@ vir_print_reg(struct v3d_compile *c, const struct qinst *inst,
|
|||||||
fprintf(stderr, " (tex[%d].p1)", data);
|
fprintf(stderr, " (tex[%d].p1)", data);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case QUNIFORM_TMU_CONFIG_P0:
|
||||||
|
fprintf(stderr, " (tex[%d].p0 | 0x%x)",
|
||||||
|
v3d_tmu_config_data_get_unit(data),
|
||||||
|
v3d_tmu_config_data_get_value(data));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case QUNIFORM_TMU_CONFIG_P1:
|
||||||
|
fprintf(stderr, " (tex[%d].p1 | 0x%x)",
|
||||||
|
v3d_tmu_config_data_get_unit(data),
|
||||||
|
v3d_tmu_config_data_get_value(data));
|
||||||
|
break;
|
||||||
|
|
||||||
case QUNIFORM_TEXTURE_WIDTH:
|
case QUNIFORM_TEXTURE_WIDTH:
|
||||||
fprintf(stderr, " (tex[%d].width)", data);
|
fprintf(stderr, " (tex[%d].width)", data);
|
||||||
break;
|
break;
|
||||||
|
@@ -148,17 +148,13 @@ write_tmu_p0(struct v3d_job *job,
|
|||||||
struct v3d_texture_stateobj *texstate,
|
struct v3d_texture_stateobj *texstate,
|
||||||
uint32_t data)
|
uint32_t data)
|
||||||
{
|
{
|
||||||
/* Extract the texture unit from the top bits, and the compiler's
|
int unit = v3d_tmu_config_data_get_unit(data);
|
||||||
* packed p0 from the bottom.
|
|
||||||
*/
|
|
||||||
uint32_t unit = data >> 24;
|
|
||||||
uint32_t p0 = data & 0x00ffffff;
|
|
||||||
|
|
||||||
struct pipe_sampler_view *psview = texstate->textures[unit];
|
struct pipe_sampler_view *psview = texstate->textures[unit];
|
||||||
struct v3d_sampler_view *sview = v3d_sampler_view(psview);
|
struct v3d_sampler_view *sview = v3d_sampler_view(psview);
|
||||||
struct v3d_resource *rsc = v3d_resource(psview->texture);
|
struct v3d_resource *rsc = v3d_resource(psview->texture);
|
||||||
|
|
||||||
cl_aligned_reloc(&job->indirect, uniforms, sview->bo, p0);
|
cl_aligned_reloc(&job->indirect, uniforms, sview->bo,
|
||||||
|
v3d_tmu_config_data_get_value(data));
|
||||||
v3d_job_add_bo(job, rsc->bo);
|
v3d_job_add_bo(job, rsc->bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,16 +165,12 @@ write_tmu_p1(struct v3d_job *job,
|
|||||||
struct v3d_texture_stateobj *texstate,
|
struct v3d_texture_stateobj *texstate,
|
||||||
uint32_t data)
|
uint32_t data)
|
||||||
{
|
{
|
||||||
/* Extract the texture unit from the top bits, and the compiler's
|
uint32_t unit = v3d_tmu_config_data_get_unit(data);
|
||||||
* packed p1 from the bottom.
|
|
||||||
*/
|
|
||||||
uint32_t unit = data >> 24;
|
|
||||||
uint32_t p0 = data & 0x00ffffff;
|
|
||||||
|
|
||||||
struct pipe_sampler_state *psampler = texstate->samplers[unit];
|
struct pipe_sampler_state *psampler = texstate->samplers[unit];
|
||||||
struct v3d_sampler_state *sampler = v3d_sampler_state(psampler);
|
struct v3d_sampler_state *sampler = v3d_sampler_state(psampler);
|
||||||
|
|
||||||
cl_aligned_reloc(&job->indirect, uniforms, sampler->bo, p0);
|
cl_aligned_reloc(&job->indirect, uniforms, sampler->bo,
|
||||||
|
v3d_tmu_config_data_get_value(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
struct v3d_cl_reloc
|
struct v3d_cl_reloc
|
||||||
|
Reference in New Issue
Block a user