From: Brian Paul Date: Thu, 25 May 2017 16:22:33 +0000 (-0600) Subject: svga: document some incorrect VGPU10 shader translation issues X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=31ff7bff5af2db13581d2e313f29d4be08f98e3a;p=mesa.git svga: document some incorrect VGPU10 shader translation issues We have a few mistakes in our shader translation code, but the virtual GPU is forgiving. Reviewed-by: Michal Krol Reviewed-by: Neha Bhende Reviewed-by: Jose Fonseca --- diff --git a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c index 3131444e495..1dd76ccda19 100644 --- a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c +++ b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c @@ -1030,6 +1030,9 @@ emit_src_register(struct svga_shader_emitter_v10 *emit, operand0.value = operand1.value = 0; if (is_prim_id) { + /* NOTE: we should be using VGPU10_OPERAND_1_COMPONENT here, but + * our virtual GPU accepts this as-is. + */ operand0.numComponents = VGPU10_OPERAND_0_COMPONENT; operand0.operandType = VGPU10_OPERAND_TYPE_INPUT_PRIMITIVEID; } @@ -5096,6 +5099,9 @@ emit_sample(struct svga_shader_emitter_v10 *emit, /* SAMPLE dst, coord(s0), resource, sampler */ begin_emit_instruction(emit); + /* NOTE: for non-fragment shaders, we should use VGPU10_OPCODE_SAMPLE_L + * with LOD=0. But our virtual GPU accepts this as-is. + */ emit_sample_opcode(emit, VGPU10_OPCODE_SAMPLE, inst->Instruction.Saturate, offsets); emit_dst_register(emit, get_tex_swizzle_dst(&swz_info)); @@ -5236,6 +5242,9 @@ emit_txp(struct svga_shader_emitter_v10 *emit, begin_emit_instruction(emit); if (tgsi_is_shadow_target(target)) + /* NOTE: for non-fragment shaders, we should use + * VGPU10_OPCODE_SAMPLE_C_LZ, but our virtual GPU accepts this as-is. + */ opcode = VGPU10_OPCODE_SAMPLE_C; else opcode = VGPU10_OPCODE_SAMPLE;