v3dv/uniforms: filling up QUNIFORM_TMU_CONFIG_P0/P1
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
This commit is contained in:
parent
272f0d9cfb
commit
b6d4148b92
|
@ -26,22 +26,18 @@
|
|||
*/
|
||||
|
||||
#include "v3dv_private.h"
|
||||
#include "vk_format_info.h"
|
||||
|
||||
static bool
|
||||
descriptor_type_is_dynamic(VkDescriptorType type)
|
||||
{
|
||||
switch (type) {
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
|
||||
return false;
|
||||
break;
|
||||
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
|
||||
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
assert(!"descriptor type not supported.\n");
|
||||
break;
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -135,6 +131,58 @@ check_push_constants_ubo(struct v3dv_cmd_buffer *cmd_buffer)
|
|||
cmd_buffer->state.dirty &= ~V3DV_CMD_DIRTY_PUSH_CONSTANTS;
|
||||
}
|
||||
|
||||
/** V3D 4.x TMU configuration parameter 0 (texture) */
|
||||
static void
|
||||
write_tmu_p0(struct v3dv_cmd_buffer *cmd_buffer,
|
||||
struct v3dv_pipeline *pipeline,
|
||||
struct v3dv_cl_out **uniforms,
|
||||
uint32_t data)
|
||||
{
|
||||
int unit = v3d_unit_data_get_unit(data);
|
||||
|
||||
struct v3dv_job *job = cmd_buffer->state.job;
|
||||
struct v3dv_descriptor_state *descriptor_state =
|
||||
&cmd_buffer->state.descriptor_state;
|
||||
|
||||
struct v3dv_descriptor *descriptor =
|
||||
get_descriptor(descriptor_state, &pipeline->texture_map,
|
||||
pipeline->layout, unit, NULL);
|
||||
|
||||
assert(descriptor);
|
||||
assert(descriptor->image_view);
|
||||
|
||||
cl_aligned_reloc(&job->indirect, uniforms,
|
||||
descriptor->image_view->texture_shader_state,
|
||||
v3d_unit_data_get_offset(data));
|
||||
|
||||
/* We need to ensure that the texture bo is added to the job */
|
||||
v3dv_job_add_bo(job, descriptor->image_view->image->mem->bo);
|
||||
}
|
||||
|
||||
/** V3D 4.x TMU configuration parameter 1 (sampler) */
|
||||
static void
|
||||
write_tmu_p1(struct v3dv_cmd_buffer *cmd_buffer,
|
||||
struct v3dv_pipeline *pipeline,
|
||||
struct v3dv_cl_out **uniforms,
|
||||
uint32_t data)
|
||||
{
|
||||
uint32_t unit = v3d_unit_data_get_unit(data);
|
||||
struct v3dv_job *job = cmd_buffer->state.job;
|
||||
struct v3dv_descriptor_state *descriptor_state =
|
||||
&cmd_buffer->state.descriptor_state;
|
||||
|
||||
struct v3dv_descriptor *descriptor =
|
||||
get_descriptor(descriptor_state, &pipeline->sampler_map,
|
||||
pipeline->layout, unit, NULL);
|
||||
|
||||
assert(descriptor);
|
||||
assert(descriptor->sampler);
|
||||
|
||||
cl_aligned_reloc(&job->indirect, uniforms,
|
||||
descriptor->sampler->state,
|
||||
v3d_unit_data_get_offset(data));
|
||||
}
|
||||
|
||||
static void
|
||||
write_ubo_ssbo_uniforms(struct v3dv_cmd_buffer *cmd_buffer,
|
||||
struct v3dv_pipeline *pipeline,
|
||||
|
@ -253,6 +301,14 @@ v3dv_write_uniforms(struct v3dv_cmd_buffer *cmd_buffer,
|
|||
case QUNIFORM_UBO_ADDR:
|
||||
write_ubo_ssbo_uniforms(cmd_buffer, pipeline, &uniforms,
|
||||
uinfo->contents[i], data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_TMU_CONFIG_P0:
|
||||
write_tmu_p0(cmd_buffer, pipeline, &uniforms, data);
|
||||
break;
|
||||
|
||||
case QUNIFORM_TMU_CONFIG_P1:
|
||||
write_tmu_p1(cmd_buffer, pipeline, &uniforms, data);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue