panvk: pass noperspective_varyings sysval as a push constant
This can handle mismatched interpolation qualifiers between VS and FS, and is a conformant noperspective implementation. Passing this sysval dynamically has a performance cost. In the future we can reduce this by passing it as a constant in some situations. Signed-off-by: Benjamin Lee <benjamin.lee@collabora.com> Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32127>
This commit is contained in:
@@ -2691,15 +2691,6 @@ dEQP-VK.draw.renderpass.indexed_draw.draw_instanced_indexed_triangle_list_offset
|
||||
dEQP-VK.draw.renderpass.indexed_draw.draw_instanced_indexed_triangle_list_with_alloc_offset,Fail
|
||||
dEQP-VK.draw.renderpass.indexed_draw.draw_instanced_indexed_triangle_strip_with_alloc_offset,Fail
|
||||
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.structured.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.structured.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.structured.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.structured.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.separate.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.separate.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.separate.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.separate.with_sample_decoration.4_samples,Fail
|
||||
|
||||
dEQP-VK.draw.renderpass.inverted_depth_ranges.nodepthclamp_deltazero,Fail
|
||||
|
||||
dEQP-VK.memory.pipeline_barrier.host_write_index_buffer.1024,Fail
|
||||
@@ -2711,9 +2702,6 @@ dEQP-VK.memory.pipeline_barrier.host_write_index_buffer.8192,Fail
|
||||
dEQP-VK.spirv_assembly.instruction.compute.mul_extended.unsigned_8bit,Crash
|
||||
dEQP-VK.spirv_assembly.instruction.compute.mul_extended.signed_8bit,Crash
|
||||
|
||||
dEQP-VK.spirv_assembly.instruction.graphics.cross_stage.basic_type.no_perspective,Fail
|
||||
dEQP-VK.spirv_assembly.instruction.graphics.cross_stage.interface_blocks.no_perspective,Fail
|
||||
|
||||
# New with vk_clear
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.resolve_image.whole_copy_before_resolving_no_cab.4_bit,Fail
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.resolve_image.copy_with_regions_before_resolving.4_bit,Fail
|
||||
@@ -2755,26 +2743,11 @@ dEQP-VK.wsi.wayland.swapchain.simulate_oom.min_image_count,Crash
|
||||
dEQP-VK.wsi.wayland.swapchain.simulate_oom.pre_transform,Crash
|
||||
dEQP-VK.wsi.wayland.swapchain.simulate_oom.present_mode,Crash
|
||||
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.4_samples,Fail
|
||||
|
||||
|
||||
# New with sampleRateShading
|
||||
dEQP-VK.pipeline.monolithic.multisample_shader_builtin.write_sample_mask.1_samples,Fail
|
||||
dEQP-VK.pipeline.fast_linked_library.multisample_shader_builtin.write_sample_mask.1_samples,Fail
|
||||
dEQP-VK.pipeline.pipeline_library.multisample_shader_builtin.write_sample_mask.1_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.no_offset_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.no_offset_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_max_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_max_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_min_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_min_4_samples,Fail
|
||||
|
||||
dEQP-VK.dynamic_rendering.primary_cmd_buff.basic.2_cmdbuffers_resuming,Fail
|
||||
dEQP-VK.dynamic_rendering.primary_cmd_buff.basic.2_secondary_2_primary_cmdbuffers_resuming,Fail
|
||||
@@ -2788,23 +2761,6 @@ dEQP-VK.dynamic_rendering.primary_cmd_buff.basic.contents_secondary_primary_cmdb
|
||||
dEQP-VK.dynamic_rendering.primary_cmd_buff.basic.partial_binding_depth_stencil,Fail
|
||||
dEQP-VK.dynamic_rendering.primary_cmd_buff.basic.single_cmdbuffer_resuming,Fail
|
||||
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.4_samples,Fail
|
||||
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.indexed_draw.draw_indexed_triangle_list_offset_minus_one_with_alloc_offset,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.indexed_draw.draw_indexed_triangle_list_offset_minus_one_with_bind_offset_with_alloc_offset,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.indexed_draw.draw_indexed_triangle_list_offset_negative_large_with_alloc_offset,Fail
|
||||
@@ -2881,25 +2837,6 @@ dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.indexed_draw.draw_instanced_inde
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.indexed_draw.draw_instanced_indexed_triangle_strip_with_bind_offset_with_alloc_offset,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.inverted_depth_ranges.nodepthclamp_deltazero,Fail
|
||||
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.no_offset_1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.no_offset_4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.offset_max_1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.offset_max_4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.offset_min_1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.offset_min_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.no_offset_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.no_offset_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_max_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_max_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_min_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_min_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.no_offset_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.no_offset_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_max_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_max_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_min_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_min_4_samples,Fail
|
||||
|
||||
dEQP-VK.rasterization.rasterization_order_attachment_access.depth.samples_1.multi_draw_barriers,Crash
|
||||
dEQP-VK.rasterization.rasterization_order_attachment_access.stencil.samples_1.multi_draw_barriers,Crash
|
||||
|
||||
|
||||
@@ -271,70 +271,9 @@ dEQP-VK.api.device_init.create_device_global_priority_khr.basic,Fail
|
||||
dEQP-VK.api.device_init.create_device_global_priority_query.basic,Fail
|
||||
dEQP-VK.api.device_init.create_device_global_priority_query_khr.basic,Fail
|
||||
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.no_offset_1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.no_offset_4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.offset_max_1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.offset_max_4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.offset_min_1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.linear_interpolation.offset_min_4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.separate.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.separate.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.separate.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.separate.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.structured.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.structured.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.structured.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.renderpass.multiple_interpolation.structured.with_sample_decoration.4_samples,Fail
|
||||
|
||||
dEQP-VK.renderpass.dedicated_allocation.attachment_allocation.input_output.63,Fail
|
||||
dEQP-VK.renderpass2.dedicated_allocation.attachment_allocation.input_output.63,Fail
|
||||
|
||||
dEQP-VK.spirv_assembly.instruction.graphics.cross_stage.basic_type.no_perspective,Fail
|
||||
dEQP-VK.spirv_assembly.instruction.graphics.cross_stage.interface_blocks.no_perspective,Fail
|
||||
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.no_offset_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.no_offset_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_max_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_max_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_min_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_min_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.no_offset_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.no_offset_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_max_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_max_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_min_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_min_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.no_offset_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.no_offset_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_max_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_max_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_min_1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_min_4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.separate.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.separate.with_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.structured.no_sample_decoration.4_samples,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.1_sample,Fail
|
||||
dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.multiple_interpolation.structured.with_sample_decoration.4_samples,Fail
|
||||
|
||||
dEQP-VK.glsl.limits.near_max.fragment_input.components_123,Fail
|
||||
dEQP-VK.glsl.limits.near_max.fragment_input.components_124,Fail
|
||||
|
||||
|
||||
@@ -231,12 +231,19 @@ prepare_sysvals(struct panvk_cmd_buffer *cmdbuf,
|
||||
const struct vk_rasterization_state *rs =
|
||||
&cmdbuf->vk.dynamic_graphics_state.rs;
|
||||
struct pan_fb_info *fbinfo = &cmdbuf->state.gfx.render.fb.info;
|
||||
const struct panvk_shader *fs = cmdbuf->state.gfx.fs.shader;
|
||||
|
||||
if (gfx_state_dirty(cmdbuf, RENDER_STATE)) {
|
||||
sysvals->fs.multisampled = fbinfo->nr_samples > 1;
|
||||
gfx_state_set_dirty(cmdbuf, PUSH_UNIFORMS);
|
||||
}
|
||||
|
||||
uint32_t noperspective_varyings = fs ? fs->info.varyings.noperspective : 0;
|
||||
if (sysvals->vs.noperspective_varyings != noperspective_varyings) {
|
||||
sysvals->vs.noperspective_varyings = noperspective_varyings;
|
||||
cmdbuf->state.gfx.push_uniforms = 0;
|
||||
}
|
||||
|
||||
if (dyn_gfx_state_dirty(cmdbuf, CB_BLEND_CONSTANTS)) {
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(cb->blend_constants); i++)
|
||||
sysvals->blend.constants[i] =
|
||||
|
||||
@@ -99,14 +99,17 @@ panvk_cmd_prepare_draw_sysvals(struct panvk_cmd_buffer *cmdbuf,
|
||||
struct pan_fb_info *fbinfo = &cmdbuf->state.gfx.render.fb.info;
|
||||
|
||||
unsigned base_vertex = draw->index_size ? draw->vertex_offset : 0;
|
||||
uint32_t noperspective_varyings = fs ? fs->info.varyings.noperspective : 0;
|
||||
if (sysvals->vs.first_vertex != draw->offset_start ||
|
||||
sysvals->vs.base_vertex != base_vertex ||
|
||||
sysvals->vs.base_instance != draw->first_instance ||
|
||||
sysvals->layer_id != draw->layer_id ||
|
||||
sysvals->fs.multisampled != (fbinfo->nr_samples > 1)) {
|
||||
sysvals->fs.multisampled != (fbinfo->nr_samples > 1) ||
|
||||
sysvals->vs.noperspective_varyings != noperspective_varyings) {
|
||||
sysvals->vs.first_vertex = draw->offset_start;
|
||||
sysvals->vs.base_vertex = base_vertex;
|
||||
sysvals->vs.base_instance = draw->first_instance;
|
||||
sysvals->vs.noperspective_varyings = noperspective_varyings;
|
||||
sysvals->layer_id = draw->layer_id;
|
||||
sysvals->fs.multisampled = fbinfo->nr_samples > 1;
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ struct panvk_graphics_sysvals {
|
||||
uint32_t first_vertex;
|
||||
uint32_t base_vertex;
|
||||
uint32_t base_instance;
|
||||
uint32_t noperspective_varyings;
|
||||
} vs;
|
||||
|
||||
struct {
|
||||
|
||||
@@ -120,6 +120,14 @@ panvk_lower_sysvals(nir_builder *b, nir_instr *instr, void *data)
|
||||
val = load_sysval_from_push_const(b, SYSVAL(graphics, fs.multisampled),
|
||||
bit_size, num_comps);
|
||||
break;
|
||||
case nir_intrinsic_load_noperspective_varyings_pan:
|
||||
/* TODO: lower this to a constant with monolithic pipelines */
|
||||
/* TODO: use a VS epilog specialized on constant noperspective_varyings
|
||||
* with VK_EXT_graphics_pipeline_libraries and VK_EXT_shader_object */
|
||||
assert(b->shader->info.stage == MESA_SHADER_VERTEX);
|
||||
val = load_sysval_from_push_const(b, SYSVAL(graphics, vs.noperspective_varyings),
|
||||
bit_size, num_comps);
|
||||
break;
|
||||
|
||||
#if PAN_ARCH <= 7
|
||||
case nir_intrinsic_load_layer_id:
|
||||
|
||||
Reference in New Issue
Block a user