change the name of the shaders to reflect what they do.
remove stale code and do some general cleanups.
This commit is contained in:
@@ -172,7 +172,7 @@ void draw_vertex_shader_queue_flush_llvm(struct draw_context *draw)
|
||||
/* Remaining attributes are packed into sequential post-transform
|
||||
* vertex attrib slots.
|
||||
*/
|
||||
for (slot = 1; slot < draw->vs_num_outputs; slot++) {
|
||||
for (slot = 1; slot < draw->num_vs_outputs; slot++) {
|
||||
vOut->data[slot][0] = dests[slot][0];
|
||||
vOut->data[slot][1] = dests[slot][1];
|
||||
vOut->data[slot][2] = dests[slot][2];
|
||||
|
||||
@@ -61,7 +61,7 @@ gallivm_builtins.cpp: llvm_builtins.c
|
||||
clang --emit-llvm $< |llvm-as|opt -std-compile-opts|llvm2cpp -gen-contents -o=$@ -f -for=shader -funcname=createGallivmBuiltins
|
||||
|
||||
llvm_base_shader.cpp: llvm_entry.c
|
||||
clang --emit-llvm $< |llvm-as |opt -std-compile-opts |llvm2cpp -for=Shader -gen-module -o=$@ -funcname=createBaseShader
|
||||
clang --emit-llvm $< |llvm-as |opt -std-compile-opts |llvm2cpp -for=Shader -gen-module -o=$@ -f -funcname=createBaseShader
|
||||
|
||||
# Emacs tags
|
||||
tags:
|
||||
|
||||
@@ -733,7 +733,11 @@ tgsi_to_llvm(struct gallivm_prog *prog, const struct tgsi_token *tokens)
|
||||
unsigned instno = 0;
|
||||
Function* shader = mod->getFunction("execute_shader");
|
||||
std::ostringstream stream;
|
||||
stream << "execute_shader";
|
||||
if (prog->type == GALLIVM_VS) {
|
||||
stream << "vs_shader";
|
||||
} else {
|
||||
stream << "fs_shader";
|
||||
}
|
||||
stream << prog->id;
|
||||
std::string func_name = stream.str();
|
||||
shader->setName(func_name.c_str());
|
||||
@@ -799,6 +803,7 @@ gallivm_from_tgsi(const struct tgsi_token *tokens, enum gallivm_shader_type type
|
||||
struct gallivm_prog *gallivm =
|
||||
(struct gallivm_prog *)calloc(1, sizeof(struct gallivm_prog));
|
||||
gallivm->id = GLOBAL_ID;
|
||||
gallivm->type = type;
|
||||
tgsi_dump(tokens, 0);
|
||||
|
||||
llvm::Module *mod = tgsi_to_llvm(gallivm, tokens);
|
||||
@@ -812,7 +817,6 @@ gallivm_from_tgsi(const struct tgsi_token *tokens, enum gallivm_shader_type type
|
||||
passes.run(*mod);
|
||||
|
||||
gallivm->module = mod;
|
||||
gallivm->type = type;
|
||||
|
||||
gallivm_prog_dump(gallivm, 0);
|
||||
|
||||
@@ -966,7 +970,8 @@ void gallivm_prog_dump(struct gallivm_prog *prog, const char *file_prefix)
|
||||
const llvm::Function &func = (*itr);
|
||||
std::string name = func.getName();
|
||||
const llvm::Function *found = 0;
|
||||
if (name.find("execute_shader") != std::string::npos ||
|
||||
if (name.find("vs_shader") != std::string::npos ||
|
||||
name.find("fs_shader") != std::string::npos ||
|
||||
name.find("function") != std::string::npos)
|
||||
found = &func;
|
||||
if (found) {
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
* Zack Rusin zack@tungstengraphics.com
|
||||
*/
|
||||
|
||||
#ifndef LLVMTGSI_H
|
||||
#define LLVMTGSI_H
|
||||
#ifndef GALLIVM_H
|
||||
#define GALLIVM_H
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -34,95 +34,6 @@
|
||||
/* clang --emit-llvm llvm_builtins.c |llvm-as |opt -std-compile-opts |llvm-dis */
|
||||
typedef __attribute__(( ocu_vector_type(4) )) float float4;
|
||||
|
||||
#if 0
|
||||
//clang doesn't suppoer "struct->member" notation yet
|
||||
struct vertex_header {
|
||||
unsigned clipmask:12;
|
||||
unsigned edgeflag:1;
|
||||
unsigned pad:3;
|
||||
unsigned vertex_id:16;
|
||||
|
||||
float clip[4];
|
||||
|
||||
float data[][4];
|
||||
};
|
||||
|
||||
inline float
|
||||
dot4(float4 a, float4 b)
|
||||
{
|
||||
float4 c = a*b;
|
||||
return c.x + c.y + c.z + c.w;
|
||||
}
|
||||
|
||||
inline unsigned
|
||||
compute_clipmask(float4 clip, float4 (*plane), unsigned nr)
|
||||
{
|
||||
unsigned mask = 0;
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < nr; i++) {
|
||||
if (dot4(clip, plane[i]) < 0)
|
||||
mask |= (1<<i);
|
||||
}
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
|
||||
inline void collect_results(float4 *results, struct vertex_header *vOut,
|
||||
float4 *planes, int nr_planes,
|
||||
float4 scale, float4 trans,
|
||||
int num_attribs)
|
||||
{
|
||||
/* store results */
|
||||
unsigned slot;
|
||||
float x, y, z, w;
|
||||
/* Handle attr[0] (position) specially:
|
||||
*/
|
||||
float4 res0 = results[0];
|
||||
float *clip = vOut->clip;
|
||||
x = clip[0] = res0.x;
|
||||
y = clip[1] = res0.y;
|
||||
z = clip[2] = res0.z;
|
||||
w = clip[3] = res0.w;
|
||||
vOut->clipmask = compute_clipmask(res0, planes, nr_planes);
|
||||
vOut->edgeflag = 1;
|
||||
|
||||
/* divide by w */
|
||||
w = 1.0f / w;
|
||||
x *= w;
|
||||
y *= w;
|
||||
z *= w;
|
||||
res0.x = x; res0.y = y; res0.z = z; res0.w = 1;
|
||||
|
||||
/* Viewport mapping */
|
||||
res0 = res0 * scale + trans;
|
||||
vOut->data[0][0] = res0.x;
|
||||
vOut->data[0][1] = res0.y;
|
||||
vOut->data[0][2] = res0.z;
|
||||
vOut->data[0][3] = w;
|
||||
|
||||
/* Remaining attributes are packed into sequential post-transform
|
||||
* vertex attrib slots.
|
||||
* Skip 0 since we just did it above.
|
||||
* Subtract two because of the VERTEX_HEADER, CLIP_POS attribs.
|
||||
*/
|
||||
for (slot = 1; slot < num_attribs - 2; slot++) {
|
||||
float4 vec = results[slot];
|
||||
vOut->data[slot][0] = vec.x;
|
||||
vOut->data[slot][1] = vec.y;
|
||||
vOut->data[slot][2] = vec.z;
|
||||
vOut->data[slot][3] = vec.w;
|
||||
|
||||
printf("output %d: %f %f %f %f\n", slot,
|
||||
vOut->data[slot][0],
|
||||
vOut->data[slot][1],
|
||||
vOut->data[slot][2],
|
||||
vOut->data[slot][3]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void from_array(float4 (*res)[16], float (*ainputs)[16][4],
|
||||
int count, int num_attribs)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user