From 94f65d095a1365b69a041302b473e40c6ccae3c3 Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Tue, 28 Sep 2010 17:49:25 +0100 Subject: draw: cliptest and viewport done in a single loop in vertex shader Cliptesting now done at the end of vs in draw_llvm instead of draw_pt_post_vs. Added viewport mapping transformation and further cliptesting to vertex shader in draw_llvm.c Alternative path where vertex header setup, clip coordinates store, cliptesting and viewport mapping are done earlier in the vertex shader. Still need to hook this up properly according to the return value of "draw_llvm_shader" function. --- src/gallium/auxiliary/draw/draw_llvm.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/gallium/auxiliary/draw/draw_llvm.h') diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index b881ef6..1142ea5 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -120,7 +120,7 @@ struct draw_jit_context lp_build_struct_get_ptr(_builder, _ptr, 0, "id") #define draw_jit_header_clip(_builder, _ptr) \ - lp_build_struct_get(_builder, _ptr, 1, "clip") + lp_build_struct_get_ptr(_builder, _ptr, 1, "clip") #define draw_jit_header_data(_builder, _ptr) \ lp_build_struct_get_ptr(_builder, _ptr, 2, "data") @@ -136,7 +136,7 @@ struct draw_jit_context lp_build_struct_get(_builder, _ptr, 2, "buffer_offset") -typedef void +typedef int (*draw_jit_vert_func)(struct draw_jit_context *context, struct vertex_header *io, const char *vbuffers[PIPE_MAX_ATTRIBS], @@ -147,7 +147,7 @@ typedef void unsigned instance_id); -typedef void +typedef int (*draw_jit_vert_func_elts)(struct draw_jit_context *context, struct vertex_header *io, const char *vbuffers[PIPE_MAX_ATTRIBS], -- cgit v1.1 From 3744d1c7d30543520cede8a6c580f26985978953 Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Tue, 28 Sep 2010 17:52:14 +0100 Subject: draw: added viewport and cliptest flags Corrections in store_clip to store clip coordinates in AoS form. Viewport & cliptest flag options based on variant key. Put back draw_pt_post_vs and now 2 paths based on whether clipping occurs or not. --- src/gallium/auxiliary/draw/draw_llvm.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/gallium/auxiliary/draw/draw_llvm.h') diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index 1142ea5..8ff3669 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -160,7 +160,11 @@ typedef int struct draw_llvm_variant_key { unsigned nr_vertex_elements:16; - unsigned nr_samplers:16; + unsigned nr_samplers:12; + unsigned disable_cliptest:1; + unsigned disable_viewport:1; + unsigned disable_zclipping:1; + unsigned enable_d3dclipping:1; /* Variable number of vertex elements: */ -- cgit v1.1 From 25bb05fef075a87ec6e5f2a989049faff2afedd2 Mon Sep 17 00:00:00 2001 From: delphi Date: Mon, 4 Oct 2010 17:08:33 +0100 Subject: draw: added userclip planes and updated variant_key --- src/gallium/auxiliary/draw/draw_llvm.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/gallium/auxiliary/draw/draw_llvm.h') diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index 8ff3669..4a4d93f 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -161,10 +161,12 @@ struct draw_llvm_variant_key { unsigned nr_vertex_elements:16; unsigned nr_samplers:12; - unsigned disable_cliptest:1; - unsigned disable_viewport:1; - unsigned disable_zclipping:1; + unsigned clip_xy:1; + unsigned clip_z:1; + unsigned clip_user:1; + unsigned bypass_viewport:1; unsigned enable_d3dclipping:1; + unsigned need_edgeflags:1; /* Variable number of vertex elements: */ -- cgit v1.1 From 08f890d4c3b8376d1840f90474f7c56329432d95 Mon Sep 17 00:00:00 2001 From: delphi Date: Sun, 10 Oct 2010 00:31:16 +0100 Subject: draw: some changes to allow for runtime changes to userclip planes --- src/gallium/auxiliary/draw/draw_llvm.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/gallium/auxiliary/draw/draw_llvm.h') diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index 4a4d93f..fc78854 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -97,7 +97,7 @@ struct draw_jit_context { const float *vs_constants; const float *gs_constants; - + float (*planes) [12][4]; struct draw_jit_texture textures[PIPE_MAX_VERTEX_SAMPLERS]; }; @@ -109,13 +109,14 @@ struct draw_jit_context #define draw_jit_context_gs_constants(_builder, _ptr) \ lp_build_struct_get(_builder, _ptr, 1, "gs_constants") -#define DRAW_JIT_CTX_TEXTURES 2 +#define draw_jit_context_planes(_builder, _ptr) \ + lp_build_struct_get(_builder, _ptr, 2, "planes") + +#define DRAW_JIT_CTX_TEXTURES 3 #define draw_jit_context_textures(_builder, _ptr) \ lp_build_struct_get_ptr(_builder, _ptr, DRAW_JIT_CTX_TEXTURES, "textures") - - #define draw_jit_header_id(_builder, _ptr) \ lp_build_struct_get_ptr(_builder, _ptr, 0, "id") @@ -167,6 +168,7 @@ struct draw_llvm_variant_key unsigned bypass_viewport:1; unsigned enable_d3dclipping:1; unsigned need_edgeflags:1; + unsigned nr_planes; /* Variable number of vertex elements: */ -- cgit v1.1 From 26ff7523b69ddb377ade29296d20abfc46e69489 Mon Sep 17 00:00:00 2001 From: Hui Qi Tay Date: Thu, 14 Oct 2010 14:04:39 +0100 Subject: draw: sanitize llvm variant key Fixes recompilation, but seems to be broken with llvm 2.8. --- src/gallium/auxiliary/draw/draw_llvm.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/gallium/auxiliary/draw/draw_llvm.h') diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index fc78854..def0681 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -168,7 +168,8 @@ struct draw_llvm_variant_key unsigned bypass_viewport:1; unsigned enable_d3dclipping:1; unsigned need_edgeflags:1; - unsigned nr_planes; + unsigned nr_planes:4; + unsigned pad:26; /* Variable number of vertex elements: */ -- cgit v1.1 From b5236f3da482665567a9d53264e6203092120c31 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Sun, 17 Oct 2010 17:53:29 -0700 Subject: llvmpipe: clean up fields in draw_llvm_variant_key --- src/gallium/auxiliary/draw/draw_llvm.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/gallium/auxiliary/draw/draw_llvm.h') diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index def0681..b5b8c66 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -160,16 +160,16 @@ typedef int struct draw_llvm_variant_key { - unsigned nr_vertex_elements:16; - unsigned nr_samplers:12; + unsigned nr_vertex_elements:8; + unsigned nr_samplers:8; unsigned clip_xy:1; unsigned clip_z:1; unsigned clip_user:1; + unsigned clip_halfz:1; unsigned bypass_viewport:1; - unsigned enable_d3dclipping:1; unsigned need_edgeflags:1; unsigned nr_planes:4; - unsigned pad:26; + unsigned pad:6; /* Variable number of vertex elements: */ -- cgit v1.1