Mesa (master): radeon/llvm: Encapsulate setting of MachineOperand flags

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Brian Paul
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

2012-08-23 Thread Vadim Girlin
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

2012-08-23 Thread Vadim Girlin
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

2012-08-23 Thread Matt Turner
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

2012-08-23 Thread Matt Turner
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

2012-08-23 Thread Matt Turner
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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.

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Ian Romanick
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

2012-08-23 Thread Stephane Marchesin
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

2012-08-23 Thread Anuj Phogat
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

2012-08-23 Thread Matt Turner
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

2012-08-23 Thread Matt Turner
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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

2012-08-23 Thread Tom Stellard
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