From 34bf5e27c6d798bcaa63c7541ecea1d3e99fdd3b Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Fri, 14 Mar 2014 06:20:36 -0400 Subject: nv50/ir/gk110: add 64/128-bit fetch/export support Signed-off-by: Ilia Mirkin --- src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 4 ++++ src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp | 7 ------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp index 7c60837..d248a1a 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp @@ -1217,10 +1217,12 @@ CodeEmitterGK110::emitPFETCH(const Instruction *i) void CodeEmitterGK110::emitVFETCH(const Instruction *i) { + unsigned int size = typeSizeof(i->dType); uint32_t offset = i->src(0).get()->reg.data.offset; code[0] = 0x00000002 | (offset << 23); code[1] = 0x7ec00000 | (offset >> 9); + code[1] |= (size / 4 - 1) << 18; #if 0 if (i->perPatch) @@ -1239,10 +1241,12 @@ CodeEmitterGK110::emitVFETCH(const Instruction *i) void CodeEmitterGK110::emitEXPORT(const Instruction *i) { + unsigned int size = typeSizeof(i->dType); uint32_t offset = i->src(0).get()->reg.data.offset; code[0] = 0x00000002 | (offset << 23); code[1] = 0x7f000000 | (offset >> 9); + code[1] |= (size / 4 - 1) << 18; #if 0 if (i->perPatch) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp index 1f3932e..10a5fe2 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp @@ -361,13 +361,6 @@ TargetNVC0::isAccessSupported(DataFile file, DataType ty) const return typeSizeof(ty) <= 8; if (ty == TYPE_B96) return false; - if (getChipset() >= 0xf0) { - // XXX: find wide vfetch/export - if (ty == TYPE_B128) - return false; - if (ty == TYPE_U64) - return false; - } return true; } -- cgit v1.1