summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2007-10-25 07:52:59 -0400
committerZack Rusin <zack@tungstengraphics.com>2007-10-25 09:04:41 -0400
commit1d26e9c447fd9746b2219edbf65b1991521bcfe7 (patch)
treeb590bb2bbbe9ce240c55981a9ed559d407cc4055
parente842b5e5ba738cd214137cca95c6da64492f9f92 (diff)
Fix nested conditionals
-rw-r--r--progs/vpglsl/nestedifs.glsl13
-rw-r--r--progs/vpglsl/nestedswizzle.glsl9
-rw-r--r--progs/vpglsl/vp-tris.c2
-rw-r--r--src/mesa/pipe/llvm/storage.cpp9
-rw-r--r--src/mesa/pipe/llvm/storage.h5
5 files changed, 25 insertions, 13 deletions
diff --git a/progs/vpglsl/nestedifs.glsl b/progs/vpglsl/nestedifs.glsl
new file mode 100644
index 0000000000..abb235cd65
--- /dev/null
+++ b/progs/vpglsl/nestedifs.glsl
@@ -0,0 +1,13 @@
+
+void main() {
+ gl_Position = gl_Vertex;
+ if (gl_Position.x < 0.5) {
+ if (gl_Position.y < 0.20) {
+ gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0);
+ } else {
+ gl_FrontColor = vec4(0.0, 1.0, 0.0, 1.0);
+ }
+ gl_FrontColor.y = 1.0;
+ } else
+ gl_FrontColor = gl_Color;
+}
diff --git a/progs/vpglsl/nestedswizzle.glsl b/progs/vpglsl/nestedswizzle.glsl
new file mode 100644
index 0000000000..a3adb3dfeb
--- /dev/null
+++ b/progs/vpglsl/nestedswizzle.glsl
@@ -0,0 +1,9 @@
+
+void main() {
+ gl_Position = gl_Vertex;
+ gl_FrontColor = gl_Color;
+ if (gl_Position.x < 0.5) {
+ gl_FrontColor.y = 1.0;
+ }
+ gl_FrontColor.xzw = vec3(0, 0, 1);
+}
diff --git a/progs/vpglsl/vp-tris.c b/progs/vpglsl/vp-tris.c
index 1d1b639b56..3c2830773a 100644
--- a/progs/vpglsl/vp-tris.c
+++ b/progs/vpglsl/vp-tris.c
@@ -54,7 +54,7 @@ static void read_shader(GLuint shader, const char *filename)
}
n = fread(buffer, 1, max, f);
- printf("fslight: read %d bytes from shader file %s\n", n, filename);
+ printf("vp-tris: read %d bytes from shader file %s\n", n, filename);
if (n > 0) {
buffer[n] = 0;
load_and_compile_shader(shader, buffer);
diff --git a/src/mesa/pipe/llvm/storage.cpp b/src/mesa/pipe/llvm/storage.cpp
index 603053c0e8..1072917198 100644
--- a/src/mesa/pipe/llvm/storage.cpp
+++ b/src/mesa/pipe/llvm/storage.cpp
@@ -123,9 +123,6 @@ llvm::ConstantInt *Storage::constantInt(int idx)
llvm::Value *Storage::inputElement(int idx, llvm::Value *indIdx)
{
- if (!indIdx && m_inputs.find(idx) != m_inputs.end()) {
- return m_inputs[idx];
- }
GetElementPtrInst *getElem = 0;
if (indIdx) {
@@ -147,7 +144,6 @@ llvm::Value *Storage::inputElement(int idx, llvm::Value *indIdx)
LoadInst *load = new LoadInst(getElem, name("input"),
false, m_block);
load->setAlignment(8);
- m_inputs[idx] = load;
return load;
}
@@ -155,9 +151,6 @@ llvm::Value *Storage::inputElement(int idx, llvm::Value *indIdx)
llvm::Value *Storage::constElement(int idx, llvm::Value *indIdx)
{
m_numConsts = ((idx + 1) > m_numConsts) ? (idx + 1) : m_numConsts;
- if (!indIdx && m_consts.find(idx) != m_consts.end()) {
- return m_consts[idx];
- }
GetElementPtrInst *getElem = 0;
@@ -178,7 +171,6 @@ llvm::Value *Storage::constElement(int idx, llvm::Value *indIdx)
LoadInst *load = new LoadInst(getElem, name("const"),
false, m_block);
load->setAlignment(8);
- m_consts[idx] = load;
return load;
}
@@ -334,7 +326,6 @@ llvm::Value * Storage::outputElement(int idx, llvm::Value *indIdx )
LoadInst *load = new LoadInst(getElem, name("output"),
false, m_block);
load->setAlignment(8);
- m_inputs[idx] = load;
return load;
}
diff --git a/src/mesa/pipe/llvm/storage.h b/src/mesa/pipe/llvm/storage.h
index dd5de35073..a844d1c30f 100644
--- a/src/mesa/pipe/llvm/storage.h
+++ b/src/mesa/pipe/llvm/storage.h
@@ -47,7 +47,6 @@ namespace llvm {
class Storage
{
- typedef std::map<int, llvm::LoadInst*> LoadMap;
public:
Storage(llvm::BasicBlock *block,
llvm::Value *out,
@@ -75,9 +74,11 @@ public:
void store(int dstIdx, llvm::Value *val, int mask);
int numConsts() const;
+
private:
llvm::Value *maskWrite(llvm::Value *src, int mask, llvm::Value *templ);
const char *name(const char *prefix);
+
private:
llvm::BasicBlock *m_block;
llvm::Value *m_OUT;
@@ -89,8 +90,6 @@ private:
std::vector<llvm::Value*> m_temps;
std::vector<llvm::Value*> m_addrs;
std::vector<llvm::Value*> m_dstCache;
- LoadMap m_inputs;
- LoadMap m_consts;
llvm::VectorType *m_floatVecType;
llvm::VectorType *m_intVecType;