mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
tgsi/scan: handle holes between VS inputs, assert-fail in other cases
"st/mesa: overhaul vertex setup for clearing, glDrawPixels, glBitmap" added a vertex shader declaring IN[0] and IN[2], but not IN[1]. Drivers relying on tgsi_shader_info can't handle holes in declarations, because tgsi_shader_info doesn't track that. This is just a quick workaround meant for stable that will work for vertex shaders. This fixes radeonsi DrawPixels and CopyPixels crashes. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
31a0affa28
commit
190a291b03
1 changed files with 9 additions and 1 deletions
|
|
@ -247,7 +247,14 @@ scan_declaration(struct tgsi_shader_info *info,
|
|||
info->input_interpolate[reg] = (ubyte)fulldecl->Interp.Interpolate;
|
||||
info->input_interpolate_loc[reg] = (ubyte)fulldecl->Interp.Location;
|
||||
info->input_cylindrical_wrap[reg] = (ubyte)fulldecl->Interp.CylindricalWrap;
|
||||
info->num_inputs++;
|
||||
|
||||
/* Vertex shaders can have inputs with holes between them. */
|
||||
if (info->processor == TGSI_PROCESSOR_VERTEX)
|
||||
info->num_inputs = MAX2(info->num_inputs, reg + 1);
|
||||
else {
|
||||
info->num_inputs++;
|
||||
assert(reg < info->num_inputs);
|
||||
}
|
||||
|
||||
/* Only interpolated varyings. Don't include POSITION.
|
||||
* Don't include integer varyings, because they are not
|
||||
|
|
@ -341,6 +348,7 @@ scan_declaration(struct tgsi_shader_info *info,
|
|||
info->output_semantic_name[reg] = (ubyte) semName;
|
||||
info->output_semantic_index[reg] = (ubyte) semIndex;
|
||||
info->num_outputs++;
|
||||
assert(reg < info->num_outputs);
|
||||
|
||||
if (semName == TGSI_SEMANTIC_COLOR)
|
||||
info->colors_written |= 1 << semIndex;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue