summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/get.c
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2016-01-17 20:30:14 -0500
committerMatt Turner <[email protected]>2016-02-05 09:33:19 -0800
commit9f2e22bf343b21d6b44e6a502f00a86d169f5ade (patch)
tree02fe6791a1b259c8cd984dca22537e37a9a1d8fd /src/mesa/main/get.c
parent1106e79ed97809ef8f880cccc6cb65fefa709785 (diff)
i965/vec4: don't copy ATTR into 3src instructions with complex swizzles
The vec4 backend, at the end, does this: if (inst->is_3src()) { for (int i = 0; i < 3; i++) { if (inst->src[i].vstride == BRW_VERTICAL_STRIDE_0) assert(brw_is_single_value_swizzle(inst->src[i].swizzle)); So make sure that we use the same conditions when trying to copy-propagate. UNIFORMs will be converted to vstride 0 in convert_to_hw_regs, but so will ATTRs when interleaved (as will happen in a GS with multiple attributes). Since the vstride is not set at copy-prop time, infer it by inspecting dispatch_mode and reject ATTRs if they have non-scalar swizzles and are interleaved. Fixes assertion errors in dolphin-generated geometry shaders (or misrendering on opt builds) on Sandybridge or on IVB/HSW with INTEL_DEBUG=nodualobj. Co-authored-by: Ilia Mirkin <[email protected]> Reviewed-by: Ilia Mirkin <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93418 Cc: "11.0 11.1" <[email protected]>
Diffstat (limited to 'src/mesa/main/get.c')
0 files changed, 0 insertions, 0 deletions