Mesa (master): radeon/llvm: Encapsulate setting of MachineOperand flags
Module: Mesa Branch: master Commit: 3a7a56e7aa56bc6cb847c241ef6bd749713ae6e1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a7a56e7aa56bc6cb847c241ef6bd749713ae6e1 Author: Tom Stellard thomas.stell...@amd.com Date: Tue Aug 21 19:30:26 2012 + radeon/llvm: Encapsulate setting of MachineOperand flags MachineOperand flags will be removed soon, so it is convienent to have only one function that modifies them. --- .../drivers/radeon/R600ExpandSpecialInstrs.cpp | 15 ++-- src/gallium/drivers/radeon/R600ISelLowering.cpp| 93 +++- src/gallium/drivers/radeon/R600InstrInfo.cpp | 10 ++ src/gallium/drivers/radeon/R600InstrInfo.h |3 + 4 files changed, 71 insertions(+), 50 deletions(-) diff --git a/src/gallium/drivers/radeon/R600ExpandSpecialInstrs.cpp b/src/gallium/drivers/radeon/R600ExpandSpecialInstrs.cpp index 9f1b816..2c19437 100644 --- a/src/gallium/drivers/radeon/R600ExpandSpecialInstrs.cpp +++ b/src/gallium/drivers/radeon/R600ExpandSpecialInstrs.cpp @@ -146,14 +146,13 @@ bool R600ExpandSpecialInstrsPass::runOnMachineFunction(MachineFunction MF) { } else { Opcode = MI.getOpcode(); } -MachineOperand NewDstOp = MachineOperand::CreateReg(DstReg, true); -NewDstOp.addTargetFlag(Flags); - -BuildMI(MBB, I, MBB.findDebugLoc(I), TII-get(Opcode)) -.addOperand(NewDstOp) -.addReg(Src0) -.addReg(Src1) --setIsInsideBundle(Chan != 0); +MachineInstr *NewMI = + BuildMI(MBB, I, MBB.findDebugLoc(I), TII-get(Opcode), DstReg) + .addReg(Src0) + .addReg(Src1); + +NewMI-setIsInsideBundle(Chan != 0); +TII-AddFlag(NewMI, 0, Flags); } MI.eraseFromParent(); } diff --git a/src/gallium/drivers/radeon/R600ISelLowering.cpp b/src/gallium/drivers/radeon/R600ISelLowering.cpp index 0a23be4..ec1250d 100644 --- a/src/gallium/drivers/radeon/R600ISelLowering.cpp +++ b/src/gallium/drivers/radeon/R600ISelLowering.cpp @@ -59,28 +59,36 @@ MachineBasicBlock * R600TargetLowering::EmitInstrWithCustomInserter( switch (MI-getOpcode()) { default: return AMDGPUTargetLowering::EmitInstrWithCustomInserter(MI, BB); case AMDGPU::CLAMP_R600: -MI-getOperand(0).addTargetFlag(MO_FLAG_CLAMP); -BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::MOV)) - .addOperand(MI-getOperand(0)) - .addOperand(MI-getOperand(1)) - .addReg(AMDGPU::PRED_SEL_OFF); -break; - +{ + MachineInstr *NewMI = +BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::MOV)) + .addOperand(MI-getOperand(0)) + .addOperand(MI-getOperand(1)) + .addReg(AMDGPU::PRED_SEL_OFF); + TII-AddFlag(NewMI, 0, MO_FLAG_CLAMP); + break; +} case AMDGPU::FABS_R600: -MI-getOperand(1).addTargetFlag(MO_FLAG_ABS); -BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::MOV)) - .addOperand(MI-getOperand(0)) - .addOperand(MI-getOperand(1)) - .addReg(AMDGPU::PRED_SEL_OFF); -break; +{ + MachineInstr *NewMI = +BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::MOV)) + .addOperand(MI-getOperand(0)) + .addOperand(MI-getOperand(1)) + .addReg(AMDGPU::PRED_SEL_OFF); + TII-AddFlag(NewMI, 1, MO_FLAG_ABS); + break; +} case AMDGPU::FNEG_R600: -MI-getOperand(1).addTargetFlag(MO_FLAG_NEG); -BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::MOV)) -.addOperand(MI-getOperand(0)) -.addOperand(MI-getOperand(1)) -.addReg(AMDGPU::PRED_SEL_OFF); +{ + MachineInstr *NewMI = +BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::MOV)) +.addOperand(MI-getOperand(0)) +.addOperand(MI-getOperand(1)) +.addReg(AMDGPU::PRED_SEL_OFF); + TII-AddFlag(NewMI, 1, MO_FLAG_NEG); break; +} case AMDGPU::R600_LOAD_CONST: { @@ -97,8 +105,7 @@ MachineBasicBlock * R600TargetLowering::EmitInstrWithCustomInserter( unsigned maskedRegister = MI-getOperand(0).getReg(); assert(TargetRegisterInfo::isVirtualRegister(maskedRegister)); MachineInstr * defInstr = MRI.getVRegDef(maskedRegister); - MachineOperand * def = defInstr-findRegisterDefOperand(maskedRegister); - def-addTargetFlag(MO_FLAG_MASK); + TII-AddFlag(defInstr, 0, MO_FLAG_MASK); // Return early so the instruction is not erased return BB; } @@ -188,29 +195,31 @@ MachineBasicBlock * R600TargetLowering::EmitInstrWithCustomInserter( .addReg(0); break; case AMDGPU::BRANCH_COND_f32: -MI-getOperand(1).addTargetFlag(MO_FLAG_PUSH); - -BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::PRED_X)) -.addReg(AMDGPU::PREDICATE_BIT) -.addOperand(MI-getOperand(1)) -
Mesa (master): radeon/llvm: Add flag operand to some instructions
Module: Mesa Branch: master Commit: 67a47a445b544ac638d10303dc697d70f25d12fb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=67a47a445b544ac638d10303dc697d70f25d12fb Author: Tom Stellard thomas.stell...@amd.com Date: Wed Aug 22 15:04:58 2012 + radeon/llvm: Add flag operand to some instructions This new operand replaces the MachineOperand flags in LLVM, which will be deprecated soon. Eventually all instructions should have a flag operand, but for now this operand has only been added to instructions that need it. --- src/gallium/drivers/radeon/AMDGPUInstrInfo.h |1 + src/gallium/drivers/radeon/R600CodeEmitter.cpp | 25 + .../drivers/radeon/R600ExpandSpecialInstrs.cpp |3 +- src/gallium/drivers/radeon/R600ISelLowering.cpp|9 +++- src/gallium/drivers/radeon/R600InstrInfo.cpp | 30 ++- src/gallium/drivers/radeon/R600InstrInfo.h |6 ++ src/gallium/drivers/radeon/R600Instructions.td | 56 ++-- 7 files changed, 97 insertions(+), 33 deletions(-) diff --git a/src/gallium/drivers/radeon/AMDGPUInstrInfo.h b/src/gallium/drivers/radeon/AMDGPUInstrInfo.h index de3c594..5f72869 100644 --- a/src/gallium/drivers/radeon/AMDGPUInstrInfo.h +++ b/src/gallium/drivers/radeon/AMDGPUInstrInfo.h @@ -31,6 +31,7 @@ #define MO_FLAG_MASK (1 3) #define MO_FLAG_PUSH (1 4) #define MO_FLAG_LAST (1 5) +#define NUM_MO_FLAGS 6 #define OPCODE_IS_ZERO_INT 0x0045 #define OPCODE_IS_NOT_ZERO_INT 0x0042 diff --git a/src/gallium/drivers/radeon/R600CodeEmitter.cpp b/src/gallium/drivers/radeon/R600CodeEmitter.cpp index efe194b..9e76cb1 100644 --- a/src/gallium/drivers/radeon/R600CodeEmitter.cpp +++ b/src/gallium/drivers/radeon/R600CodeEmitter.cpp @@ -67,7 +67,7 @@ public: private: void EmitALUInstr(MachineInstr MI); - void EmitSrc(const MachineOperand MO); + void EmitSrc(const MachineOperand MO, unsigned SrcIdx); void EmitDst(const MachineOperand MO); void EmitALU(MachineInstr MI, unsigned numSrc); void EmitTexInstr(MachineInstr MI); @@ -218,6 +218,8 @@ void R600CodeEmitter::EmitALUInstr(MachineInstr MI) unsigned numOperands = MI.getNumExplicitOperands(); if(MI.findFirstPredOperandIdx() -1) numOperands--; + if (TII-HasFlagOperand(MI)) +numOperands--; // Some instructions are just place holder instructions that represent // operations that the GPU does automatically. They should be ignored. @@ -243,7 +245,7 @@ void R600CodeEmitter::EmitALUInstr(MachineInstr MI) if (MI.getOperand(opIndex).isImm() || MI.getOperand(opIndex).isFPImm()) { break; } -EmitSrc(MI.getOperand(opIndex)); +EmitSrc(MI.getOperand(opIndex), opIndex); } // Emit zeros for unused sources @@ -256,8 +258,9 @@ void R600CodeEmitter::EmitALUInstr(MachineInstr MI) EmitALU(MI, numOperands - 1); } -void R600CodeEmitter::EmitSrc(const MachineOperand MO) +void R600CodeEmitter::EmitSrc(const MachineOperand MO, unsigned SrcIdx) { + const MachineInstr *MI = MO.getParent(); uint32_t value = 0; // Emit the source select (2 bytes). For GPRs, this is the register index. // For other potential instruction operands, (e.g. constant registers) the @@ -289,8 +292,8 @@ void R600CodeEmitter::EmitSrc(const MachineOperand MO) } // XXX: Emit isNegated (1 byte) - if ((!(MO.getTargetFlags() MO_FLAG_ABS)) - (MO.getTargetFlags() MO_FLAG_NEG || + if ((!(TII-IsFlagSet(*MI, SrcIdx, MO_FLAG_ABS))) + (TII-IsFlagSet(*MI, SrcIdx, MO_FLAG_NEG) || (MO.isReg() (MO.getReg() == AMDGPU::NEG_ONE || MO.getReg() == AMDGPU::NEG_HALF{ EmitByte(1); @@ -299,7 +302,7 @@ void R600CodeEmitter::EmitSrc(const MachineOperand MO) } // Emit isAbsolute (1 byte) - if (MO.getTargetFlags() MO_FLAG_ABS) { + if (TII-IsFlagSet(*MI, SrcIdx, MO_FLAG_ABS)) { EmitByte(1); } else { EmitByte(0); @@ -318,6 +321,7 @@ void R600CodeEmitter::EmitSrc(const MachineOperand MO) void R600CodeEmitter::EmitDst(const MachineOperand MO) { + const MachineInstr *MI = MO.getParent(); if (MO.isReg() MO.getReg() != AMDGPU::PREDICATE_BIT) { // Emit the destination register index (1 byte) EmitByte(getHWReg(MO.getReg())); @@ -326,14 +330,14 @@ void R600CodeEmitter::EmitDst(const MachineOperand MO) EmitByte(TRI-getHWRegChan(MO.getReg())); // Emit isClamped (1 byte) -if (MO.getTargetFlags() MO_FLAG_CLAMP) { +if (TII-IsFlagSet(*MI, 0, MO_FLAG_CLAMP)) { EmitByte(1); } else { EmitByte(0); } // Emit writemask (1 byte). -if (MO.getTargetFlags() MO_FLAG_MASK) { +if (TII-IsFlagSet(*MI, 0, MO_FLAG_MASK)) { EmitByte(0); } else { EmitByte(1); @@ -353,8 +357,7 @@ void R600CodeEmitter::EmitALU(MachineInstr MI, unsigned numSrc) EmitTwoBytes(getBinaryCodeForInstr(MI)); // Emit IsLast (for this instruction group) (1 byte) - if (MI.isInsideBundle() -
Mesa (master): radeon/llvm: Remove the last uses of MachineOperand flags
Module: Mesa Branch: master Commit: ead72204f1864008430189421663a5d07a02293b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ead72204f1864008430189421663a5d07a02293b Author: Tom Stellard thomas.stell...@amd.com Date: Thu Aug 23 13:55:22 2012 + radeon/llvm: Remove the last uses of MachineOperand flags --- src/gallium/drivers/radeon/R600InstrInfo.cpp | 29 ++--- src/gallium/drivers/radeon/R600InstrInfo.h |6 + 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/radeon/R600InstrInfo.cpp b/src/gallium/drivers/radeon/R600InstrInfo.cpp index 4cca8eb..bcc81e0 100644 --- a/src/gallium/drivers/radeon/R600InstrInfo.cpp +++ b/src/gallium/drivers/radeon/R600InstrInfo.cpp @@ -316,7 +316,7 @@ R600InstrInfo::InsertBranch(MachineBasicBlock MBB, } else { MachineInstr *PredSet = findFirstPredicateSetterFrom(MBB, MBB.end()); assert(PredSet No previous predicate !); - PredSet-getOperand(1).addTargetFlag(14); + AddFlag(PredSet, 1, MO_FLAG_PUSH); PredSet-getOperand(2).setImm(Cond[1].getImm()); BuildMI(MBB, DL, get(AMDGPU::JUMP)) @@ -327,7 +327,7 @@ R600InstrInfo::InsertBranch(MachineBasicBlock MBB, } else { MachineInstr *PredSet = findFirstPredicateSetterFrom(MBB, MBB.end()); assert(PredSet No previous predicate !); -PredSet-getOperand(1).addTargetFlag(14); +AddFlag(PredSet, 1, MO_FLAG_PUSH); PredSet-getOperand(2).setImm(Cond[1].getImm()); BuildMI(MBB, DL, get(AMDGPU::JUMP)) .addMBB(TBB) @@ -356,8 +356,7 @@ R600InstrInfo::RemoveBranch(MachineBasicBlock MBB) const case AMDGPU::JUMP: if (isPredicated(I)) { MachineInstr *predSet = findFirstPredicateSetterFrom(MBB, I); - char flag = predSet-getOperand(1).getTargetFlags() (~(14)); - predSet-getOperand(1).setTargetFlags(flag); + ClearFlag(predSet, 1, MO_FLAG_PUSH); } I-eraseFromParent(); break; @@ -375,8 +374,7 @@ R600InstrInfo::RemoveBranch(MachineBasicBlock MBB) const case AMDGPU::JUMP: if (isPredicated(I)) { MachineInstr *predSet = findFirstPredicateSetterFrom(MBB, I); - char flag = predSet-getOperand(1).getTargetFlags() (~(14)); - predSet-getOperand(1).setTargetFlags(flag); + ClearFlag(predSet, 1, MO_FLAG_PUSH); } I-eraseFromParent(); break; @@ -532,14 +530,20 @@ bool R600InstrInfo::HasFlagOperand(const MachineInstr MI) const return GET_FLAG_OPERAND_IDX(MI) != 0; } -void R600InstrInfo::AddFlag(MachineInstr *MI, unsigned Operand, -unsigned Flag) const +MachineOperand R600InstrInfo::GetFlagOp(MachineInstr *MI) const { unsigned FlagIndex = GET_FLAG_OPERAND_IDX(*MI); assert(FlagIndex != 0 Instruction flags not supported for this instruction); MachineOperand FlagOp = MI-getOperand(FlagIndex); assert(FlagOp.isImm()); + return FlagOp; +} + +void R600InstrInfo::AddFlag(MachineInstr *MI, unsigned Operand, +unsigned Flag) const +{ + MachineOperand FlagOp = GetFlagOp(MI); FlagOp.setImm(FlagOp.getImm() | (Flag (NUM_MO_FLAGS * Operand))); } @@ -554,3 +558,12 @@ bool R600InstrInfo::IsFlagSet(const MachineInstr MI, unsigned Operand, return !!((MI.getOperand(FlagIndex).getImm() (NUM_MO_FLAGS * Operand)) Flag); } + +void R600InstrInfo::ClearFlag(MachineInstr *MI, unsigned Operand, + unsigned Flag) const +{ + MachineOperand FlagOp = GetFlagOp(MI); + unsigned InstFlags = FlagOp.getImm(); + InstFlags = ~(Flag (NUM_MO_FLAGS * Operand)); + FlagOp.setImm(InstFlags); +} diff --git a/src/gallium/drivers/radeon/R600InstrInfo.h b/src/gallium/drivers/radeon/R600InstrInfo.h index 5e160a0..9bc534f 100644 --- a/src/gallium/drivers/radeon/R600InstrInfo.h +++ b/src/gallium/drivers/radeon/R600InstrInfo.h @@ -119,6 +119,12 @@ namespace llvm { ///IsFlagSet - Determine if the specified flag is set on this Operand. bool IsFlagSet(const MachineInstr MI, unsigned Operand, unsigned Flag) const; + + ///GetFlagOp - Return the operand containing the flags for this instruction. + MachineOperand GetFlagOp(MachineInstr *MI) const; + + ///ClearFlag - Clear the specified flag on the instruction. + void ClearFlag(MachineInstr *MI, unsigned Operand, unsigned Flag) const; }; } // End llvm namespace ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/llvm: Add AsmPrinter
Module: Mesa Branch: master Commit: e30b4644b613a130318cdf240ad237b0afbc525a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e30b4644b613a130318cdf240ad237b0afbc525a Author: Tom Stellard thomas.stell...@amd.com Date: Fri Aug 17 15:52:15 2012 + radeon/llvm: Add AsmPrinter --- src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp| 16 +++ src/gallium/drivers/radeon/AMDGPUAsmPrinter.h | 25 ++ src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp | 48 src/gallium/drivers/radeon/AMDGPUMCInstLower.h | 22 + .../radeon/InstPrinter/AMDGPUInstPrinter.cpp | 34 ++ .../drivers/radeon/InstPrinter/AMDGPUInstPrinter.h | 34 ++ .../radeon/MCTargetDesc/AMDILMCTargetDesc.cpp | 11 + src/gallium/drivers/radeon/Makefile.sources|3 + 8 files changed, 193 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp new file mode 100644 index 000..4b7961e --- /dev/null +++ b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp @@ -0,0 +1,16 @@ + +#include AMDGPUAsmPrinter.h +#include AMDGPU.h +#include llvm/Support/TargetRegistry.h + +using namespace llvm; + + +static AsmPrinter *createAMDGPUAsmPrinterPass(TargetMachine tm, + MCStreamer Streamer) { + return new AMDGPUAsmPrinter(tm, Streamer); +} + +extern C void LLVMInitializeAMDGPUAsmPrinter() { + TargetRegistry::RegisterAsmPrinter(TheAMDGPUTarget, createAMDGPUAsmPrinterPass); +} diff --git a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.h b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.h new file mode 100644 index 000..865b186 --- /dev/null +++ b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.h @@ -0,0 +1,25 @@ + +#ifndef AMDGPU_ASMPRINTER_H +#define AMDGPU_ASMPRINTER_H + +#include llvm/CodeGen/AsmPrinter.h + +namespace llvm { + +class AMDGPUAsmPrinter : public AsmPrinter { + +public: + explicit AMDGPUAsmPrinter(TargetMachine TM, MCStreamer Streamer) +: AsmPrinter(TM, Streamer) { } + + virtual const char *getPassName() const { +return AMDGPU Assembly Printer; + } + + /// EmitInstuction - Implemented in AMDGPUMCInstLower.cpp + virtual void EmitInstruction(const MachineInstr *MI); +}; + +} // End anonymous llvm + +#endif //AMDGPU_ASMPRINTER_H diff --git a/src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp b/src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp new file mode 100644 index 000..53bd561 --- /dev/null +++ b/src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp @@ -0,0 +1,48 @@ + +#include AMDGPUMCInstLower.h +#include AMDGPUAsmPrinter.h +#include llvm/CodeGen/MachineInstr.h +#include llvm/Constants.h +#include llvm/MC/MCInst.h +#include llvm/MC/MCStreamer.h +#include llvm/Support/ErrorHandling.h + +using namespace llvm; + +AMDGPUMCInstLower::AMDGPUMCInstLower() { } + +void AMDGPUMCInstLower::Lower(const MachineInstr *MI, MCInst OutMI) const { + OutMI.setOpcode(MI-getOpcode()); + + for (unsigned i = 0, e = MI-getNumOperands(); i != e; ++i) { +const MachineOperand MO = MI-getOperand(i); + +MCOperand MCOp; +switch (MO.getType()) { +default: + MI-dump(); + llvm_unreachable(unknown operand type); +case MachineOperand::MO_FPImmediate: { + const APFloat FloatValue = MO.getFPImm()-getValueAPF(); + assert(FloatValue.getSemantics() == APFloat::IEEEsingle + Only floating point immediates are supported at the moment.); + MCOp = MCOperand::CreateFPImm(FloatValue.convertToFloat()); + break; +} +case MachineOperand::MO_Immediate: + MCOp = MCOperand::CreateImm(MO.getImm()); + break; +case MachineOperand::MO_Register: + MCOp = MCOperand::CreateReg(MO.getReg()); + break; +} +OutMI.addOperand(MCOp); + } +} + +void AMDGPUAsmPrinter::EmitInstruction(const MachineInstr *MI) { + AMDGPUMCInstLower MCInstLowering; + MCInst TmpInst; + MCInstLowering.Lower(MI, TmpInst); + OutStreamer.EmitInstruction(TmpInst); +} diff --git a/src/gallium/drivers/radeon/AMDGPUMCInstLower.h b/src/gallium/drivers/radeon/AMDGPUMCInstLower.h new file mode 100644 index 000..2ea5b02 --- /dev/null +++ b/src/gallium/drivers/radeon/AMDGPUMCInstLower.h @@ -0,0 +1,22 @@ + +#ifndef AMDGPU_MCINSTLOWER_H +#define AMDGPU_MCINSTLOWER_H + +namespace llvm { + +class MCInst; +class MachineInstr; + +class AMDGPUMCInstLower { + +public: + AMDGPUMCInstLower(); + + /// Lower - Lower a MachineInstr to an MCInst + void Lower(const MachineInstr *MI, MCInst OutMI) const; + +}; + +} // End namespace llvm + +#endif //AMDGPU_MCINSTLOWER_H diff --git a/src/gallium/drivers/radeon/InstPrinter/AMDGPUInstPrinter.cpp b/src/gallium/drivers/radeon/InstPrinter/AMDGPUInstPrinter.cpp new file mode 100644 index 000..b6ab9b2 --- /dev/null +++ b/src/gallium/drivers/radeon/InstPrinter/AMDGPUInstPrinter.cpp @@ -0,0 +1,34 @@ + +#include AMDGPUInstPrinter.h +#include
Mesa (master): radeon/llvm: Lower RETFLAG DAG Node to S_ENDPGM on SI
Module: Mesa Branch: master Commit: 3f9b6aa0f467b8d918ce277697db2f42abe1cf4c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3f9b6aa0f467b8d918ce277697db2f42abe1cf4c Author: Tom Stellard thomas.stell...@amd.com Date: Fri Aug 17 19:07:37 2012 + radeon/llvm: Lower RETFLAG DAG Node to S_ENDPGM on SI --- src/gallium/drivers/radeon/AMDILInstrInfo.td |7 --- src/gallium/drivers/radeon/R600Instructions.td |8 src/gallium/drivers/radeon/SIInstructions.td |5 - 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/radeon/AMDILInstrInfo.td b/src/gallium/drivers/radeon/AMDILInstrInfo.td index b683e49..779566d 100644 --- a/src/gallium/drivers/radeon/AMDILInstrInfo.td +++ b/src/gallium/drivers/radeon/AMDILInstrInfo.td @@ -223,13 +223,6 @@ let isTerminator = 1, usesCustomInserter = 1 in { [(br bb:$target)]; defm BRANCH_COND : BranchConditionalIL_brcond; } -//===-===// -// return instructions -//===-===// -let isTerminator = 1, isReturn = 1, isBarrier = 1, hasCtrlDep = 1 in { - def RETURN : ILFormat(outs), (ins variable_ops), - RETURN, [(IL_retflag)]; -} //===-===// // Flow and Program control Instructions diff --git a/src/gallium/drivers/radeon/R600Instructions.td b/src/gallium/drivers/radeon/R600Instructions.td index 9651b85..84f839e 100644 --- a/src/gallium/drivers/radeon/R600Instructions.td +++ b/src/gallium/drivers/radeon/R600Instructions.td @@ -1213,6 +1213,14 @@ def MASK_WRITE : AMDGPUShaderInst } // End usesCustomInserter = 1 +//===-===// +// return instruction +//===-===// +let isTerminator = 1, isReturn = 1, isBarrier = 1, hasCtrlDep = 1 in { + def RETURN : ILFormat(outs), (ins variable_ops), + RETURN, [(IL_retflag)]; +} + //===--===// // ISel Patterns //===--===// diff --git a/src/gallium/drivers/radeon/SIInstructions.td b/src/gallium/drivers/radeon/SIInstructions.td index 152d735..f09d604 100644 --- a/src/gallium/drivers/radeon/SIInstructions.td +++ b/src/gallium/drivers/radeon/SIInstructions.td @@ -595,8 +595,11 @@ def V_INTERP_MOV_F32 : VINTRP let isTerminator = 1 in { -def S_ENDPGM : SOPP 0x0001, (ins), S_ENDPGM, [] { +def S_ENDPGM : SOPP 0x0001, (ins), S_ENDPGM, + [(IL_retflag)] { let SIMM16 = 0; + let isBarrier = 1; + let hasCtrlDep = 1; } let isBranch = 1 in { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/llvm: Use the MCCodeEmitter for SI
Module: Mesa Branch: master Commit: 235318a578b3d7772a60590c7e76791ed6d1a78e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=235318a578b3d7772a60590c7e76791ed6d1a78e Author: Tom Stellard thomas.stell...@amd.com Date: Fri Aug 17 19:42:11 2012 + radeon/llvm: Use the MCCodeEmitter for SI --- src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp| 91 + src/gallium/drivers/radeon/AMDGPUAsmPrinter.h |6 + src/gallium/drivers/radeon/AMDGPUTargetMachine.cpp | 13 +- .../radeon/MCTargetDesc/AMDGPUAsmBackend.cpp | 80 + .../radeon/MCTargetDesc/AMDGPUMCCodeEmitter.h | 59 .../drivers/radeon/MCTargetDesc/AMDILMCAsmInfo.cpp |8 +- .../radeon/MCTargetDesc/AMDILMCTargetDesc.cpp | 16 + .../radeon/MCTargetDesc/AMDILMCTargetDesc.h| 12 + .../radeon/MCTargetDesc/SIMCCodeEmitter.cpp| 309 + src/gallium/drivers/radeon/Makefile|3 + src/gallium/drivers/radeon/Makefile.sources|4 +- src/gallium/drivers/radeon/SICodeEmitter.cpp | 354 src/gallium/drivers/radeon/SIInstrInfo.cpp | 35 -- src/gallium/drivers/radeon/SIInstrInfo.h | 28 -- src/gallium/drivers/radeon/radeon_llvm_emit.cpp|4 +- 15 files changed, 591 insertions(+), 431 deletions(-) diff --git a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp index 4b7961e..085649d 100644 --- a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp +++ b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp @@ -1,6 +1,9 @@ #include AMDGPUAsmPrinter.h #include AMDGPU.h +#include SIMachineFunctionInfo.h +#include SIRegisterInfo.h +#include llvm/MC/MCStreamer.h #include llvm/Support/TargetRegistry.h using namespace llvm; @@ -14,3 +17,91 @@ static AsmPrinter *createAMDGPUAsmPrinterPass(TargetMachine tm, extern C void LLVMInitializeAMDGPUAsmPrinter() { TargetRegistry::RegisterAsmPrinter(TheAMDGPUTarget, createAMDGPUAsmPrinterPass); } + +/// runOnMachineFunction - We need to override this function so we can avoid +/// the call to EmitFunctionHeader(), which the MCPureStreamer can't handle. +bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction MF) { + const AMDGPUSubtarget STM = TM.getSubtargetAMDGPUSubtarget(); + if (STM.dumpCode()) { +MF.dump(); + } + SetupMachineFunction(MF); + if (STM.device()-getGeneration() AMDGPUDeviceInfo::HD6XXX) { +EmitProgramInfo(MF); + } + EmitFunctionBody(); + return false; +} + +void AMDGPUAsmPrinter::EmitProgramInfo(MachineFunction MF) { + unsigned MaxSGPR = 0; + unsigned MaxVGPR = 0; + bool VCCUsed = false; + const SIRegisterInfo * RI = +static_castconst SIRegisterInfo*(TM.getRegisterInfo()); + + for (MachineFunction::iterator BB = MF.begin(), BB_E = MF.end(); + BB != BB_E; ++BB) { +MachineBasicBlock MBB = *BB; +for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end(); +I != E; ++I) { + MachineInstr MI = *I; + + unsigned numOperands = MI.getNumOperands(); + for (unsigned op_idx = 0; op_idx numOperands; op_idx++) { +MachineOperand MO = MI.getOperand(op_idx); +unsigned maxUsed; +unsigned width = 0; +bool isSGPR = false; +unsigned reg; +unsigned hwReg; +if (!MO.isReg()) { + continue; +} +reg = MO.getReg(); +if (reg == AMDGPU::VCC) { + VCCUsed = true; + continue; +} +if (AMDGPU::SReg_32RegClass.contains(reg)) { + isSGPR = true; + width = 1; +} else if (AMDGPU::VReg_32RegClass.contains(reg)) { + isSGPR = false; + width = 1; +} else if (AMDGPU::SReg_64RegClass.contains(reg)) { + isSGPR = true; + width = 2; +} else if (AMDGPU::VReg_64RegClass.contains(reg)) { + isSGPR = false; + width = 2; +} else if (AMDGPU::SReg_128RegClass.contains(reg)) { + isSGPR = true; + width = 4; +} else if (AMDGPU::VReg_128RegClass.contains(reg)) { + isSGPR = false; + width = 4; +} else if (AMDGPU::SReg_256RegClass.contains(reg)) { + isSGPR = true; + width = 8; +} else { + assert(!Unknown register class); +} +hwReg = RI-getHWRegNum(reg); +maxUsed = hwReg + width - 1; +if (isSGPR) { + MaxSGPR = maxUsed MaxSGPR ? maxUsed : MaxSGPR; +} else { + MaxVGPR = maxUsed MaxVGPR ? maxUsed : MaxVGPR; +} + } +} + } + if (VCCUsed) { +MaxSGPR += 2; + } + SIMachineFunctionInfo * MFI = MF.getInfoSIMachineFunctionInfo(); + OutStreamer.EmitIntValue(MaxSGPR + 1, 4); + OutStreamer.EmitIntValue(MaxVGPR + 1, 4); + OutStreamer.EmitIntValue(MFI-spi_ps_input_addr, 4); +} diff --git
Mesa (master): radeon/llvm: Use the MCCodeEmitter for R600
Module: Mesa Branch: master Commit: 90bd1d52bbf95947955a66ec67f5f6c7dc87119a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=90bd1d52bbf95947955a66ec67f5f6c7dc87119a Author: Tom Stellard thomas.stell...@amd.com Date: Tue Aug 21 17:48:14 2012 + radeon/llvm: Use the MCCodeEmitter for R600 --- src/gallium/drivers/radeon/AMDGPU.h|1 - src/gallium/drivers/radeon/AMDGPUInstrInfo.h |8 - src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp | 30 +- src/gallium/drivers/radeon/AMDGPUTargetMachine.cpp | 26 - src/gallium/drivers/radeon/AMDGPUTargetMachine.h |4 - .../radeon/MCTargetDesc/AMDILMCTargetDesc.cpp | 10 + .../radeon/MCTargetDesc/AMDILMCTargetDesc.h| 10 +- .../radeon/MCTargetDesc/R600MCCodeEmitter.cpp | 703 .../radeon/MCTargetDesc/SIMCCodeEmitter.cpp| 14 +- src/gallium/drivers/radeon/Makefile.sources|2 +- src/gallium/drivers/radeon/R600CodeEmitter.cpp | 618 - src/gallium/drivers/radeon/R600Defines.h | 23 + .../drivers/radeon/R600ExpandSpecialInstrs.cpp |3 +- src/gallium/drivers/radeon/R600ISelLowering.cpp|1 + src/gallium/drivers/radeon/R600InstrInfo.cpp | 62 +-- src/gallium/drivers/radeon/R600InstrInfo.h |2 - 16 files changed, 779 insertions(+), 738 deletions(-) Diff: http://cgit.freedesktop.org/mesa/mesa/diff/?id=90bd1d52bbf95947955a66ec67f5f6c7dc87119a ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): egl_dri2: Fix segmentation fault
Module: Mesa Branch: master Commit: b41f36bde778e6b11129f51de423b7c3aece26b4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b41f36bde778e6b11129f51de423b7c3aece26b4 Author: Paulo Alcantara pca...@profusion.mobi Date: Fri Aug 17 14:08:10 2012 -0300 egl_dri2: Fix segmentation fault The segmentation fault occurs when DRI2 is not loaded up and dri2_setup_screen() function deferences dri2_dpy-dri2 (since it's NULL at this point). This patch fixes the segmentation fault by checking if dri2 pointer is not NULL before deferencing it. Signed-off-by: Paulo Alcantara pca...@profusion.mobi Reviewed-by: Ian Romanick ian.d.roman...@intel.com Signed-off-by: Brian Paul bri...@vmware.com --- src/egl/drivers/dri2/egl_dri2.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 423d18d..7326b85 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -481,7 +481,7 @@ dri2_setup_screen(_EGLDisplay *disp) assert(dri2_dpy-dri2 || dri2_dpy-swrast); disp-Extensions.KHR_surfaceless_context = EGL_TRUE; - if (dri2_dpy-dri2-base.version = 3) { + if (dri2_dpy-dri2 dri2_dpy-dri2-base.version = 3) { disp-Extensions.KHR_create_context = EGL_TRUE; if (dri2_dpy-robustness) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): st/dri: add force_glsl_extensions_warn option to dri options
Module: Mesa Branch: master Commit: 44f69fc82518d343733c77905cf9b9963fe102e4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=44f69fc82518d343733c77905cf9b9963fe102e4 Author: Vadim Girlin vadimgir...@gmail.com Date: Thu Apr 12 04:28:52 2012 +0400 st/dri: add force_glsl_extensions_warn option to dri options Signed-off-by: Vadim Girlin vadimgir...@gmail.com --- src/gallium/state_trackers/dri/common/dri_screen.c | 11 ++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c index e581a74..102a132 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.c +++ b/src/gallium/state_trackers/dri/common/dri_screen.c @@ -43,6 +43,8 @@ #define MSAA_VISUAL_MAX_SAMPLES 8 +#undef false + PUBLIC const char __driConfigOptions[] = DRI_CONF_BEGIN DRI_CONF_SECTION_PERFORMANCE @@ -60,9 +62,16 @@ PUBLIC const char __driConfigOptions[] = DRI_CONF_PP_JIMENEZMLAA(0, 0, 32) DRI_CONF_PP_JIMENEZMLAA_COLOR(0, 0, 32) DRI_CONF_SECTION_END + + DRI_CONF_SECTION_DEBUG + DRI_CONF_FORCE_GLSL_EXTENSIONS_WARN(false) + DRI_CONF_SECTION_END + DRI_CONF_END; -static const uint __driNConfigOptions = 9; +#define false 0 + +static const uint __driNConfigOptions = 10; static const __DRIconfig ** dri_fill_in_modes(struct dri_screen *screen, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): st/dri: pass config options to the state tracker
Module: Mesa Branch: master Commit: 68d6441930fa19e2414a4c273ddce15e0c71de99 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=68d6441930fa19e2414a4c273ddce15e0c71de99 Author: Vadim Girlin vadimgir...@gmail.com Date: Thu Apr 12 04:30:57 2012 +0400 st/dri: pass config options to the state tracker Signed-off-by: Vadim Girlin vadimgir...@gmail.com --- .../state_trackers/dri/common/dri_context.c|8 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index 9e59023..0403826 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -49,6 +49,13 @@ dri_pp_query(struct dri_context *ctx) } } +static void dri_fill_st_options(struct st_config_options *options, +const struct driOptionCache * optionCache) +{ + options-force_glsl_extensions_warn = + driQueryOptionb(optionCache, force_glsl_extensions_warn); +} + GLboolean dri_create_context(gl_api api, const struct gl_config * visual, __DRIcontext * cPriv, @@ -107,6 +114,7 @@ dri_create_context(gl_api api, const struct gl_config * visual, driParseConfigFiles(ctx-optionCache, screen-optionCache, sPriv-myNum, driver_descriptor.name); + dri_fill_st_options(attribs.options, ctx-optionCache); dri_fill_st_visual(attribs.visual, screen, visual); ctx-st = stapi-create_context(stapi, screen-base, attribs, ctx_err, st_share); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): automake: convert es2api
Module: Mesa Branch: master Commit: 0f8110cb0c782b179933da0b47649c3f8fe42328 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f8110cb0c782b179933da0b47649c3f8fe42328 Author: Matt Turner matts...@gmail.com Date: Tue Aug 21 14:52:59 2012 -0700 automake: convert es2api --- configure.ac|2 + src/mapi/es2api/.gitignore |4 +-- src/mapi/es2api/Makefile|3 -- src/mapi/es2api/Makefile.am | 60 +++ src/mapi/es2api/glesv2.pc.in| 12 src/mapi/glapi/gen/glapi_gen.mk |4 -- 6 files changed, 69 insertions(+), 16 deletions(-) diff --git a/configure.ac b/configure.ac index 224caea..eafbd65 100644 --- a/configure.ac +++ b/configure.ac @@ -2024,6 +2024,8 @@ AC_CONFIG_FILES([configs/current src/glsl/tests/Makefile src/glx/Makefile src/glx/tests/Makefile + src/mapi/es2api/Makefile + src/mapi/es2api/glesv2.pc src/mapi/glapi/Makefile src/mapi/glapi/gen/Makefile src/mapi/shared-glapi/Makefile diff --git a/src/mapi/es2api/.gitignore b/src/mapi/es2api/.gitignore index b21f1d1..39b0e7c 100644 --- a/src/mapi/es2api/.gitignore +++ b/src/mapi/es2api/.gitignore @@ -1,4 +1,2 @@ glapi_mapi_tmp.h -glapi-stamp -glapi -main +Makefile diff --git a/src/mapi/es2api/Makefile b/src/mapi/es2api/Makefile deleted file mode 100644 index 21816a6..000 --- a/src/mapi/es2api/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -# src/mapi/es2api/Makefile -ES := es2 -include ../es1api/Makefile diff --git a/src/mapi/es2api/Makefile.am b/src/mapi/es2api/Makefile.am new file mode 100644 index 000..edd3c9f --- /dev/null +++ b/src/mapi/es2api/Makefile.am @@ -0,0 +1,60 @@ +# Copyright © 2012 Intel Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the Software), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +AM_CPPFLAGS = \ + $(DEFINES) \ + -I$(top_srcdir)/include \ + -I$(top_srcdir)/src/mapi \ + -DMAPI_MODE_BRIDGE \ + -DMAPI_ABI_HEADER=\glapi_mapi_tmp.h\ + +AM_CFLAGS = $(VISIBILITY_CFLAGS) + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = glesv2.pc + +GLES_includedir = $(includedir)/GLES +GLES_include_HEADERS = \ + $(top_srcdir)/include/GLES/egl.h \ + $(top_srcdir)/include/GLES/gl.h \ + $(top_srcdir)/include/GLES/glext.h \ + $(top_srcdir)/include/GLES/glplatform.h + +lib_LTLIBRARIES = libGLESv2.la + +libGLESv2_la_SOURCES = ../mapi/entry.c glapi_mapi_tmp.h +libGLESv2_la_LIBADD = $(GLESv2_LIB_DEPS) +libGLESv2_la_LDFLAGS = -version-number 2 -no-undefined + +include ../glapi/gen/glapi_gen.mk +glapi_mapi_tmp.h: ../glapi/gen/gl_and_es_API.xml $(glapi_gen_mapi_deps) + $(call glapi_gen_mapi,$,es2api) + +BUILT_SOURCES = glapi_mapi_tmp.h +CLEANFILES = $(BUILT_SOURCES) + +# Provide compatibility with scripts for the old Mesa build system for +# a while by putting a link to the driver into /lib of the build tree. +all-local: libGLESv2.la + $(MKDIR_P) $(top_builddir)/$(LIB_DIR); + ln -f .libs/libGLESv2.so $(top_builddir)/$(LIB_DIR)/libGLESv2.so + ln -f .libs/libGLESv2.so.2 $(top_builddir)/$(LIB_DIR)/libGLESv2.so.2 + ln -f .libs/libGLESv2.so.2.0.0 $(top_builddir)/$(LIB_DIR)/libGLESv2.so.2.0.0 diff --git a/src/mapi/es2api/glesv2.pc.in b/src/mapi/es2api/glesv2.pc.in index 3b747cb..e5bf12f 100644 --- a/src/mapi/es2api/glesv2.pc.in +++ b/src/mapi/es2api/glesv2.pc.in @@ -1,12 +1,12 @@ -prefix=@INSTALL_DIR@ +prefix=@prefix@ exec_prefix=${prefix} -libdir=@INSTALL_LIB_DIR@ -includedir=@INSTALL_INC_DIR@ +libdir=@libdir@ +includedir=@includedir@ Name: glesv2 Description: Mesa OpenGL ES 2.0 library -Requires.private: @GLESv2_PC_REQ_PRIV@ +Requires.private: Version: @VERSION@ -Libs: -L${libdir} -l@GLESv2_LIB@ +Libs: -L${libdir} -lGLESv2 Libs.private: @GLESv2_PC_LIB_PRIV@ -Cflags: -I${includedir} @GLESv2_PC_CFLAGS@ +Cflags: -I${includedir} diff --git
Mesa (master): automake: convert es1api
Module: Mesa Branch: master Commit: a6b8b709cdc280d3dc77cd9f78654726132d22bb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6b8b709cdc280d3dc77cd9f78654726132d22bb Author: Matt Turner matts...@gmail.com Date: Tue Aug 21 14:36:44 2012 -0700 automake: convert es1api --- configure.ac|2 + src/mapi/es1api/.gitignore |1 + src/mapi/es1api/Makefile| 137 --- src/mapi/es1api/Makefile.am | 60 + src/mapi/es1api/glesv1_cm.pc.in | 12 ++-- 5 files changed, 69 insertions(+), 143 deletions(-) diff --git a/configure.ac b/configure.ac index eafbd65..e9d4e79 100644 --- a/configure.ac +++ b/configure.ac @@ -2024,6 +2024,8 @@ AC_CONFIG_FILES([configs/current src/glsl/tests/Makefile src/glx/Makefile src/glx/tests/Makefile + src/mapi/es1api/Makefile + src/mapi/es1api/glesv1_cm.pc src/mapi/es2api/Makefile src/mapi/es2api/glesv2.pc src/mapi/glapi/Makefile diff --git a/src/mapi/es1api/.gitignore b/src/mapi/es1api/.gitignore index dfe4656..39b0e7c 100644 --- a/src/mapi/es1api/.gitignore +++ b/src/mapi/es1api/.gitignore @@ -1 +1,2 @@ glapi_mapi_tmp.h +Makefile diff --git a/src/mapi/es1api/Makefile b/src/mapi/es1api/Makefile deleted file mode 100644 index 6f4c35a..000 --- a/src/mapi/es1api/Makefile +++ /dev/null @@ -1,137 +0,0 @@ -# src/mapi/es1api/Makefile - -TOP := ../../.. -include $(TOP)/configs/current - -# this Makefile can build both OpenGL ES 1.1 and 2.0 -ifeq ($(ES),) -ES := es1 - -esapi_HEADER := GLES -esapi_PC := glesv1_cm.pc - -esapi_LIB := $(GLESv1_CM_LIB) -esapi_LIB_NAME := $(GLESv1_CM_LIB_NAME) -esapi_LIB_GLOB := $(GLESv1_CM_LIB_GLOB) -esapi_LIB_DEPS := $(GLESv1_CM_LIB_DEPS) -esapi_LIB_MAJOR := 1 -esapi_LIB_MINOR := 1 -esapi_LIB_PATCH := 0 -else -esapi_HEADER := GLES2 -esapi_PC := glesv2.pc - -esapi_LIB := $(GLESv2_LIB) -esapi_LIB_NAME := $(GLESv2_LIB_NAME) -esapi_LIB_GLOB := $(GLESv2_LIB_GLOB) -esapi_LIB_DEPS := $(GLESv2_LIB_DEPS) -esapi_LIB_MAJOR := 2 -esapi_LIB_MINOR := 0 -esapi_LIB_PATCH := 0 -endif - -ESAPI = $(ES)api - -GLAPI := $(TOP)/src/mapi/glapi -MAPI := $(TOP)/src/mapi/mapi - -esapi_CPPFLAGS := \ - -I$(TOP)/include \ - -I$(TOP)/src/mapi \ - -DMAPI_ABI_HEADER=\$(ESAPI)/glapi_mapi_tmp.h\ - - -# This is a lie when doing out-of-tree builds, but it's no worse than the -# current situation, and can be dropped should this get automakified -top_srcdir = $(TOP) -include $(MAPI)/sources.mak -esapi_SOURCES := $(MAPI_BRIDGE_FILES) -esapi_OBJECTS := $(notdir $(MAPI_BRIDGE_FILES:.c=.o)) -esapi_CPPFLAGS += -DMAPI_MODE_BRIDGE - -esapi_LIB_DEPS := -L$(TOP)/$(LIB_DIR) -l$(GLAPI_LIB) $(esapi_LIB_DEPS) - -.PHONY: default -default: depend $(TOP)/$(LIB_DIR)/$(esapi_LIB_NAME) - -$(TOP)/$(LIB_DIR)/$(esapi_LIB_NAME): $(esapi_OBJECTS) - $(MKLIB) -o $(esapi_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ - -major $(esapi_LIB_MAJOR) \ - -minor $(esapi_LIB_MINOR) \ - -patch $(esapi_LIB_PATCH) \ - -id $(INSTALL_LIB_DIR)/lib$(esapi_LIB).$(esapi_LIB_MAJOR).dylib \ - $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \ - $(esapi_OBJECTS) $(esapi_LIB_DEPS) - -# not used, but kept for completeness -lib$(ESAPI).a: $(esapi_OBJECTS) - @$(MKLIB) -o $(ESAPI) -static $(esapi_OBJECTS) - -$(esapi_OBJECTS): %.o: $(MAPI)/%.c - $(CC) -c $(esapi_CPPFLAGS) $(CFLAGS) $ -o $@ - -$(esapi_SOURCES): glapi_mapi_tmp.h - -include $(GLAPI)/gen/glapi_gen.mk -glapi_mapi_tmp.h: $(GLAPI)/gen/gl_and_es_API.xml $(glapi_gen_mapi_deps) - $(call glapi_gen_mapi,$,$(ESAPI)) - -.PHONY: clean -clean: - -rm -f $(esapi_PC) - -rm -f $(TOP)/$(LIB_DIR)/$(esapi_LIB_NAME) - -rm -f lib$(ESAPI).a - -rm -f $(esapi_OBJECTS) - -rm -f depend depend.bak - -rm -f glapi_mapi_tmp.h - -pcedit = \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ - -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ - -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \ - -pcedit-es1 = \ - $(pcedit) \ - -e 's,@GLESv1_CM_PC_REQ_PRIV@,$(GLESv1_CM_PC_REQ_PRIV),' \ - -e 's,@GLESv1_CM_PC_LIB_PRIV@,$(GLESv1_CM_PC_LIB_PRIV),' \ - -e 's,@GLESv1_CM_PC_CFLAGS@,$(GLESv1_CM_PC_CFLAGS),' \ - -e 's,@GLESv1_CM_LIB@,$(GLESv1_CM_LIB),' - -pcedit-es2 = \ - $(pcedit) \ - -e 's,@GLESv2_PC_REQ_PRIV@,$(GLESv2_PC_REQ_PRIV),' \ - -e 's,@GLESv2_PC_LIB_PRIV@,$(GLESv2_PC_LIB_PRIV),' \ - -e 's,@GLESv2_PC_CFLAGS@,$(GLESv2_PC_CFLAGS),' \ - -e 's,@GLESv2_LIB@,$(GLESv2_LIB),' - -$(esapi_PC): $(esapi_PC).in - @sed $(pcedit-$(ES)) $ $@ - -install-headers: - $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/$(esapi_HEADER) - $(INSTALL) -m 644 $(TOP)/include/$(esapi_HEADER)/*.h \ -
Mesa (master): build/glsl: fix android build v2
Module: Mesa Branch: master Commit: 2ddfca98378a1eb4044e8e9d7168d73443709068 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ddfca98378a1eb4044e8e9d7168d73443709068 Author: Tapani Pälli tapani.pa...@intel.com Date: Fri Aug 17 10:32:53 2012 +0300 build/glsl: fix android build v2 Commit 77a3efc6b907943903190b385fdf107c4acfcdca broke android build that sets its own value for GLSL_SRCDIR before including Makefile.sources. Patch moves overriding the value after include, this works as GLSL_SRCDIR variable gets expanded only later. Reviewed-by: Matt Turner matts...@gmail.com Signed-off-by: Tapani Pälli tapani.pa...@intel.com --- src/glsl/Android.mk |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/glsl/Android.mk b/src/glsl/Android.mk index 66c8bec..87a02f5 100644 --- a/src/glsl/Android.mk +++ b/src/glsl/Android.mk @@ -25,9 +25,9 @@ LOCAL_PATH := $(call my-dir) -GLSL_SRCDIR = . include $(LOCAL_PATH)/Makefile.sources +GLSL_SRCDIR = . # --- # Build libmesa_glsl # --- ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): meta: Don't modify GL_GENERATE_MIPMAP state when it doesn' t exist
Module: Mesa Branch: master Commit: 2abf555496b8f5a7319542756508dd2f2e8ed07c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2abf555496b8f5a7319542756508dd2f2e8ed07c Author: Ian Romanick ian.d.roman...@intel.com Date: Wed Aug 22 18:53:42 2012 -0700 meta: Don't modify GL_GENERATE_MIPMAP state when it doesn't exist This is a bit of a hack. _mesa_meta_GenerateMipmap shouldn't even be used in contexts where GL_GENERATE_MIPMAP doesn't exist (i.e., core profile and ES2) because it uses fixed-function, and fixed-function doesn't exist there either! A GLSL-based _mesa_meta_GenerateMipmap should be available soon. When that is available, this patch will be irrelevant and should be reverted. v2: Change (ctx-API != API_OPENGLES2 ctx-API != API_OPENGL_CORE) to (ctx-API == API_OPENGL || ctx-API == API_OPENGLES) based on review comment from Brian Paul. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Brian Paul bri...@vmware.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org --- src/mesa/drivers/common/meta.c |8 ++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index db49d90..7d7113c 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -3010,7 +3010,10 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, _mesa_BindFramebufferEXT(GL_FRAMEBUFFER_EXT, mipmap-FBO); - _mesa_TexParameteri(target, GL_GENERATE_MIPMAP, GL_FALSE); + if (ctx-API == API_OPENGL || ctx-API == API_OPENGLES) + _mesa_TexParameteri(target, GL_GENERATE_MIPMAP, GL_FALSE); + else + assert(!genMipmapSave); if (ctx-Extensions.EXT_framebuffer_sRGB) { _mesa_set_enable(ctx, GL_FRAMEBUFFER_SRGB_EXT, GL_FALSE); @@ -3149,7 +3152,8 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, _mesa_meta_end(ctx); _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave); - _mesa_TexParameteri(target, GL_GENERATE_MIPMAP, genMipmapSave); + if (genMipmapSave) + _mesa_TexParameteri(target, GL_GENERATE_MIPMAP, genMipmapSave); _mesa_BindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboSave); } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa: Refactor validate_texture_wrap_mode to use a switch-statement
Module: Mesa Branch: master Commit: d53101a9f31e1cba553c80dbafd23c748dd58a1d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d53101a9f31e1cba553c80dbafd23c748dd58a1d Author: Ian Romanick ian.d.roman...@intel.com Date: Mon Oct 3 12:46:23 2011 -0700 mesa: Refactor validate_texture_wrap_mode to use a switch-statement This makes the next couple changes a little easier. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/texparam.c | 77 +- 1 files changed, 42 insertions(+), 35 deletions(-) diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 41b9f97..a0c508c 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -29,7 +29,7 @@ * glTexParameter-related functions */ - +#include stdbool.h #include main/glheader.h #include main/colormac.h #include main/context.h @@ -56,43 +56,50 @@ static GLboolean validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) { const struct gl_extensions * const e = ctx-Extensions; + bool supported; - if (target == GL_TEXTURE_RECTANGLE_NV) { - if (wrap == GL_CLAMP || wrap == GL_CLAMP_TO_EDGE || - (wrap == GL_CLAMP_TO_BORDER e-ARB_texture_border_clamp)) - return GL_TRUE; - } - else if (target == GL_TEXTURE_EXTERNAL_OES) { - if (wrap == GL_CLAMP_TO_EDGE) - return GL_TRUE; - } - else { - switch (wrap) { - case GL_CLAMP: - case GL_REPEAT: - case GL_CLAMP_TO_EDGE: - case GL_MIRRORED_REPEAT: - return GL_TRUE; - case GL_CLAMP_TO_BORDER: - if (e-ARB_texture_border_clamp) -return GL_TRUE; - break; - case GL_MIRROR_CLAMP_EXT: - case GL_MIRROR_CLAMP_TO_EDGE_EXT: - if (e-ATI_texture_mirror_once || e-EXT_texture_mirror_clamp) -return GL_TRUE; - break; - case GL_MIRROR_CLAMP_TO_BORDER_EXT: - if (e-EXT_texture_mirror_clamp) -return GL_TRUE; - break; - default: - break; - } + switch (wrap) { + case GL_CLAMP: + supported = (target != GL_TEXTURE_EXTERNAL_OES); + break; + + case GL_CLAMP_TO_EDGE: + supported = true; + break; + + case GL_CLAMP_TO_BORDER: + supported = e-ARB_texture_border_clamp + (target != GL_TEXTURE_EXTERNAL_OES); + break; + + case GL_REPEAT: + case GL_MIRRORED_REPEAT: + supported = (target != GL_TEXTURE_RECTANGLE_NV) + (target != GL_TEXTURE_EXTERNAL_OES); + break; + + case GL_MIRROR_CLAMP_EXT: + case GL_MIRROR_CLAMP_TO_EDGE_EXT: + supported = (e-ATI_texture_mirror_once || e-EXT_texture_mirror_clamp) + (target != GL_TEXTURE_RECTANGLE_NV) + (target != GL_TEXTURE_EXTERNAL_OES); + break; + + case GL_MIRROR_CLAMP_TO_BORDER_EXT: + supported = e-EXT_texture_mirror_clamp + (target != GL_TEXTURE_RECTANGLE_NV) + (target != GL_TEXTURE_EXTERNAL_OES); + break; + + default: + supported = false; + break; } - _mesa_error( ctx, GL_INVALID_ENUM, glTexParameter(param=0x%x), wrap ); - return GL_FALSE; + if (!supported) + _mesa_error( ctx, GL_INVALID_ENUM, glTexParameter(param=0x%x), wrap ); + + return supported; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/es: Validate GL_TEXTURE_WRAP param in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: 842efb9447bd4c8c29599f1baeee8a380d5276c2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=842efb9447bd4c8c29599f1baeee8a380d5276c2 Author: Ian Romanick ian.d.roman...@intel.com Date: Mon Oct 3 13:03:47 2011 -0700 mesa/es: Validate GL_TEXTURE_WRAP param in Mesa code rather than the ES wrapper v2: Add proper core-profile filtering. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml | 14 ++ src/mesa/main/es1_conversion.c | 10 -- src/mesa/main/texparam.c | 14 ++ 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index c26caf6..6d7dbfd 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -239,18 +239,8 @@ value name=GL_TEXTURE_WRAP_S/ value name=GL_TEXTURE_WRAP_T/ value name=GL_TEXTURE_WRAP_R_OES category=OES_texture_3D/ - - desc name=param - value name=GL_CLAMP_TO_EDGE/ - value name=GL_REPEAT/ - value name=GL_MIRRORED_REPEAT category=GLES2.0/ - value name=GL_MIRRORED_REPEAT_OES category=OES_texture_mirrored_repeat/ - /desc - /desc - -desc name=pname - value name=GL_TEXTURE_MIN_FILTER/ - value name=GL_TEXTURE_MAG_FILTER/ + value name=GL_TEXTURE_MIN_FILTER/ + value name=GL_TEXTURE_MAG_FILTER/ value name=GL_TEXTURE_MAX_ANISOTROPY_EXT category=EXT_texture_filter_anisotropic/ /desc diff --git a/src/mesa/main/es1_conversion.c b/src/mesa/main/es1_conversion.c index ebd1e88..0d9f5b4 100644 --- a/src/mesa/main/es1_conversion.c +++ b/src/mesa/main/es1_conversion.c @@ -1253,11 +1253,6 @@ _es_TexParameterx(GLenum target, GLenum pname, GLfixed param) switch(pname) { case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - if (param != GL_CLAMP_TO_EDGE param != GL_REPEAT param != GL_MIRRORED_REPEAT) { - _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, - glTexParameterx(pname=0x%x), pname); - return; - } convert_param_value = false; break; case GL_TEXTURE_MIN_FILTER: @@ -1310,11 +1305,6 @@ _es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params) switch(pname) { case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - if (params[0] != GL_CLAMP_TO_EDGE params[0] != GL_REPEAT params[0] != GL_MIRRORED_REPEAT) { - _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, - glTexParameterxv(pname=0x%x), pname); - return; - } convert_params_value = false; n_params = 1; break; diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index a0c508c..a0f736c 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -56,11 +56,16 @@ static GLboolean validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) { const struct gl_extensions * const e = ctx-Extensions; + const bool is_desktop_gl = _mesa_is_desktop_gl(ctx); bool supported; switch (wrap) { case GL_CLAMP: - supported = (target != GL_TEXTURE_EXTERNAL_OES); + /* GL_CLAMP was removed in the core profile, and it has never existed in + * OpenGL ES. + */ + supported = (ctx-API == API_OPENGL) + (target != GL_TEXTURE_EXTERNAL_OES); break; case GL_CLAMP_TO_EDGE: @@ -68,7 +73,7 @@ validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) break; case GL_CLAMP_TO_BORDER: - supported = e-ARB_texture_border_clamp + supported = is_desktop_gl e-ARB_texture_border_clamp (target != GL_TEXTURE_EXTERNAL_OES); break; @@ -80,13 +85,14 @@ validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) case GL_MIRROR_CLAMP_EXT: case GL_MIRROR_CLAMP_TO_EDGE_EXT: - supported = (e-ATI_texture_mirror_once || e-EXT_texture_mirror_clamp) + supported = is_desktop_gl + (e-ATI_texture_mirror_once || e-EXT_texture_mirror_clamp) (target != GL_TEXTURE_RECTANGLE_NV) (target != GL_TEXTURE_EXTERNAL_OES); break; case GL_MIRROR_CLAMP_TO_BORDER_EXT: - supported = e-EXT_texture_mirror_clamp + supported = is_desktop_gl e-EXT_texture_mirror_clamp (target != GL_TEXTURE_RECTANGLE_NV) (target != GL_TEXTURE_EXTERNAL_OES); break; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/es: Validate glTexParameter targets in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: a0595cb4506251509e032a2592d6bb684480de4b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a0595cb4506251509e032a2592d6bb684480de4b Author: Ian Romanick ian.d.roman...@intel.com Date: Wed Jul 25 16:03:44 2012 -0700 mesa/es: Validate glTexParameter targets in Mesa code rather than the ES wrapper Ditto for glGetTexParameter targets. v2: Add proper core-profile and GLES3 filtering. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml | 16 src/mesa/main/es1_conversion.c | 10 -- src/mesa/main/texparam.c | 23 +++ 3 files changed, 15 insertions(+), 34 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 6d7dbfd..7acade2 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -227,14 +227,6 @@ /vector /proto - desc name=target - value name=GL_TEXTURE_2D/ - value name=GL_TEXTURE_CUBE_MAP category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_3D_OES category=OES_texture_3D/ - value name=GL_TEXTURE_EXTERNAL_OES category=OES_EGL_image_external/ - /desc - desc name=pname value name=GL_TEXTURE_WRAP_S/ value name=GL_TEXTURE_WRAP_T/ @@ -1222,14 +1214,6 @@ vector name=params type=GLtype * size=dynamic/ /proto - desc name=target - value name=GL_TEXTURE_2D/ - value name=GL_TEXTURE_CUBE_MAP category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_3D_OES category=OES_texture_3D/ - value name=GL_TEXTURE_EXTERNAL_OES category=OES_EGL_image_external/ - /desc - desc name=pname value name=GL_TEXTURE_WRAP_S/ value name=GL_TEXTURE_WRAP_T/ diff --git a/src/mesa/main/es1_conversion.c b/src/mesa/main/es1_conversion.c index 0d9f5b4..247a038 100644 --- a/src/mesa/main/es1_conversion.c +++ b/src/mesa/main/es1_conversion.c @@ -1240,16 +1240,6 @@ _es_TexParameterx(GLenum target, GLenum pname, GLfixed param) GLfloat converted_param; bool convert_param_value = true; - switch(target) { - case GL_TEXTURE_2D: - case GL_TEXTURE_CUBE_MAP: - case GL_TEXTURE_EXTERNAL_OES: - break; - default: - _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, - glTexParameterx(target=0x%x), target); - return; - } switch(pname) { case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index a0f736c..bb16228 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -131,35 +131,42 @@ get_texobj(struct gl_context *ctx, GLenum target, GLboolean get) switch (target) { case GL_TEXTURE_1D: - return texUnit-CurrentTex[TEXTURE_1D_INDEX]; + if (_mesa_is_desktop_gl(ctx)) + return texUnit-CurrentTex[TEXTURE_1D_INDEX]; + break; case GL_TEXTURE_2D: return texUnit-CurrentTex[TEXTURE_2D_INDEX]; case GL_TEXTURE_3D: - return texUnit-CurrentTex[TEXTURE_3D_INDEX]; + if (ctx-API != API_OPENGLES) + return texUnit-CurrentTex[TEXTURE_3D_INDEX]; + break; case GL_TEXTURE_CUBE_MAP: if (ctx-Extensions.ARB_texture_cube_map) { return texUnit-CurrentTex[TEXTURE_CUBE_INDEX]; } break; case GL_TEXTURE_RECTANGLE_NV: - if (ctx-Extensions.NV_texture_rectangle) { + if (_mesa_is_desktop_gl(ctx) + ctx-Extensions.NV_texture_rectangle) { return texUnit-CurrentTex[TEXTURE_RECT_INDEX]; } break; case GL_TEXTURE_1D_ARRAY_EXT: - if (ctx-Extensions.MESA_texture_array || - ctx-Extensions.EXT_texture_array) { + if (_mesa_is_desktop_gl(ctx) + (ctx-Extensions.MESA_texture_array || + ctx-Extensions.EXT_texture_array)) { return texUnit-CurrentTex[TEXTURE_1D_ARRAY_INDEX]; } break; case GL_TEXTURE_2D_ARRAY_EXT: - if (ctx-Extensions.MESA_texture_array || - ctx-Extensions.EXT_texture_array) { + if ((_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) + (ctx-Extensions.MESA_texture_array || + ctx-Extensions.EXT_texture_array)) { return texUnit-CurrentTex[TEXTURE_2D_ARRAY_INDEX]; } break; case GL_TEXTURE_EXTERNAL_OES: - if (ctx-Extensions.OES_EGL_image_external) { + if (_mesa_is_gles(ctx) ctx-Extensions.OES_EGL_image_external) { return texUnit-CurrentTex[TEXTURE_EXTERNAL_INDEX]; } break; ___ mesa-commit mailing
Mesa (master): mesa/es: Validate EGLImageTargetTexture2DOES target in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: ea9b212fca78eada7cc7c4449de3f31d2ceea1c3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea9b212fca78eada7cc7c4449de3f31d2ceea1c3 Author: Ian Romanick ian.d.roman...@intel.com Date: Wed Jul 25 16:13:33 2012 -0700 mesa/es: Validate EGLImageTargetTexture2DOES target in Mesa code rather than the ES wrapper Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml |5 - src/mesa/main/teximage.c | 20 +++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 7acade2..1306ac7 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -3114,11 +3114,6 @@ param name=target type=GLenum/ param name=image type=GLeglImageOES/ /proto - - desc name=target - value name=GL_TEXTURE_2D/ - value name=GL_TEXTURE_EXTERNAL_OES category=OES_EGL_image_external/ - /desc /template template name=EGLImageTargetRenderbufferStorage diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 27294ba..095db4f 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -28,7 +28,7 @@ * Texture image-related functions. */ - +#include stdbool.h #include glheader.h #include bufferobj.h #include context.h @@ -2670,13 +2670,23 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image) { struct gl_texture_object *texObj; struct gl_texture_image *texImage; + bool valid_target; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if ((target == GL_TEXTURE_2D -!ctx-Extensions.OES_EGL_image) || - (target == GL_TEXTURE_EXTERNAL_OES -!ctx-Extensions.OES_EGL_image_external)) { + switch (target) { + case GL_TEXTURE_2D: + valid_target = ctx-Extensions.OES_EGL_image; + break; + case GL_TEXTURE_EXTERNAL_OES: + valid_target = ctx-Extensions.OES_EGL_image_external; + break; + default: + valid_target = false; + break; + } + + if (!valid_target) { _mesa_error(ctx, GL_INVALID_ENUM, glEGLImageTargetTexture2D(target=%d), target); return; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/es: Validate tex image targets in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: 530c9d764b84035728a28ee2db996fffe49125ce URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=530c9d764b84035728a28ee2db996fffe49125ce Author: Ian Romanick ian.d.roman...@intel.com Date: Thu Jul 26 10:39:45 2012 -0700 mesa/es: Validate tex image targets in Mesa code rather than the ES wrapper This should take care of all the TexImage, TexSubImage, CopyTexImage, CompressedTexImage3DOES, and CopyTexSubImage type paths. v2: Add proper core-profile and GLES3 filtering. v3: Squash the CompressedTexImage3DOES patch per review comment from Ken. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml | 116 - src/mesa/main/teximage.c | 43 +++- 2 files changed, 29 insertions(+), 130 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 1306ac7..b08f2b4 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -265,22 +265,6 @@ param name=pixels type=const GLvoid */ /proto - desc name=target - value name=GL_TEXTURE_2D/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_X category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Y category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Z category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_X category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Y category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Z category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES category=OES_texture_cube_map/ - /desc - desc name=internalFormat value name=GL_ALPHA/ @@ -1620,22 +1604,6 @@ param name=border type=GLint/ /proto - desc name=target - value name=GL_TEXTURE_2D/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_X category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Y category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Z category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_X category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Y category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Z category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES category=OES_texture_cube_map/ - /desc - desc name=internalFormat error=GL_INVALID_VALUE value name=GL_ALPHA/ value name=GL_RGB/ @@ -1661,22 +1629,6 @@ param name=width type=GLsizei/ param name=height type=GLsizei/ /proto - - desc name=target - value name=GL_TEXTURE_2D/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_X category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Y category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Z category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_X category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Y category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Z category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES category=OES_texture_cube_map/ - /desc /template template name=TexSubImage2D @@ -1693,22
Mesa (master): mesa: Filter glBindTexture targets based on supported features.
Module: Mesa Branch: master Commit: 3f7c8364cf1d763f04413aecfac66df5534aeb34 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3f7c8364cf1d763f04413aecfac66df5534aeb34 Author: Ian Romanick ian.d.roman...@intel.com Date: Thu Jul 26 17:41:43 2012 -0700 mesa: Filter glBindTexture targets based on supported features. Fixed the piglit test arb_texture_buffer_object-negative-unsupported. NOTE: This is a candidate for stable release branches. v2: Add proper core-profile and GLES3 filtering. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/texobj.c | 30 +- 1 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 1d905b6..77cd4f9 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -1118,27 +1118,39 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures) * \return TEXTURE_x_INDEX or -1 if target is invalid */ static GLint -target_enum_to_index(GLenum target) +target_enum_to_index(struct gl_context *ctx, GLenum target) { switch (target) { case GL_TEXTURE_1D: - return TEXTURE_1D_INDEX; + return _mesa_is_desktop_gl(ctx) ? TEXTURE_1D_INDEX : -1; case GL_TEXTURE_2D: return TEXTURE_2D_INDEX; case GL_TEXTURE_3D: return TEXTURE_3D_INDEX; case GL_TEXTURE_CUBE_MAP_ARB: - return TEXTURE_CUBE_INDEX; + return ctx-Extensions.ARB_texture_cube_map + ? TEXTURE_CUBE_INDEX : -1; case GL_TEXTURE_RECTANGLE_NV: - return TEXTURE_RECT_INDEX; + return _mesa_is_desktop_gl(ctx) ctx-Extensions.NV_texture_rectangle + ? TEXTURE_RECT_INDEX : -1; case GL_TEXTURE_1D_ARRAY_EXT: - return TEXTURE_1D_ARRAY_INDEX; + return _mesa_is_desktop_gl(ctx) + (ctx-Extensions.EXT_texture_array + || ctx-Extensions.MESA_texture_array) + ? TEXTURE_1D_ARRAY_INDEX : -1; case GL_TEXTURE_2D_ARRAY_EXT: - return TEXTURE_2D_ARRAY_INDEX; + return (_mesa_is_desktop_gl(ctx) + (ctx-Extensions.EXT_texture_array + || ctx-Extensions.MESA_texture_array)) + || _mesa_is_gles3(ctx) + ? TEXTURE_2D_ARRAY_INDEX : -1; case GL_TEXTURE_BUFFER_ARB: - return TEXTURE_BUFFER_INDEX; + return _mesa_is_desktop_gl(ctx) + ctx-Extensions.ARB_texture_buffer_object + ? TEXTURE_BUFFER_INDEX : -1; case GL_TEXTURE_EXTERNAL_OES: - return TEXTURE_EXTERNAL_INDEX; + return _mesa_is_gles(ctx) ctx-Extensions.OES_EGL_image_external + ? TEXTURE_EXTERNAL_INDEX : -1; default: return -1; } @@ -1173,7 +1185,7 @@ _mesa_BindTexture( GLenum target, GLuint texName ) _mesa_debug(ctx, glBindTexture %s %d\n, _mesa_lookup_enum_by_nr(target), (GLint) texName); - targetIndex = target_enum_to_index(target); + targetIndex = target_enum_to_index(ctx, target); if (targetIndex 0) { _mesa_error(ctx, GL_INVALID_ENUM, glBindTexture(target)); return; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/es: Remove redundant glBindTexture target validation
Module: Mesa Branch: master Commit: 4269cace7944b465860213acbaf82ffddb91efcb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4269cace7944b465860213acbaf82ffddb91efcb Author: Ian Romanick ian.d.roman...@intel.com Date: Thu Jul 26 17:49:55 2012 -0700 mesa/es: Remove redundant glBindTexture target validation Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml |8 1 files changed, 0 insertions(+), 8 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index b08f2b4..c2347e5 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -1731,14 +1731,6 @@ param name=target type=GLenum/ param name=texture type=GLuint/ /proto - - desc name=target - value name=GL_TEXTURE_2D/ - value name=GL_TEXTURE_CUBE_MAP category=GLES2.0/ - value name=GL_TEXTURE_CUBE_MAP_OES category=OES_texture_cube_map/ - value name=GL_TEXTURE_3D_OES category=OES_texture_3D/ - value name=GL_TEXTURE_EXTERNAL_OES category=OES_EGL_image_external/ - /desc /template template name=DeleteTextures ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/es: Validate glTexParameter pnames in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: b3dd524a1082efd12d4a796122c300a61ba016d9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b3dd524a1082efd12d4a796122c300a61ba016d9 Author: Ian Romanick ian.d.roman...@intel.com Date: Thu Jul 26 18:04:50 2012 -0700 mesa/es: Validate glTexParameter pnames in Mesa code rather than the ES wrapper This also adds a missing extension (and API) check around GL_TEXTURE_CROP_RECT_OES. v2: Add proper core-profile, GLES1, and GLES3 filtering. GL_TEXTURE_MAX_LEVEL is (incorrectly) accepted in ES contexts. A future patch will add GL_APPLE_texture_max_level, and meta really needs this. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml | 23 --- src/mesa/main/es1_conversion.c | 44 ++-- src/mesa/main/texparam.c | 62 --- 3 files changed, 54 insertions(+), 75 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index c2347e5..af98440 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -226,29 +226,6 @@ param name=param type=GLtype/ /vector /proto - - desc name=pname - value name=GL_TEXTURE_WRAP_S/ - value name=GL_TEXTURE_WRAP_T/ - value name=GL_TEXTURE_WRAP_R_OES category=OES_texture_3D/ - value name=GL_TEXTURE_MIN_FILTER/ - value name=GL_TEXTURE_MAG_FILTER/ - value name=GL_TEXTURE_MAX_ANISOTROPY_EXT category=EXT_texture_filter_anisotropic/ -/desc - - desc name=pname category=GLES1.1 - value name=GL_GENERATE_MIPMAP/ - - desc name=param - value name=GL_TRUE/ - value name=GL_FALSE/ - /desc - /desc - - desc name=pname category=OES_draw_texture - value name=GL_TEXTURE_CROP_RECT_OES/ - desc name=params vector_size=4/ - /desc /template template name=TexImage2D diff --git a/src/mesa/main/es1_conversion.c b/src/mesa/main/es1_conversion.c index 247a038..75cdfc8 100644 --- a/src/mesa/main/es1_conversion.c +++ b/src/mesa/main/es1_conversion.c @@ -1237,41 +1237,11 @@ _check_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) void GL_APIENTRY _es_TexParameterx(GLenum target, GLenum pname, GLfixed param) { - GLfloat converted_param; - bool convert_param_value = true; - - switch(pname) { - case GL_TEXTURE_WRAP_S: - case GL_TEXTURE_WRAP_T: - convert_param_value = false; - break; - case GL_TEXTURE_MIN_FILTER: - case GL_TEXTURE_MAG_FILTER: - convert_param_value = false; - break; - case GL_GENERATE_MIPMAP: - if (param != GL_TRUE param != GL_FALSE) { - _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, - glTexParameterx(pname=0x%x), pname); - return; - } - convert_param_value = false; - break; - case GL_TEXTURE_MAX_ANISOTROPY_EXT: - break; - default: - _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, - glTexParameterx(pname=0x%x), pname); - return; - } - - if (convert_param_value) { - converted_param = (GLfloat) (param / 65536.0f); + if (pname == GL_TEXTURE_MAX_ANISOTROPY_EXT) { + _mesa_TexParameterf(target, pname, (GLfloat) (param / 65536.0f)); } else { - converted_param = (GLfloat) param; + _mesa_TexParameterf(target, pname, (GLfloat) param); } - - _mesa_TexParameterf(target, pname, converted_param); } void GL_APIENTRY @@ -1300,15 +1270,7 @@ _es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params) break; case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: - convert_params_value = false; - n_params = 1; - break; case GL_GENERATE_MIPMAP: - if (params[0] != GL_TRUE params[0] != GL_FALSE) { - _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, - glTexParameterxv(pname=0x%x), pname); - return; - } convert_params_value = false; n_params = 1; break; diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index bb16228..05d31c1 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -325,6 +325,9 @@ set_tex_parameteri(struct gl_context *ctx, return GL_FALSE; case GL_TEXTURE_BASE_LEVEL: + if (!_mesa_is_desktop_gl(ctx) !_mesa_is_gles3(ctx)) + goto invalid_pname; + if (texObj-BaseLevel == params[0]) return GL_FALSE; if (params[0] 0 || @@ -350,6 +353,9 @@ set_tex_parameteri(struct gl_context *ctx, return GL_TRUE; case GL_GENERATE_MIPMAP_SGIS: + if (ctx-API != API_OPENGL ctx-API != API_OPENGLES) + goto invalid_pname; +
Mesa (master): mesa/es: Validate glGetTexParameter pnames in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: c9689e3e55928d4a95f1c10c7a33fffba8cbdece URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c9689e3e55928d4a95f1c10c7a33fffba8cbdece Author: Ian Romanick ian.d.roman...@intel.com Date: Thu Jul 26 18:15:40 2012 -0700 mesa/es: Validate glGetTexParameter pnames in Mesa code rather than the ES wrapper This also adds a missing extension (and API) check around GL_TEXTURE_CROP_RECT_OES. v2: Add proper core-profile and GLES3 filtering. GL_TEXTURE_MAX_LEVEL is (incorrectly) accepted in ES contexts. A future patch will add GL_APPLE_texture_max_level, and meta really needs this. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml | 16 --- src/mesa/main/texparam.c | 97 +++-- 2 files changed, 84 insertions(+), 29 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index af98440..09ba424 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -1174,22 +1174,6 @@ param name=pname type=GLenum/ vector name=params type=GLtype * size=dynamic/ /proto - - desc name=pname - value name=GL_TEXTURE_WRAP_S/ - value name=GL_TEXTURE_WRAP_T/ - value name=GL_TEXTURE_WRAP_R_OES category=OES_texture_3D/ - value name=GL_TEXTURE_MIN_FILTER/ - value name=GL_TEXTURE_MAG_FILTER/ - value name=GL_GENERATE_MIPMAP category=GLES1.1/ - - desc name=params vector_size=1 convert=false/ - /desc - - desc name=pname category=OES_draw_texture - value name=GL_TEXTURE_CROP_RECT_OES/ - desc name=params vector_size=4/ - /desc /template template name=IsEnabled direction=get diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 05d31c1..e6140eb 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -1310,6 +1310,9 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) *params = ENUM_TO_FLOAT(obj-Sampler.WrapR); break; case GL_TEXTURE_BORDER_COLOR: + if (!_mesa_is_desktop_gl(ctx)) +goto invalid_pname; + if (ctx-NewState (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) _mesa_update_state_locked(ctx); if (ctx-Color._ClampFragmentColor) { @@ -1326,18 +1329,33 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) } break; case GL_TEXTURE_RESIDENT: + if (ctx-API != API_OPENGL) +goto invalid_pname; + *params = 1.0F; break; case GL_TEXTURE_PRIORITY: + if (ctx-API != API_OPENGL) +goto invalid_pname; + *params = obj-Priority; break; case GL_TEXTURE_MIN_LOD: + if (!_mesa_is_desktop_gl(ctx) !_mesa_is_gles3(ctx)) +goto invalid_pname; + *params = obj-Sampler.MinLod; break; case GL_TEXTURE_MAX_LOD: + if (!_mesa_is_desktop_gl(ctx) !_mesa_is_gles3(ctx)) +goto invalid_pname; + *params = obj-Sampler.MaxLod; break; case GL_TEXTURE_BASE_LEVEL: + if (!_mesa_is_desktop_gl(ctx) !_mesa_is_gles3(ctx)) +goto invalid_pname; + *params = (GLfloat) obj-BaseLevel; break; case GL_TEXTURE_MAX_LEVEL: @@ -1349,28 +1367,42 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) *params = obj-Sampler.MaxAnisotropy; break; case GL_GENERATE_MIPMAP_SGIS: + if (ctx-API != API_OPENGL ctx-API != API_OPENGLES) +goto invalid_pname; + *params = (GLfloat) obj-GenerateMipmap; break; case GL_TEXTURE_COMPARE_MODE_ARB: - if (!ctx-Extensions.ARB_shadow) + if ((!_mesa_is_desktop_gl(ctx) || !ctx-Extensions.ARB_shadow) + !_mesa_is_gles3(ctx)) goto invalid_pname; *params = (GLfloat) obj-Sampler.CompareMode; break; case GL_TEXTURE_COMPARE_FUNC_ARB: - if (!ctx-Extensions.ARB_shadow) + if ((!_mesa_is_desktop_gl(ctx) || !ctx-Extensions.ARB_shadow) + !_mesa_is_gles3(ctx)) goto invalid_pname; *params = (GLfloat) obj-Sampler.CompareFunc; break; case GL_DEPTH_TEXTURE_MODE_ARB: - if (!ctx-Extensions.ARB_depth_texture) + /* GL_DEPTH_TEXTURE_MODE_ARB is removed in core-profile and it has + * never existed in OpenGL ES. + */ + if (ctx-API != API_OPENGL || !ctx-Extensions.ARB_depth_texture) goto invalid_pname; *params = (GLfloat) obj-DepthMode; break; case GL_TEXTURE_LOD_BIAS: + if (ctx-API != API_OPENGL) +goto invalid_pname; +
Mesa (master): mesa/es: Add support for GL_APPLE_texture_max_level
Module: Mesa Branch: master Commit: 2dcb40bb44a813295e3133bcec66c0de1e5f5a34 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2dcb40bb44a813295e3133bcec66c0de1e5f5a34 Author: Ian Romanick ian.d.roman...@intel.com Date: Wed Aug 15 09:57:50 2012 -0700 mesa/es: Add support for GL_APPLE_texture_max_level This is desktop OpenGL functionality that has always existed. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/extensions.c |1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 9e357cd..ab33ac5 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -275,6 +275,7 @@ static const struct extension extension_table[] = { { GL_AMD_shader_stencil_export, o(ARB_shader_stencil_export), GL, 2009 }, { GL_APPLE_object_purgeable, o(APPLE_object_purgeable), GL, 2006 }, { GL_APPLE_packed_pixels, o(APPLE_packed_pixels), GLL,2002 }, + { GL_APPLE_texture_max_level, o(dummy_true), ES1 | ES2, 2009 }, { GL_APPLE_vertex_array_object, o(APPLE_vertex_array_object), GLL,2002 }, { GL_ATI_blend_equation_separate, o(EXT_blend_equation_separate), GL, 2003 }, { GL_ATI_draw_buffers,o(dummy_true), GLL,2002 }, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa: Generate an error when glCopyTexImage border is invalid
Module: Mesa Branch: master Commit: 59d965333c05534475b60042571366656b97ab9d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=59d965333c05534475b60042571366656b97ab9d Author: Ian Romanick ian.d.roman...@intel.com Date: Thu Jul 26 18:43:26 2012 -0700 mesa: Generate an error when glCopyTexImage border is invalid NOTE: This is a candidate for stable release branches. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/teximage.c |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 8efa179..879a24e 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -2009,6 +2009,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, if (border 0 || border 1 || ((target == GL_TEXTURE_RECTANGLE_NV || target == GL_PROXY_TEXTURE_RECTANGLE_NV) border != 0)) { + _mesa_error(ctx, GL_INVALID_VALUE, + glCopyTexImage%dD(border=%d), dimensions, border); return GL_TRUE; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/es: Validate glTexImage border in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: 0686ccac950bac1a650400b29c47ddaafea22fa9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0686ccac950bac1a650400b29c47ddaafea22fa9 Author: Ian Romanick ian.d.roman...@intel.com Date: Thu Jul 26 18:46:23 2012 -0700 mesa/es: Validate glTexImage border in Mesa code rather than the ES wrapper Also validate glCopyTexImage border. This fixes a bug in the APIspec. Previously glTexImage3DOES could be passed a non-zero border without error. NOTE: This is a candidate for stable release branches. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml |8 src/mesa/main/teximage.c |6 -- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 09ba424..1c5be8c 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -306,10 +306,6 @@ /desc /desc - desc name=border error=GL_INVALID_VALUE - value name=0/ - /desc - desc name=format value name=GL_ALPHA/ @@ -1572,10 +1568,6 @@ value name=GL_LUMINANCE/ value name=GL_LUMINANCE_ALPHA/ /desc - - desc name=border error=GL_INVALID_VALUE - value name=0/ - /desc /template template name=CopyTexSubImage2D diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 879a24e..d9f0c7d 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -1605,7 +1605,8 @@ texture_error_check( struct gl_context *ctx, /* Check border */ if (border 0 || border 1 || - ((target == GL_TEXTURE_RECTANGLE_NV || + ((ctx-API != API_OPENGL || + target == GL_TEXTURE_RECTANGLE_NV || target == GL_PROXY_TEXTURE_RECTANGLE_NV) border != 0)) { if (!isProxy) { _mesa_error(ctx, GL_INVALID_VALUE, @@ -2007,7 +2008,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, /* Check border */ if (border 0 || border 1 || - ((target == GL_TEXTURE_RECTANGLE_NV || + ((ctx-API != API_OPENGL || + target == GL_TEXTURE_RECTANGLE_NV || target == GL_PROXY_TEXTURE_RECTANGLE_NV) border != 0)) { _mesa_error(ctx, GL_INVALID_VALUE, glCopyTexImage%dD(border=%d), dimensions, border); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/es: Validate glTexImage format, type, and internalFormat in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: 409620e47748479aaef593dc9bec0d6dd520e14a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=409620e47748479aaef593dc9bec0d6dd520e14a Author: Ian Romanick ian.d.roman...@intel.com Date: Thu Jul 26 19:18:58 2012 -0700 mesa/es: Validate glTexImage format, type, and internalFormat in Mesa code rather than the ES wrapper v2: Add proper GLES3 filtering. v3: Collapse ALPHA, LUMINANCE, and LUMINANCE_ALPHA cases per review comment from Ken. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml | 203 - src/mesa/main/teximage.c | 94 + src/mesa/main/teximage.h |4 + 3 files changed, 98 insertions(+), 203 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 1c5be8c..ffc384c 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -241,148 +241,6 @@ param name=type type=GLenum/ param name=pixels type=const GLvoid */ /proto - - desc name=internalFormat - value name=GL_ALPHA/ - - desc name=format error=GL_INVALID_VALUE - value name=GL_ALPHA/ - /desc - /desc - - desc name=internalFormat - value name=GL_RGB/ - - desc name=format error=GL_INVALID_VALUE - value name=GL_RGB/ - /desc - /desc - - desc name=internalFormat - value name=GL_RGBA/ - - desc name=format error=GL_INVALID_VALUE - value name=GL_RGBA/ - /desc - /desc - - desc name=internalFormat - value name=GL_LUMINANCE/ - - desc name=format error=GL_INVALID_VALUE - value name=GL_LUMINANCE/ - /desc - /desc - - desc name=internalFormat - value name=GL_LUMINANCE_ALPHA/ - - desc name=format error=GL_INVALID_VALUE - value name=GL_LUMINANCE_ALPHA/ - /desc - /desc - - desc name=internalFormat category=OES_depth_texture - value name=GL_DEPTH_COMPONENT/ - - desc name=format error=GL_INVALID_VALUE - value name=GL_DEPTH_COMPONENT/ - /desc - /desc - - desc name=internalFormat category=OES_packed_depth_stencil - value name=GL_DEPTH_STENCIL_OES/ - - desc name=format error=GL_INVALID_VALUE - value name=GL_DEPTH_STENCIL_OES/ - /desc - /desc - - desc name=internalFormat category=EXT_texture_format_BGRA - value name=GL_BGRA_EXT/ - - desc name=format error=GL_INVALID_VALUE - value name=GL_BGRA_EXT/ - /desc - /desc - - desc name=format - value name=GL_ALPHA/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - - desc name=format - value name=GL_RGB/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_UNSIGNED_SHORT_5_6_5/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - - desc name=format - value name=GL_RGBA/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_UNSIGNED_SHORT_4_4_4_4/ - value name=GL_UNSIGNED_SHORT_5_5_5_1/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - value name=GL_UNSIGNED_INT_2_10_10_10_REV_EXT category=EXT_texture_type_2_10_10_10_REV/ - /desc - /desc - - desc name=format - value name=GL_LUMINANCE/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - - desc name=format - value name=GL_LUMINANCE_ALPHA/ - - desc name=type error=GL_INVALID_OPERATION - value
Mesa (master): mesa/es: Validate glTexSubImage format and type in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: 9848e86af0c937a6f7609289ab2705c3535f378f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9848e86af0c937a6f7609289ab2705c3535f378f Author: Ian Romanick ian.d.roman...@intel.com Date: Fri Jul 27 06:40:26 2012 -0700 mesa/es: Validate glTexSubImage format and type in Mesa code rather than the ES wrapper v2: Add proper GLES3 filtering. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml | 133 - src/mesa/main/teximage.c | 17 ++ 2 files changed, 17 insertions(+), 133 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index ffc384c..7b6e25e 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -1455,85 +1455,6 @@ param name=type type=GLenum/ param name=pixels type=const GLvoid */ /proto - - desc name=format - value name=GL_ALPHA/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - - desc name=format - value name=GL_RGB/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_UNSIGNED_SHORT_5_6_5/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - - desc name=format - value name=GL_RGBA/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_UNSIGNED_SHORT_4_4_4_4/ - value name=GL_UNSIGNED_SHORT_5_5_5_1/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - value name=GL_UNSIGNED_INT_2_10_10_10_REV_EXT category=EXT_texture_type_2_10_10_10_REV/ - /desc - /desc - - desc name=format - value name=GL_LUMINANCE/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - - desc name=format - value name=GL_LUMINANCE_ALPHA/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - - desc name=format category=OES_depth_texture - value name=GL_DEPTH_COMPONENT/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_SHORT/ - value name=GL_UNSIGNED_INT/ - /desc - /desc - - desc name=format category=OES_packed_depth_stencil - value name=GL_DEPTH_STENCIL_OES/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_INT_24_8_OES/ - /desc - /desc - - desc name=format category=EXT_texture_format_BGRA - value name=GL_BGRA_EXT/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - /desc - /desc /template template name=BindTexture @@ -1624,60 +1545,6 @@ param name=type type=GLenum/ param name=pixels type=const GLvoid */ /proto - - desc name=format - value name=GL_ALPHA/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - - desc name=format - value name=GL_RGB/ - - desc name=type error=GL_INVALID_OPERATION - value name=GL_UNSIGNED_BYTE/ - value name=GL_UNSIGNED_SHORT_5_6_5/ - value name=GL_FLOAT category=OES_texture_float/ - value name=GL_HALF_FLOAT_OES category=OES_texture_half_float/ - /desc - /desc - -
Mesa (master): mesa/es: Validate glCopyTexImage internalFormat in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: c11096e94a68ce0a1d7c9cda0f178ceca44ce25d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c11096e94a68ce0a1d7c9cda0f178ceca44ce25d Author: Ian Romanick ian.d.roman...@intel.com Date: Fri Jul 27 06:45:54 2012 -0700 mesa/es: Validate glCopyTexImage internalFormat in Mesa code rather than the ES wrapper v2: Add GLES3 filtering. I'm not 100% sure this is correct. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml |8 src/mesa/main/teximage.c | 18 ++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 7b6e25e..b9332ab 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -1418,14 +1418,6 @@ param name=height type=GLsizei/ param name=border type=GLint/ /proto - - desc name=internalFormat error=GL_INVALID_VALUE - value name=GL_ALPHA/ - value name=GL_RGB/ - value name=GL_RGBA/ - value name=GL_LUMINANCE/ - value name=GL_LUMINANCE_ALPHA/ - /desc /template template name=CopyTexSubImage2D diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 3cd9d40..5cf9118 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -2127,6 +2127,24 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, return GL_TRUE; } + /* OpenGL ES 1.x and OpenGL ES 2.0 impose additional restrictions on the +* internalFormat. +*/ + if (_mesa_is_gles(ctx) !_mesa_is_gles3(ctx)) { + switch (internalFormat) { + case GL_ALPHA: + case GL_RGB: + case GL_RGBA: + case GL_LUMINANCE: + case GL_LUMINANCE_ALPHA: + break; + default: + _mesa_error(ctx, GL_INVALID_VALUE, + glCopyTexImage%dD(internalFormat), dimensions); + return GL_TRUE; + } + } + baseFormat = _mesa_base_tex_format(ctx, internalFormat); if (baseFormat 0) { _mesa_error(ctx, GL_INVALID_VALUE, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): mesa/es: Validate glCompressedTexImage internalFormat in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: dd0eb004874645135b9aaac3ebbd0aaf274079ea URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dd0eb004874645135b9aaac3ebbd0aaf274079ea Author: Ian Romanick ian.d.roman...@intel.com Date: Fri Jul 27 07:09:30 2012 -0700 mesa/es: Validate glCompressedTexImage internalFormat in Mesa code rather than the ES wrapper v2: Add proper core-profile filtering. Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml | 18 -- src/mesa/main/glformats.c | 24 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index b9332ab..1ae7212 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -1633,24 +1633,6 @@ param name=imageSize type=GLsizei/ param name=data type=const GLvoid */ /proto - - desc name=internalFormat - value name=GL_ETC1_RGB8_OES category=OES_compressed_ETC1_RGB8_texture/ - - value name=GL_PALETTE4_RGB8_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE4_RGBA8_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE4_R5_G6_B5_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE4_RGBA4_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE4_RGB5_A1_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE8_RGB8_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE8_RGBA8_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE8_R5_G6_B5_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE8_RGBA4_OES category=OES_compressed_paletted_texture/ - value name=GL_PALETTE8_RGB5_A1_OES category=OES_compressed_paletted_texture/ - - value name=GL_COMPRESSED_RGB_S3TC_DXT1_EXT category=EXT_texture_compression_dxt1/ - value name=GL_COMPRESSED_RGBA_S3TC_DXT1_EXT category=EXT_texture_compression_dxt1/ - /desc /template template name=CompressedTexSubImage2D diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index daf1b76..b6f9e94 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -790,37 +790,45 @@ _mesa_is_compressed_format(struct gl_context *ctx, GLenum format) switch (format) { case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: + return ctx-Extensions.EXT_texture_compression_s3tc; case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - return ctx-Extensions.EXT_texture_compression_s3tc; + return _mesa_is_desktop_gl(ctx) + ctx-Extensions.EXT_texture_compression_s3tc; case GL_RGB_S3TC: case GL_RGB4_S3TC: case GL_RGBA_S3TC: case GL_RGBA4_S3TC: - return ctx-Extensions.S3_s3tc; + return _mesa_is_desktop_gl(ctx) ctx-Extensions.S3_s3tc; case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: - return ctx-Extensions.EXT_texture_sRGB + return _mesa_is_desktop_gl(ctx) + ctx-Extensions.EXT_texture_sRGB ctx-Extensions.EXT_texture_compression_s3tc; case GL_COMPRESSED_RGB_FXT1_3DFX: case GL_COMPRESSED_RGBA_FXT1_3DFX: - return ctx-Extensions.TDFX_texture_compression_FXT1; + return _mesa_is_desktop_gl(ctx) + ctx-Extensions.TDFX_texture_compression_FXT1; case GL_COMPRESSED_RED_RGTC1: case GL_COMPRESSED_SIGNED_RED_RGTC1: case GL_COMPRESSED_RG_RGTC2: case GL_COMPRESSED_SIGNED_RG_RGTC2: - return ctx-Extensions.ARB_texture_compression_rgtc; + return _mesa_is_desktop_gl(ctx) + ctx-Extensions.ARB_texture_compression_rgtc; case GL_COMPRESSED_LUMINANCE_LATC1_EXT: case GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT: case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: - return ctx-Extensions.EXT_texture_compression_latc; + return ctx-API == API_OPENGL + ctx-Extensions.EXT_texture_compression_latc; case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI: - return ctx-Extensions.ATI_texture_compression_3dc; + return ctx-API == API_OPENGL + ctx-Extensions.ATI_texture_compression_3dc; case GL_ETC1_RGB8_OES: - return ctx-Extensions.OES_compressed_ETC1_RGB8_texture; + return _mesa_is_gles(ctx) + ctx-Extensions.OES_compressed_ETC1_RGB8_texture; #if FEATURE_ES case GL_PALETTE4_RGB8_OES: case GL_PALETTE4_RGBA8_OES: ___ mesa-commit mailing list
Mesa (master): mesa/es: Validate glCompressedTexSubImage internalFormat in Mesa code rather than the ES wrapper
Module: Mesa Branch: master Commit: 9b028faeaa2c4b0ca2e86892aac70a2f2b872fbb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9b028faeaa2c4b0ca2e86892aac70a2f2b872fbb Author: Ian Romanick ian.d.roman...@intel.com Date: Fri Jul 27 07:13:03 2012 -0700 mesa/es: Validate glCompressedTexSubImage internalFormat in Mesa code rather than the ES wrapper Signed-off-by: Ian Romanick ian.d.roman...@intel.com Reviewed-by: Kenneth Graunke kenn...@whitecape.org Reviewed-by: Jordan Justen jordan.l.jus...@intel.com --- src/mesa/main/APIspec.xml |5 - src/mesa/main/teximage.c | 10 ++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 1ae7212..8b5ad03 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -1648,11 +1648,6 @@ param name=imageSize type=GLsizei/ param name=data type=const GLvoid */ /proto - - desc name=format - value name=GL_COMPRESSED_RGB_S3TC_DXT1_EXT category=EXT_texture_compression_dxt1/ - value name=GL_COMPRESSED_RGBA_S3TC_DXT1_EXT category=EXT_texture_compression_dxt1/ - /desc /template template name=BlendFuncSeparate diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 5cf9118..2380efe 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -1381,6 +1381,16 @@ compressedteximage_only_format(const struct gl_context *ctx, GLenum format) { switch (format) { case GL_ETC1_RGB8_OES: + case GL_PALETTE4_RGB8_OES: + case GL_PALETTE4_RGBA8_OES: + case GL_PALETTE4_R5_G6_B5_OES: + case GL_PALETTE4_RGBA4_OES: + case GL_PALETTE4_RGB5_A1_OES: + case GL_PALETTE8_RGB8_OES: + case GL_PALETTE8_RGBA8_OES: + case GL_PALETTE8_R5_G6_B5_OES: + case GL_PALETTE8_RGBA4_OES: + case GL_PALETTE8_RGB5_A1_OES: return GL_TRUE; default: return GL_FALSE; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): glsl/linker: Avoid buffer over-run in parcel_out_uniform_storage::visit_field
Module: Mesa Branch: master Commit: ff996cafce511dd8a6c4e066e409c23e147a670c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff996cafce511dd8a6c4e066e409c23e147a670c Author: Stéphane Marchesin marc...@chromium.org Date: Tue Aug 14 17:15:54 2012 -0700 glsl/linker: Avoid buffer over-run in parcel_out_uniform_storage::visit_field When too may uniforms are used, the error will be caught in check_resources (src/glsl/linker.cpp). NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Stéphane Marchesin marc...@chromium.org Reviewed-by: Ian Romanick ian.d.roman...@intel.com Tested-by: Benoit Jacob bja...@mozilla.com --- src/glsl/link_uniforms.cpp |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp index 25dc1d7..eef9025 100644 --- a/src/glsl/link_uniforms.cpp +++ b/src/glsl/link_uniforms.cpp @@ -313,7 +313,7 @@ private: const gl_texture_index target = base_type-sampler_index(); const unsigned shadow = base_type-sampler_shadow; for (unsigned i = this-uniforms[id].sampler -; i this-next_sampler +; i MIN2(this-next_sampler, MAX_SAMPLERS) ; i++) { this-targets[i] = target; this-shader_samplers_used |= 1U i; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): i965/msaa: Add sample-alpha-to-coverage support for multiple render targets
Module: Mesa Branch: master Commit: e592f7df0361eb8b5c75944f0151c4e6b3f839dd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e592f7df0361eb8b5c75944f0151c4e6b3f839dd Author: Anuj Phogat anuj.pho...@gmail.com Date: Wed Aug 1 16:32:06 2012 -0700 i965/msaa: Add sample-alpha-to-coverage support for multiple render targets Render Target Write message should include source zero alpha value when sample-alpha-to-coverage is enabled for an FBO with multiple render targets. Source zero alpha value is used as fragment coverage for all the render targets. This patch makes piglit tests draw-buffers-alpha-to-coverage and alpha-to-coverage-no-draw-buffer-zero to pass on Sandybridge. No regressions are observed with piglit all.tests. V2: Revert all the changes made in emit_color_write() function to include src0 alpha for targets 0. Now handling this case in a if block. V3: Correctly calculate the instruction length for buffer zero. Properly handle the case of dual_src_blend when alpha-to-coverage is enabled. Signed-off-by: Anuj Phogat anuj.pho...@gmail.com Reviewed-by: Paul Berry stereotype...@gmail.com --- src/mesa/drivers/dri/i965/brw_fs_emit.cpp| 12 ++ src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 30 - src/mesa/drivers/dri/i965/brw_wm.c |2 + src/mesa/drivers/dri/i965/brw_wm.h |1 + 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_emit.cpp b/src/mesa/drivers/dri/i965/brw_fs_emit.cpp index 4564e3b..5900c0e 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_emit.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_emit.cpp @@ -59,6 +59,18 @@ fs_visitor::generate_fb_write(fs_inst *inst) retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD)); brw_set_compression_control(p, BRW_COMPRESSION_NONE); + if (inst-target 0 +c-key.nr_color_regions 1 +c-key.sample_alpha_to_coverage) { +/* Set Source0 Alpha Present to RenderTarget bit in message + * header. + */ +brw_OR(p, + vec1(retype(brw_message_reg(inst-base_mrf), BRW_REGISTER_TYPE_UD)), + vec1(retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD)), + brw_imm_ud(0x1 11)); + } + if (inst-target 0) { /* Set the render target index for choosing BLEND_STATE. */ brw_MOV(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 7a2f777..8eee49d 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -2057,6 +2057,7 @@ fs_visitor::emit_fb_writes() int nr = base_mrf; int reg_width = c-dispatch_width / 8; bool do_dual_src = this-dual_src_output.file != BAD_FILE; + bool src0_alpha_to_render_target = false; if (c-dispatch_width == 16 do_dual_src) { fail(GL_ARB_blend_func_extended not yet supported in 16-wide.); @@ -2078,6 +2079,10 @@ fs_visitor::emit_fb_writes() } if (header_present) { + src0_alpha_to_render_target = intel-gen = 6 + !do_dual_src + c-key.nr_color_regions 1 + c-key.sample_alpha_to_coverage; /* m2, m3 header */ nr += 2; } @@ -2094,6 +2099,8 @@ fs_visitor::emit_fb_writes() nr += 4 * reg_width; if (do_dual_src) nr += 4; + if (src0_alpha_to_render_target) + nr += reg_width; if (c-source_depth_to_render_target) { if (intel-gen == 6 c-dispatch_width == 16) { @@ -2165,13 +2172,32 @@ fs_visitor::emit_fb_writes() this-current_annotation = ralloc_asprintf(this-mem_ctx, FB write target %d, target); + /* If src0_alpha_to_render_target is true, include source zero alpha + * data in RenderTargetWrite message for targets 0. + */ + int write_color_mrf = color_mrf; + if (src0_alpha_to_render_target target != 0) { + fs_inst *inst; + fs_reg color = outputs[0]; + color.reg_offset += 3; + + inst = emit(BRW_OPCODE_MOV, +fs_reg(MRF, write_color_mrf, color.type), +color); + inst-saturate = c-key.clamp_fragment_color; + write_color_mrf = color_mrf + reg_width; + } + for (unsigned i = 0; i this-output_components[target]; i++) -emit_color_write(target, i, color_mrf); + emit_color_write(target, i, write_color_mrf); fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst-target = target; inst-base_mrf = base_mrf; - inst-mlen = nr - base_mrf; + if (src0_alpha_to_render_target target == 0) + inst-mlen = nr - base_mrf - reg_width; + else +
Mesa (master): build: Fix installation of GLES2 headers
Module: Mesa Branch: master Commit: 68a2c510a6f8f62377dd745babe9d71ed4c192d3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=68a2c510a6f8f62377dd745babe9d71ed4c192d3 Author: Matt Turner matts...@gmail.com Date: Thu Aug 23 13:29:48 2012 -0700 build: Fix installation of GLES2 headers Reported-by: U. Artie Eoff ullysses.a.e...@intel.com Tested-by: U. Artie Eoff ullysses.a.e...@intel.com --- src/mapi/es2api/Makefile.am | 11 +-- 1 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/mapi/es2api/Makefile.am b/src/mapi/es2api/Makefile.am index 7430780..9febc4b 100644 --- a/src/mapi/es2api/Makefile.am +++ b/src/mapi/es2api/Makefile.am @@ -31,12 +31,11 @@ AM_CFLAGS = $(VISIBILITY_CFLAGS) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = glesv2.pc -GLES_includedir = $(includedir)/GLES -GLES_include_HEADERS = \ - $(top_srcdir)/include/GLES/egl.h \ - $(top_srcdir)/include/GLES/gl.h \ - $(top_srcdir)/include/GLES/glext.h \ - $(top_srcdir)/include/GLES/glplatform.h +GLES2_includedir = $(includedir)/GLES2 +GLES2_include_HEADERS = \ + $(top_srcdir)/include/GLES2/gl2.h \ + $(top_srcdir)/include/GLES2/gl2ext.h \ + $(top_srcdir)/include/GLES2/gl2platform.h lib_LTLIBRARIES = libGLESv2.la ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): build: Fix GLES linkage with libglapi
Module: Mesa Branch: master Commit: fc9ea7c74dc5cb996c3d9fe6663fd6da080e8360 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fc9ea7c74dc5cb996c3d9fe6663fd6da080e8360 Author: Matt Turner matts...@gmail.com Date: Thu Aug 23 13:48:36 2012 -0700 build: Fix GLES linkage with libglapi Reported-by: Ian Romanick i...@freedesktop.org --- src/mapi/es1api/Makefile.am |2 +- src/mapi/es2api/Makefile.am |2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mapi/es1api/Makefile.am b/src/mapi/es1api/Makefile.am index 5c7258f..c49c86e 100644 --- a/src/mapi/es1api/Makefile.am +++ b/src/mapi/es1api/Makefile.am @@ -41,7 +41,7 @@ GLES_include_HEADERS = \ lib_LTLIBRARIES = libGLESv1_CM.la libGLESv1_CM_la_SOURCES = ../mapi/entry.c glapi_mapi_tmp.h -libGLESv1_CM_la_LIBADD = $(GLESv1_CM_LIB_DEPS) +libGLESv1_CM_la_LIBADD = $(GLESv1_CM_LIB_DEPS) ../shared-glapi/libglapi.la libGLESv1_CM_la_LDFLAGS = -version-number 1:1 -no-undefined include ../glapi/gen/glapi_gen.mk diff --git a/src/mapi/es2api/Makefile.am b/src/mapi/es2api/Makefile.am index edd3c9f..7430780 100644 --- a/src/mapi/es2api/Makefile.am +++ b/src/mapi/es2api/Makefile.am @@ -41,7 +41,7 @@ GLES_include_HEADERS = \ lib_LTLIBRARIES = libGLESv2.la libGLESv2_la_SOURCES = ../mapi/entry.c glapi_mapi_tmp.h -libGLESv2_la_LIBADD = $(GLESv2_LIB_DEPS) +libGLESv2_la_LIBADD = $(GLESv2_LIB_DEPS) ../shared-glapi/libglapi.la libGLESv2_la_LDFLAGS = -version-number 2 -no-undefined include ../glapi/gen/glapi_gen.mk ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/llvm: Make sure to use the Text section in the AsmPrinter
Module: Mesa Branch: master Commit: cb5227b403a9c78a734e5e67657da6c485881cbb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb5227b403a9c78a734e5e67657da6c485881cbb Author: Tom Stellard thomas.stell...@amd.com Date: Thu Aug 23 19:15:39 2012 + radeon/llvm: Make sure to use the Text section in the AsmPrinter --- src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp index 085649d..e751ea5 100644 --- a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp +++ b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp @@ -4,6 +4,7 @@ #include SIMachineFunctionInfo.h #include SIRegisterInfo.h #include llvm/MC/MCStreamer.h +#include llvm/Target/TargetLoweringObjectFile.h #include llvm/Support/TargetRegistry.h using namespace llvm; @@ -29,6 +30,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction MF) { if (STM.device()-getGeneration() AMDGPUDeviceInfo::HD6XXX) { EmitProgramInfo(MF); } + OutStreamer.SwitchSection(getObjFileLowering().getTextSection()); EmitFunctionBody(); return false; } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/llvm: Simplify the convert to ISA pass
Module: Mesa Branch: master Commit: 5a1edb8655aeab17bf0d90e202fb31a1adb53498 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a1edb8655aeab17bf0d90e202fb31a1adb53498 Author: Tom Stellard thomas.stell...@amd.com Date: Thu Aug 23 19:27:48 2012 + radeon/llvm: Simplify the convert to ISA pass --- src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp | 11 +++ src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp| 14 +++--- src/gallium/drivers/radeon/AMDGPUInstrInfo.h |2 +- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp b/src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp index b876a66..fbca0a7 100644 --- a/src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp +++ b/src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp @@ -52,15 +52,10 @@ bool AMDGPUConvertToISAPass::runOnMachineFunction(MachineFunction MF) for (MachineFunction::iterator BB = MF.begin(), BB_E = MF.end(); BB != BB_E; ++BB) { MachineBasicBlock MBB = *BB; -for (MachineBasicBlock::iterator I = MBB.begin(), Next = llvm::next(I); - I != MBB.end(); I = Next, Next = llvm::next(I) ) { +for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end(); + I != E; ++I) { MachineInstr MI = *I; - MachineInstr * newInstr = TII-convertToISA(MI, MF, MBB.findDebugLoc(I)); - if (!newInstr) { -continue; - } - MBB.insert(I, newInstr); - MI.eraseFromParent(); + TII-convertToISA(MI, MF, MBB.findDebugLoc(I)); } } return false; diff --git a/src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp b/src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp index 03a647e..9aae09a 100644 --- a/src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp +++ b/src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp @@ -27,7 +27,7 @@ using namespace llvm; AMDGPUInstrInfo::AMDGPUInstrInfo(TargetMachine tm) - : AMDGPUGenInstrInfo(), RI(tm, *this), TM(tm) { } + : AMDGPUGenInstrInfo(0,0), RI(tm, *this), TM(tm) { } const AMDGPURegisterInfo AMDGPUInstrInfo::getRegisterInfo() const { return RI; @@ -234,17 +234,13 @@ AMDGPUInstrInfo::isSafeToMoveRegClassDefs(const TargetRegisterClass *RC) const { // TODO: Implement this function return true; } - -MachineInstr * AMDGPUInstrInfo::convertToISA(MachineInstr MI, MachineFunction MF, + +void AMDGPUInstrInfo::convertToISA(MachineInstr MI, MachineFunction MF, DebugLoc DL) const { - MachineInstrBuilder newInstr; MachineRegisterInfo MRI = MF.getRegInfo(); const AMDGPURegisterInfo RI = getRegisterInfo(); - // Create the new instruction - newInstr = BuildMI(MF, DL, TM.getInstrInfo()-get(MI.getOpcode())); - for (unsigned i = 0; i MI.getNumOperands(); i++) { MachineOperand MO = MI.getOperand(i); // Convert dst regclass to one that is supported by the ISA @@ -258,9 +254,5 @@ MachineInstr * AMDGPUInstrInfo::convertToISA(MachineInstr MI, MachineFunction MRI.setRegClass(MO.getReg(), newRegClass); } } -// Add the operand to the new instruction -newInstr.addOperand(MO); } - - return newInstr; } diff --git a/src/gallium/drivers/radeon/AMDGPUInstrInfo.h b/src/gallium/drivers/radeon/AMDGPUInstrInfo.h index dd5108e..2643119 100644 --- a/src/gallium/drivers/radeon/AMDGPUInstrInfo.h +++ b/src/gallium/drivers/radeon/AMDGPUInstrInfo.h @@ -138,7 +138,7 @@ public: /// convertToISA - Convert the AMDIL MachineInstr to a supported ISA /// MachineInstr - virtual MachineInstr * convertToISA(MachineInstr MI, MachineFunction MF, + virtual void convertToISA(MachineInstr MI, MachineFunction MF, DebugLoc DL) const; }; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/llvm: Pull changes from external version of the backend
Module: Mesa Branch: master Commit: 228a6641ccddaf24a993f827af1e97379785985a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=228a6641ccddaf24a993f827af1e97379785985a Author: Tom Stellard thomas.stell...@amd.com Date: Thu Aug 23 19:28:50 2012 + radeon/llvm: Pull changes from external version of the backend --- src/gallium/drivers/radeon/AMDGPUISelLowering.h|2 +- src/gallium/drivers/radeon/AMDIL7XXDevice.cpp | 13 - src/gallium/drivers/radeon/AMDIL7XXDevice.h|2 -- src/gallium/drivers/radeon/AMDILDevice.h |7 --- .../drivers/radeon/AMDILEvergreenDevice.cpp| 13 - src/gallium/drivers/radeon/AMDILEvergreenDevice.h |2 -- src/gallium/drivers/radeon/AMDILIntrinsicInfo.cpp |2 +- src/gallium/drivers/radeon/AMDILIntrinsicInfo.h|1 - .../radeon/MCTargetDesc/AMDGPUAsmBackend.cpp |2 +- .../{AMDILMCAsmInfo.cpp = AMDGPUMCAsmInfo.cpp}| 10 +- .../{AMDILMCAsmInfo.h = AMDGPUMCAsmInfo.h}| 12 ++-- ...MDILMCTargetDesc.cpp = AMDGPUMCTargetDesc.cpp} |6 +++--- .../{AMDILMCTargetDesc.h = AMDGPUMCTargetDesc.h} | 10 +- .../radeon/MCTargetDesc/R600MCCodeEmitter.cpp |2 +- .../radeon/MCTargetDesc/SIMCCodeEmitter.cpp|2 +- src/gallium/drivers/radeon/Makefile.sources|6 +++--- src/gallium/drivers/radeon/R600ISelLowering.cpp|8 src/gallium/drivers/radeon/R600RegisterInfo.cpp|2 +- src/gallium/drivers/radeon/SIAssignInterpRegs.cpp |4 ++-- src/gallium/drivers/radeon/SIRegisterInfo.cpp |2 +- .../{AMDILTargetInfo.cpp = AMDGPUTargetInfo.cpp} |6 +++--- 21 files changed, 38 insertions(+), 76 deletions(-) diff --git a/src/gallium/drivers/radeon/AMDGPUISelLowering.h b/src/gallium/drivers/radeon/AMDGPUISelLowering.h index cd2f0c0..4c100da 100644 --- a/src/gallium/drivers/radeon/AMDGPUISelLowering.h +++ b/src/gallium/drivers/radeon/AMDGPUISelLowering.h @@ -31,7 +31,7 @@ protected: /// CreateLiveInRegister - Helper function that adds Reg to the LiveIn list /// of the DAG's MachineFunction. This returns a Register SDNode representing - /// Reg. + /// Reg. SDValue CreateLiveInRegister(SelectionDAG DAG, const TargetRegisterClass *RC, unsigned Reg, EVT VT) const; diff --git a/src/gallium/drivers/radeon/AMDIL7XXDevice.cpp b/src/gallium/drivers/radeon/AMDIL7XXDevice.cpp index 37b7695..8561f0b 100644 --- a/src/gallium/drivers/radeon/AMDIL7XXDevice.cpp +++ b/src/gallium/drivers/radeon/AMDIL7XXDevice.cpp @@ -8,9 +8,6 @@ //==---===// #include AMDIL7XXDevice.h #include AMDGPUSubtarget.h -#ifdef UPSTREAM_LLVM -#include AMDIL7XXAsmPrinter.h -#endif #include AMDILDevice.h using namespace llvm; @@ -92,16 +89,6 @@ uint32_t AMDGPU7XXDevice::getMaxNumUAVs() const return 1; } -AsmPrinter* -AMDGPU7XXDevice::getAsmPrinter(TargetMachine TM, MCStreamer Streamer) const -{ -#ifdef UPSTREAM_LLVM - return new AMDGPU7XXAsmPrinter(TM, Streamer); -#else - return NULL; -#endif -} - AMDGPU770Device::AMDGPU770Device(AMDGPUSubtarget *ST): AMDGPU7XXDevice(ST) { setCaps(); diff --git a/src/gallium/drivers/radeon/AMDIL7XXDevice.h b/src/gallium/drivers/radeon/AMDIL7XXDevice.h index bf3f82c..e848e2e 100644 --- a/src/gallium/drivers/radeon/AMDIL7XXDevice.h +++ b/src/gallium/drivers/radeon/AMDIL7XXDevice.h @@ -38,8 +38,6 @@ public: virtual uint32_t getGeneration() const; virtual uint32_t getResourceID(uint32_t DeviceID) const; virtual uint32_t getMaxNumUAVs() const; - AsmPrinter* -getAsmPrinter(TargetMachine TM, MCStreamer Streamer) const; protected: virtual void setCaps(); diff --git a/src/gallium/drivers/radeon/AMDILDevice.h b/src/gallium/drivers/radeon/AMDILDevice.h index a7528ad..864fa0a 100644 --- a/src/gallium/drivers/radeon/AMDILDevice.h +++ b/src/gallium/drivers/radeon/AMDILDevice.h @@ -21,9 +21,6 @@ namespace llvm { class AMDGPUSubtarget; - class AMDGPUAsmPrinter; - class AMDGPUPointerManager; - class AsmPrinter; class MCStreamer; //===--===// // Interface for data that is specific to a single device @@ -84,10 +81,6 @@ public: // Get the max number of UAV's for this device. virtual uint32_t getMaxNumUAVs() const = 0; - // Interface to get the Asm printer for each device. - virtual AsmPrinter* -getAsmPrinter(TargetMachine TM, MCStreamer Streamer) const = 0; - // API utilizing more detailed capabilities of each family of // cards. If a capability is supported, then either usesHardware or // usesSoftware returned true. If usesHardware returned true, then diff --git a/src/gallium/drivers/radeon/AMDILEvergreenDevice.cpp b/src/gallium/drivers/radeon/AMDILEvergreenDevice.cpp index d5c9148..3532a28 100644 ---
Mesa (master): radeon/llvm: Fix some coding style issues
Module: Mesa Branch: master Commit: 2ad8608cb3e6a8d2f375ad2295504167b082711f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ad8608cb3e6a8d2f375ad2295504167b082711f Author: Tom Stellard thomas.stell...@amd.com Date: Thu Aug 23 21:00:13 2012 + radeon/llvm: Fix some coding style issues --- src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp| 16 src/gallium/drivers/radeon/AMDGPUAsmPrinter.h | 12 ++ src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp | 20 - src/gallium/drivers/radeon/AMDGPUMCInstLower.h | 12 +- src/gallium/drivers/radeon/AMDGPUSubtarget.cpp | 12 ++ .../radeon/MCTargetDesc/AMDGPUMCAsmInfo.cpp| 25 .../radeon/MCTargetDesc/AMDGPUMCTargetDesc.cpp | 13 ++ .../radeon/MCTargetDesc/R600MCCodeEmitter.cpp | 12 -- .../radeon/MCTargetDesc/SIMCCodeEmitter.cpp|5 -- .../drivers/radeon/R600ExpandSpecialInstrs.cpp |2 +- src/gallium/drivers/radeon/R600ISelLowering.cpp| 12 +++--- src/gallium/drivers/radeon/R600InstrInfo.cpp | 40 ++-- src/gallium/drivers/radeon/R600InstrInfo.h | 20 + .../drivers/radeon/R600KernelParameters.cpp| 16 14 files changed, 135 insertions(+), 82 deletions(-) diff --git a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp index e751ea5..1f36105 100644 --- a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp +++ b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.cpp @@ -1,3 +1,19 @@ +//===-- AMDGPUAsmPrinter.cpp - AMDGPU Assebly printer ===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===--===// +// +// The AMDGPUAsmPrinter is used to print both assembly string and also binary +// code. When passed an MCAsmStreamer it prints assembly and when passed +// an MCObjectStreamer it outputs binary code. +// +//===--===// +// + #include AMDGPUAsmPrinter.h #include AMDGPU.h diff --git a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.h b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.h index 7d2b294..b35d2e9 100644 --- a/src/gallium/drivers/radeon/AMDGPUAsmPrinter.h +++ b/src/gallium/drivers/radeon/AMDGPUAsmPrinter.h @@ -1,3 +1,15 @@ +//===-- AMDGPUAsmPrinter.h - Print AMDGPU assembly code ---===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===--===// +// +// AMDGPU Assembly printer class. +// +//===--===// #ifndef AMDGPU_ASMPRINTER_H #define AMDGPU_ASMPRINTER_H diff --git a/src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp b/src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp index 65738c2..f3d80a3 100644 --- a/src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp +++ b/src/gallium/drivers/radeon/AMDGPUMCInstLower.cpp @@ -1,3 +1,17 @@ +//===- AMDGPUMCInstLower.cpp - Lower AMDGPU MachineInstr to an MCInst -===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===--===// +// +// This file contains code to lower AMDGPU MachineInstrs to their corresponding +// MCInst. +// +//===--===// +// #include AMDGPUMCInstLower.h #include AMDGPUAsmPrinter.h @@ -13,7 +27,7 @@ using namespace llvm; AMDGPUMCInstLower::AMDGPUMCInstLower() { } -void AMDGPUMCInstLower::Lower(const MachineInstr *MI, MCInst OutMI) const { +void AMDGPUMCInstLower::lower(const MachineInstr *MI, MCInst OutMI) const { OutMI.setOpcode(MI-getOpcode()); for (unsigned i = 0, e = MI-getNumExplicitOperands(); i != e; ++i) { @@ -56,13 +70,13 @@ void AMDGPUAsmPrinter::EmitInstruction(const MachineInstr *MI) { while (I != MBB-end() I-isInsideBundle()) { MCInst MCBundleInst; const MachineInstr *BundledInst = I; - MCInstLowering.Lower(BundledInst, MCBundleInst); + MCInstLowering.lower(BundledInst, MCBundleInst); OutStreamer.EmitInstruction(MCBundleInst); ++I; } } else { MCInst TmpInst; -MCInstLowering.Lower(MI, TmpInst); +MCInstLowering.lower(MI, TmpInst); OutStreamer.EmitInstruction(TmpInst); } } diff --git a/src/gallium/drivers/radeon/AMDGPUMCInstLower.h b/src/gallium/drivers/radeon/AMDGPUMCInstLower.h index 2ea5b02..3f68ff0 100644 ---
Mesa (master): radeon/llvm: Use correct instruction for moving immediates
Module: Mesa Branch: master Commit: 1bd7b29a661a336dbc96c160197c739657991ef3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1bd7b29a661a336dbc96c160197c739657991ef3 Author: Tom Stellard thomas.stell...@amd.com Date: Thu Aug 23 21:22:48 2012 + radeon/llvm: Use correct instruction for moving immediates This should fix an assertion failure that was happening in some compute shaders. --- src/gallium/drivers/radeon/R600ISelLowering.cpp |3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/gallium/drivers/radeon/R600ISelLowering.cpp b/src/gallium/drivers/radeon/R600ISelLowering.cpp index afa80c5..376ac70 100644 --- a/src/gallium/drivers/radeon/R600ISelLowering.cpp +++ b/src/gallium/drivers/radeon/R600ISelLowering.cpp @@ -125,7 +125,8 @@ MachineBasicBlock * R600TargetLowering::EmitInstrWithCustomInserter( // XXX In theory, we should be able to pass ShiftValue directly to // the LSHR_eg instruction as an inline literal, but I tried doing it // this way and it didn't produce the correct results. - BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::MOV), ShiftValue) + BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(AMDGPU::MOV_IMM_I32), + ShiftValue) .addReg(AMDGPU::ALU_LITERAL_X) .addReg(AMDGPU::PRED_SEL_OFF) .addImm(2); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon/llvm: Set End of Program bit on RAT instructions
Module: Mesa Branch: master Commit: 1434a86f50e4ffc69316c7e948ebfe56a25d31da URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1434a86f50e4ffc69316c7e948ebfe56a25d31da Author: Tom Stellard thomas.stell...@amd.com Date: Thu Aug 23 21:51:48 2012 + radeon/llvm: Set End of Program bit on RAT instructions This code was accidently dropped during the MCCodeEmitter conversion. --- .../radeon/MCTargetDesc/R600MCCodeEmitter.cpp |2 -- src/gallium/drivers/radeon/R600ISelLowering.cpp|4 +++- src/gallium/drivers/radeon/R600Instructions.td | 18 +++--- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/gallium/drivers/radeon/MCTargetDesc/R600MCCodeEmitter.cpp b/src/gallium/drivers/radeon/MCTargetDesc/R600MCCodeEmitter.cpp index 29f1291..34c4b39 100644 --- a/src/gallium/drivers/radeon/MCTargetDesc/R600MCCodeEmitter.cpp +++ b/src/gallium/drivers/radeon/MCTargetDesc/R600MCCodeEmitter.cpp @@ -162,8 +162,6 @@ void R600MCCodeEmitter::EncodeInstruction(const MCInst MI, raw_ostream OS, case AMDGPU::RAT_WRITE_CACHELESS_eg: { uint64_t inst = getBinaryCodeForInstr(MI, Fixups); -// XXX: Set End Of Program bit when necessary -// inst |= (((uint64_t)1) 53); EmitByte(INSTR_NATIVE, OS); Emit(inst, OS); break; diff --git a/src/gallium/drivers/radeon/R600ISelLowering.cpp b/src/gallium/drivers/radeon/R600ISelLowering.cpp index 376ac70..fec9d4e 100644 --- a/src/gallium/drivers/radeon/R600ISelLowering.cpp +++ b/src/gallium/drivers/radeon/R600ISelLowering.cpp @@ -121,6 +121,7 @@ MachineBasicBlock * R600TargetLowering::EmitInstrWithCustomInserter( AMDGPU::R600_TReg32_XRegClass); unsigned ShiftValue = MRI.createVirtualRegister( AMDGPU::R600_TReg32RegClass); + unsigned EOP = (llvm::next(I)-getOpcode() == AMDGPU::RETURN) ? 1 : 0; // XXX In theory, we should be able to pass ShiftValue directly to // the LSHR_eg instruction as an inline literal, but I tried doing it @@ -136,7 +137,8 @@ MachineBasicBlock * R600TargetLowering::EmitInstrWithCustomInserter( .addReg(AMDGPU::PRED_SEL_OFF); BuildMI(*BB, I, BB-findDebugLoc(I), TII-get(MI-getOpcode())) .addOperand(MI-getOperand(0)) - .addReg(NewAddr); + .addReg(NewAddr) + .addImm(EOP); // Set End of program bit break; } diff --git a/src/gallium/drivers/radeon/R600Instructions.td b/src/gallium/drivers/radeon/R600Instructions.td index 84f839e..00c57e6 100644 --- a/src/gallium/drivers/radeon/R600Instructions.td +++ b/src/gallium/drivers/radeon/R600Instructions.td @@ -175,7 +175,7 @@ class EG_CF_RAT bits 8 cf_inst, bits 6 rat_inst, bits4 rat_id, dag outs, bits4 COMP_MASK; bits4 BURST_COUNT; bits1 VPM; - bits1 EOP; + bits1 eop; bits1 MARK; bits1 BARRIER; @@ -195,7 +195,7 @@ class EG_CF_RAT bits 8 cf_inst, bits 6 rat_inst, bits4 rat_id, dag outs, let Inst{47-44} = COMP_MASK; let Inst{51-48} = BURST_COUNT; let Inst{52}= VPM; - let Inst{53}= EOP; + let Inst{53}= eop; let Inst{61-54} = cf_inst; let Inst{62}= MARK; let Inst{63}= BARRIER; @@ -921,9 +921,9 @@ let Predicates = [isEGorCayman] in { let usesCustomInserter = 1 in { def RAT_WRITE_CACHELESS_eg : EG_CF_RAT 0x57, 0x2, 0, (outs), - (ins R600_TReg32_X:$rw_gpr, R600_TReg32_X:$index_gpr), - RAT_WRITE_CACHELESS_eg $rw_gpr, $index_gpr, - [(global_store (i32 R600_TReg32_X:$rw_gpr), R600_TReg32_X:$index_gpr)] + (ins R600_TReg32_X:$rw_gpr, R600_TReg32_X:$index_gpr, i32imm:$eop), + RAT_WRITE_CACHELESS_eg $rw_gpr, $index_gpr, $eop, + [] { let RIM = 0; /* XXX: Have a separate instruction for non-indexed writes. */ @@ -935,17 +935,21 @@ def RAT_WRITE_CACHELESS_eg : EG_CF_RAT 0x57, 0x2, 0, (outs), let COMP_MASK = 1; let BURST_COUNT = 0; let VPM = 0; - let EOP = 0; let MARK= 0; let BARRIER = 1; } } // End usesCustomInserter = 1 +// i32 global_store +def : Pat + (global_store (i32 R600_TReg32_X:$val), R600_TReg32_X:$ptr), + (RAT_WRITE_CACHELESS_eg R600_TReg32_X:$val, R600_TReg32_X:$ptr, 0) +; // Floating point global_store def : Pat (global_store (f32 R600_TReg32_X:$val), R600_TReg32_X:$ptr), - (RAT_WRITE_CACHELESS_eg R600_TReg32_X:$val, R600_TReg32_X:$ptr) + (RAT_WRITE_CACHELESS_eg R600_TReg32_X:$val, R600_TReg32_X:$ptr, 0) ; class VTX_READ_eg bits8 buffer_id, dag outs, listdag pattern ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit