glsl: more accurately handle swizzle in 64bit varying split with no left value
as implied in the surrounding code, left_components can be 0 here, in which case creating a left swizzle is unnecessary (and triggers an assert) this moves a failing assert farther down the stack to a more useful location when trying to pack e.g., struct[3] { dvec3; float; } ref spec@arb_gpu_shader_fp64@execution@inout@vs-out-fs-in-s1-s2@3-dvec2-float Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7134>
This commit is contained in:
parent
d75d12f507
commit
4231cc2e99
|
@ -238,23 +238,15 @@ spec/arb_gpu_shader_fp64/execution/inout/vs-out-fs-in-s2/3-double-float: crash
|
|||
spec/arb_gpu_shader_fp64/execution/inout/vs-out-fs-in-s2/3-dvec2-float: crash
|
||||
spec/arb_gpu_shader_fp64/execution/inout/vs-out-fs-in-s2/3-dvec3-float: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-float-float-i64vec2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-float-float-i64vec3: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-float-float-int64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-float-float-i64vec3: fail
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-float-float-u64vec2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-float-float-u64vec3: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-float-float-uint64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-i64vec2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-i64vec2: fail
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-i64vec3: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-int64_t/3/2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-u64vec2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-u64vec3: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-uint64_t/3/2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float-uint64_t/3/2: fail
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float/3-i64vec2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float/3-i64vec3: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float/3-int64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float/3-i64vec3: fail
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float/3-u64vec2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float/3-u64vec3: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-float/3-uint64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-s2/2-s3/2-float-int64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-s2/2-s3/2-float-uint64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-s2/2-s3/2-vec3-int64_t: crash
|
||||
|
@ -270,12 +262,8 @@ spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-s2/3-u64vec2-float: cr
|
|||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-s2/3-u64vec3-float: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-s2/3-uint64_t-float: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-vec3-i64vec2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-vec3-i64vec3: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-vec3-int64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-vec3-int64_t/3/2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-vec3-u64vec2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-vec3-u64vec3: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-vec3-uint64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s1-vec3-uint64_t/3/2: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s2/2-s3/2-float-int64_t: crash
|
||||
spec/arb_gpu_shader_int64/execution/inout/vs-out-fs-in-s2/2-s3/2-float-uint64_t: crash
|
||||
|
@ -569,9 +557,9 @@ spec/nv_viewport_swizzle/viewport_swizzle: skip
|
|||
summary:
|
||||
name: results
|
||||
---- --------
|
||||
pass: 15807
|
||||
fail: 83
|
||||
crash: 170
|
||||
pass: 15819
|
||||
fail: 87
|
||||
crash: 154
|
||||
skip: 315
|
||||
timeout: 0
|
||||
warn: 0
|
||||
|
|
|
@ -580,20 +580,21 @@ lower_packed_varyings_visitor::lower_rvalue(ir_rvalue *rvalue,
|
|||
right_swizzle_values[i] = i + left_components;
|
||||
right_swizzle_name[i] = "xyzw"[i + left_components];
|
||||
}
|
||||
ir_swizzle *left_swizzle = new(this->mem_ctx)
|
||||
ir_swizzle(rvalue, left_swizzle_values, left_components);
|
||||
|
||||
ir_swizzle *right_swizzle = new(this->mem_ctx)
|
||||
ir_swizzle(rvalue->clone(this->mem_ctx, NULL), right_swizzle_values,
|
||||
right_components);
|
||||
char *left_name
|
||||
= ralloc_asprintf(this->mem_ctx, "%s.%s", name, left_swizzle_name);
|
||||
char *right_name
|
||||
= ralloc_asprintf(this->mem_ctx, "%s.%s", name, right_swizzle_name);
|
||||
if (left_components)
|
||||
if (left_components) {
|
||||
char *left_name
|
||||
= ralloc_asprintf(this->mem_ctx, "%s.%s", name, left_swizzle_name);
|
||||
ir_swizzle *left_swizzle = new(this->mem_ctx)
|
||||
ir_swizzle(rvalue, left_swizzle_values, left_components);
|
||||
fine_location = this->lower_rvalue(left_swizzle, fine_location,
|
||||
unpacked_var, left_name, false,
|
||||
vertex_index);
|
||||
else
|
||||
} else
|
||||
/* Top up the fine location to the next slot */
|
||||
fine_location++;
|
||||
return this->lower_rvalue(right_swizzle, fine_location, unpacked_var,
|
||||
|
|
Loading…
Reference in New Issue