diff options
author | Jason Ekstrand <[email protected]> | 2017-03-18 11:23:39 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-05-26 07:58:01 -0700 |
commit | 9fb8a8775bf2b122811fdbe2389435dfeafa1fa0 (patch) | |
tree | cb53bff15bebdabd027282dd188b8ba589c179db | |
parent | c30587643e34a1f7586adf961e4340bbce90b969 (diff) |
i965: Move SF compilation to the compiler
Reviewed-by: Topi Pohjolainen <[email protected]>
-rw-r--r-- | src/intel/Makefile.sources | 1 | ||||
-rw-r--r-- | src/intel/compiler/brw_compile_sf.c (renamed from src/mesa/drivers/dri/i965/brw_sf_emit.c) | 185 | ||||
-rw-r--r-- | src/intel/compiler/brw_compiler.h | 50 | ||||
-rw-r--r-- | src/intel/compiler/brw_eu_defines.h | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/Makefile.sources | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 14 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_defines.h | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_sf.c | 87 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_sf.h | 111 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_sf_state.c | 1 |
10 files changed, 209 insertions, 246 deletions
diff --git a/src/intel/Makefile.sources b/src/intel/Makefile.sources index 83200c3d7d8..a9520f412ed 100644 --- a/src/intel/Makefile.sources +++ b/src/intel/Makefile.sources @@ -23,6 +23,7 @@ DECODER_FILES = \ COMPILER_FILES = \ compiler/brw_cfg.cpp \ compiler/brw_cfg.h \ + compiler/brw_compile_sf.c \ compiler/brw_compiler.c \ compiler/brw_compiler.h \ compiler/brw_dead_control_flow.cpp \ diff --git a/src/mesa/drivers/dri/i965/brw_sf_emit.c b/src/intel/compiler/brw_compile_sf.c index dc905034a62..91e8a6da6cf 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_emit.c +++ b/src/intel/compiler/brw_compile_sf.c @@ -1,45 +1,73 @@ /* - Copyright (C) Intel Corp. 2006. All Rights Reserved. - Intel funded Tungsten Graphics to - develop this 3D driver. + * Copyright © 2006 - 2017 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. + */ - 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: +#include "brw_compiler.h" +#include "brw_eu.h" - The above copyright notice and this permission notice (including the - next paragraph) shall be included in all copies or substantial - portions of the Software. +#include "common/gen_debug.h" - 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. +struct brw_sf_compile { + struct brw_codegen func; + struct brw_sf_prog_key key; + struct brw_sf_prog_data prog_data; - **********************************************************************/ - /* - * Authors: - * Keith Whitwell <[email protected]> - */ + struct brw_reg pv; + struct brw_reg det; + struct brw_reg dx0; + struct brw_reg dx2; + struct brw_reg dy0; + struct brw_reg dy2; + /* z and 1/w passed in seperately: + */ + struct brw_reg z[3]; + struct brw_reg inv_w[3]; -#include "main/macros.h" -#include "main/enums.h" + /* The vertices: + */ + struct brw_reg vert[3]; -#include "intel_batchbuffer.h" + /* Temporaries, allocated after last vertex reg. + */ + struct brw_reg inv_det; + struct brw_reg a1_sub_a0; + struct brw_reg a2_sub_a0; + struct brw_reg tmp; -#include "brw_defines.h" -#include "brw_context.h" -#include "brw_util.h" -#include "brw_sf.h" + struct brw_reg m1Cx; + struct brw_reg m2Cy; + struct brw_reg m3C0; + GLuint nr_verts; + GLuint nr_attr_regs; + GLuint nr_setup_regs; + int urb_entry_read_offset; + + /** The last known value of the f0.0 flag register. */ + unsigned flag_value; + + struct brw_vue_map vue_map; +}; /** * Determine the vue slot corresponding to the given half of the given register. @@ -119,7 +147,7 @@ static void do_twoside_color( struct brw_sf_compile *c ) /* Already done in clip program: */ - if (c->key.primitive == SF_UNFILLED_TRIS) + if (c->key.primitive == BRW_SF_PRIM_UNFILLED_TRIS) return; /* If the vertex shader provides backface color, do the selection. The VS @@ -195,7 +223,7 @@ static void do_flatshade_triangle( struct brw_sf_compile *c ) /* Already done in clip program: */ - if (c->key.primitive == SF_UNFILLED_TRIS) + if (c->key.primitive == BRW_SF_PRIM_UNFILLED_TRIS) return; if (p->devinfo->gen == 5) @@ -227,7 +255,7 @@ static void do_flatshade_line( struct brw_sf_compile *c ) /* Already done in clip program: */ - if (c->key.primitive == SF_UNFILLED_TRIS) + if (c->key.primitive == BRW_SF_PRIM_UNFILLED_TRIS) return; if (p->devinfo->gen == 5) @@ -410,7 +438,7 @@ set_predicate_control_flag_value(struct brw_codegen *p, } } -void brw_emit_tri_setup(struct brw_sf_compile *c, bool allocate) +static void brw_emit_tri_setup(struct brw_sf_compile *c, bool allocate) { struct brw_codegen *p = &c->func; GLuint i; @@ -499,7 +527,7 @@ void brw_emit_tri_setup(struct brw_sf_compile *c, bool allocate) -void brw_emit_line_setup(struct brw_sf_compile *c, bool allocate) +static void brw_emit_line_setup(struct brw_sf_compile *c, bool allocate) { struct brw_codegen *p = &c->func; GLuint i; @@ -539,7 +567,7 @@ void brw_emit_line_setup(struct brw_sf_compile *c, bool allocate) brw_ADD(p, c->a1_sub_a0, a1, negate(a0)); - brw_MUL(p, c->tmp, c->a1_sub_a0, c->dx0); + brw_MUL(p, c->tmp, c->a1_sub_a0, c->dx0); brw_MUL(p, c->m1Cx, c->tmp, c->inv_det); brw_MUL(p, c->tmp, c->a1_sub_a0, c->dy0); @@ -571,7 +599,7 @@ void brw_emit_line_setup(struct brw_sf_compile *c, bool allocate) brw_set_default_predicate_control(p, BRW_PREDICATE_NONE); } -void brw_emit_point_sprite_setup(struct brw_sf_compile *c, bool allocate) +static void brw_emit_point_sprite_setup(struct brw_sf_compile *c, bool allocate) { struct brw_codegen *p = &c->func; GLuint i; @@ -663,7 +691,7 @@ void brw_emit_point_sprite_setup(struct brw_sf_compile *c, bool allocate) /* Points setup - several simplifications as all attributes are * constant across the face of the point (point sprites excluded!) */ -void brw_emit_point_setup(struct brw_sf_compile *c, bool allocate) +static void brw_emit_point_setup(struct brw_sf_compile *c, bool allocate) { struct brw_codegen *p = &c->func; GLuint i; @@ -722,7 +750,7 @@ void brw_emit_point_setup(struct brw_sf_compile *c, bool allocate) brw_set_default_predicate_control(p, BRW_PREDICATE_NONE); } -void brw_emit_anyprim_setup( struct brw_sf_compile *c ) +static void brw_emit_anyprim_setup( struct brw_sf_compile *c ) { struct brw_codegen *p = &c->func; struct brw_reg payload_prim = brw_uw1_reg(BRW_GENERAL_REGISTER_FILE, 1, 0); @@ -771,6 +799,81 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c ) brw_emit_point_setup( c, false ); } +const unsigned * +brw_compile_sf(const struct brw_compiler *compiler, + void *mem_ctx, + const struct brw_sf_prog_key *key, + struct brw_sf_prog_data *prog_data, + struct brw_vue_map *vue_map, + unsigned *final_assembly_size) +{ + struct brw_sf_compile c; + memset(&c, 0, sizeof(c)); + + /* Begin the compilation: + */ + brw_init_codegen(compiler->devinfo, &c.func, mem_ctx); + + c.key = *key; + c.vue_map = *vue_map; + if (c.key.do_point_coord) { + /* + * gl_PointCoord is a FS instead of VS builtin variable, thus it's + * not included in c.vue_map generated in VS stage. Here we add + * it manually to let SF shader generate the needed interpolation + * coefficient for FS shader. + */ + c.vue_map.varying_to_slot[BRW_VARYING_SLOT_PNTC] = c.vue_map.num_slots; + c.vue_map.slot_to_varying[c.vue_map.num_slots++] = BRW_VARYING_SLOT_PNTC; + } + c.urb_entry_read_offset = BRW_SF_URB_ENTRY_READ_OFFSET; + c.nr_attr_regs = (c.vue_map.num_slots + 1)/2 - c.urb_entry_read_offset; + c.nr_setup_regs = c.nr_attr_regs; + + c.prog_data.urb_read_length = c.nr_attr_regs; + c.prog_data.urb_entry_size = c.nr_setup_regs * 2; + /* Which primitive? Or all three? + */ + switch (key->primitive) { + case BRW_SF_PRIM_TRIANGLES: + c.nr_verts = 3; + brw_emit_tri_setup( &c, true ); + break; + case BRW_SF_PRIM_LINES: + c.nr_verts = 2; + brw_emit_line_setup( &c, true ); + break; + case BRW_SF_PRIM_POINTS: + c.nr_verts = 1; + if (key->do_point_sprite) + brw_emit_point_sprite_setup( &c, true ); + else + brw_emit_point_setup( &c, true ); + break; + case BRW_SF_PRIM_UNFILLED_TRIS: + c.nr_verts = 3; + brw_emit_anyprim_setup( &c ); + break; + default: + unreachable("not reached"); + } + /* FINISHME: SF programs use calculated jumps (i.e., JMPI with a register + * source). Compacting would be difficult. + */ + /* brw_compact_instructions(&c.func, 0, 0, NULL); */ + *prog_data = c.prog_data; + + const unsigned *program = brw_get_program(&c.func, final_assembly_size); + + if (unlikely(INTEL_DEBUG & DEBUG_SF)) { + fprintf(stderr, "sf:\n"); + brw_disassemble(compiler->devinfo, + program, 0, *final_assembly_size, stderr); + fprintf(stderr, "\n"); + } + + return program; +} diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h index b5b1ee946a8..1f7afacfdae 100644 --- a/src/intel/compiler/brw_compiler.h +++ b/src/intel/compiler/brw_compiler.h @@ -260,6 +260,27 @@ struct brw_gs_prog_key struct brw_sampler_prog_key_data tex; }; +enum brw_sf_primitive { + BRW_SF_PRIM_POINTS = 0, + BRW_SF_PRIM_LINES = 1, + BRW_SF_PRIM_TRIANGLES = 2, + BRW_SF_PRIM_UNFILLED_TRIS = 3, +}; + +struct brw_sf_prog_key { + uint64_t attrs; + bool contains_flat_varying; + unsigned char interp_mode[65]; /* BRW_VARYING_SLOT_COUNT */ + uint8_t point_sprite_coord_replace; + enum brw_sf_primitive primitive:2; + bool do_twoside_color:1; + bool frontface_ccw:1; + bool do_point_sprite:1; + bool do_point_coord:1; + bool sprite_origin_lower_left:1; + bool userclip_active:1; +}; + /* A big lookup table is used to figure out which and how many * additional regs will inserted before the main payload in the WM * program execution. These mainly relate to depth and stencil @@ -871,6 +892,19 @@ struct brw_gs_prog_data unsigned char transform_feedback_swizzles[64 /* BRW_MAX_SOL_BINDINGS */]; }; +struct brw_sf_prog_data { + uint32_t urb_read_length; + uint32_t total_grf; + + /* Each vertex may have upto 12 attributes, 4 components each, + * except WPOS which requires only 2. (11*4 + 2) == 44 ==> 11 + * rows. + * + * Actually we use 4 for each, so call it 12 rows. + */ + unsigned urb_entry_size; +}; + #define DEFINE_PROG_DATA_DOWNCAST(stage) \ static inline struct brw_##stage##_prog_data * \ brw_##stage##_prog_data(struct brw_stage_prog_data *prog_data) \ @@ -961,6 +995,22 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data, char **error_str); /** + * Compile a strips and fans shader. + * + * This is a fixed-function shader determined entirely by the shader key and + * a VUE map. + * + * Returns the final assembly and the program's size. + */ +const unsigned * +brw_compile_sf(const struct brw_compiler *compiler, + void *mem_ctx, + const struct brw_sf_prog_key *key, + struct brw_sf_prog_data *prog_data, + struct brw_vue_map *vue_map, + unsigned *final_assembly_size); + +/** * Compile a fragment shader. * * Returns the final assembly and the program's size. diff --git a/src/intel/compiler/brw_eu_defines.h b/src/intel/compiler/brw_eu_defines.h index ccc838d9c51..1af835d47ed 100644 --- a/src/intel/compiler/brw_eu_defines.h +++ b/src/intel/compiler/brw_eu_defines.h @@ -77,6 +77,8 @@ #define URB_WRITE_PRIM_START 0x2 #define URB_WRITE_PRIM_TYPE_SHIFT 2 +#define BRW_SPRITE_POINT_ENABLE 16 + # define GEN7_GS_CONTROL_DATA_FORMAT_GSCTL_CUT 0 # define GEN7_GS_CONTROL_DATA_FORMAT_GSCTL_SID 1 diff --git a/src/mesa/drivers/dri/i965/Makefile.sources b/src/mesa/drivers/dri/i965/Makefile.sources index d4e0bfd1a8f..bb03214c1ce 100644 --- a/src/mesa/drivers/dri/i965/Makefile.sources +++ b/src/mesa/drivers/dri/i965/Makefile.sources @@ -51,8 +51,6 @@ i965_FILES = \ brw_reset.c \ brw_sampler_state.c \ brw_sf.c \ - brw_sf_emit.c \ - brw_sf.h \ brw_sf_state.c \ brw_state_batch.c \ brw_state.h \ diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 6b3750001f7..5e727389170 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -325,20 +325,6 @@ struct brw_program { }; -struct brw_sf_prog_data { - GLuint urb_read_length; - GLuint total_grf; - - /* Each vertex may have upto 12 attributes, 4 components each, - * except WPOS which requires only 2. (11*4 + 2) == 44 ==> 11 - * rows. - * - * Actually we use 4 for each, so call it 12 rows. - */ - GLuint urb_entry_size; -}; - - struct brw_clip_prog_data { GLuint curb_read_length; /* user planes? */ GLuint clip_mode; diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h index 130a1ed5c9a..7ce47ac75b9 100644 --- a/src/mesa/drivers/dri/i965/brw_defines.h +++ b/src/mesa/drivers/dri/i965/brw_defines.h @@ -153,8 +153,6 @@ #define BRW_FRONTWINDING_CW 0 #define BRW_FRONTWINDING_CCW 1 -#define BRW_SPRITE_POINT_ENABLE 16 - #define BRW_CUT_INDEX_ENABLE (1 << 10) #define BRW_INDEX_BYTE 0 diff --git a/src/mesa/drivers/dri/i965/brw_sf.c b/src/mesa/drivers/dri/i965/brw_sf.c index 5b2697961e6..0739306f30b 100644 --- a/src/mesa/drivers/dri/i965/brw_sf.c +++ b/src/mesa/drivers/dri/i965/brw_sf.c @@ -40,91 +40,28 @@ #include "brw_defines.h" #include "brw_context.h" #include "brw_util.h" -#include "brw_sf.h" #include "brw_state.h" +#include "compiler/brw_eu.h" #include "util/ralloc.h" static void compile_sf_prog( struct brw_context *brw, struct brw_sf_prog_key *key ) { - struct brw_sf_compile c; - const GLuint *program; + const unsigned *program; void *mem_ctx; - GLuint program_size; - - memset(&c, 0, sizeof(c)); + unsigned program_size; mem_ctx = ralloc_context(NULL); - /* Begin the compilation: - */ - brw_init_codegen(&brw->screen->devinfo, &c.func, mem_ctx); - - c.key = *key; - c.vue_map = brw->vue_map_geom_out; - if (c.key.do_point_coord) { - /* - * gl_PointCoord is a FS instead of VS builtin variable, thus it's - * not included in c.vue_map generated in VS stage. Here we add - * it manually to let SF shader generate the needed interpolation - * coefficient for FS shader. - */ - c.vue_map.varying_to_slot[BRW_VARYING_SLOT_PNTC] = c.vue_map.num_slots; - c.vue_map.slot_to_varying[c.vue_map.num_slots++] = BRW_VARYING_SLOT_PNTC; - } - c.urb_entry_read_offset = BRW_SF_URB_ENTRY_READ_OFFSET; - c.nr_attr_regs = (c.vue_map.num_slots + 1)/2 - c.urb_entry_read_offset; - c.nr_setup_regs = c.nr_attr_regs; - - c.prog_data.urb_read_length = c.nr_attr_regs; - c.prog_data.urb_entry_size = c.nr_setup_regs * 2; - - /* Which primitive? Or all three? - */ - switch (key->primitive) { - case SF_TRIANGLES: - c.nr_verts = 3; - brw_emit_tri_setup( &c, true ); - break; - case SF_LINES: - c.nr_verts = 2; - brw_emit_line_setup( &c, true ); - break; - case SF_POINTS: - c.nr_verts = 1; - if (key->do_point_sprite) - brw_emit_point_sprite_setup( &c, true ); - else - brw_emit_point_setup( &c, true ); - break; - case SF_UNFILLED_TRIS: - c.nr_verts = 3; - brw_emit_anyprim_setup( &c ); - break; - default: - unreachable("not reached"); - } - /* FINISHME: SF programs use calculated jumps (i.e., JMPI with a register - * source). Compacting would be difficult. - */ - /* brw_compact_instructions(&c.func, 0, 0, NULL); */ - - /* get the program - */ - program = brw_get_program(&c.func, &program_size); - - if (unlikely(INTEL_DEBUG & DEBUG_SF)) { - fprintf(stderr, "sf:\n"); - brw_disassemble(&brw->screen->devinfo, - c.func.store, 0, program_size, stderr); - fprintf(stderr, "\n"); - } + struct brw_sf_prog_data prog_data; + program = brw_compile_sf(brw->screen->compiler, mem_ctx, key, &prog_data, + &brw->vue_map_geom_out, &program_size); brw_upload_cache(&brw->cache, BRW_CACHE_SF_PROG, - &c.key, sizeof(c.key), + key, sizeof(*key), program, program_size, - &c.prog_data, sizeof(c.prog_data), + &prog_data, sizeof(prog_data), &brw->sf.prog_offset, &brw->sf.prog_data); ralloc_free(mem_ctx); } @@ -170,15 +107,15 @@ brw_upload_sf_prog(struct brw_context *brw) * program. */ if (key.attrs & BITFIELD64_BIT(VARYING_SLOT_EDGE)) - key.primitive = SF_UNFILLED_TRIS; + key.primitive = BRW_SF_PRIM_UNFILLED_TRIS; else - key.primitive = SF_TRIANGLES; + key.primitive = BRW_SF_PRIM_TRIANGLES; break; case GL_LINES: - key.primitive = SF_LINES; + key.primitive = BRW_SF_PRIM_LINES; break; case GL_POINTS: - key.primitive = SF_POINTS; + key.primitive = BRW_SF_PRIM_POINTS; break; } diff --git a/src/mesa/drivers/dri/i965/brw_sf.h b/src/mesa/drivers/dri/i965/brw_sf.h deleted file mode 100644 index 54503449f50..00000000000 --- a/src/mesa/drivers/dri/i965/brw_sf.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - Copyright (C) Intel Corp. 2006. All Rights Reserved. - Intel funded Tungsten Graphics to - develop this 3D driver. - - 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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. - - **********************************************************************/ - /* - * Authors: - * Keith Whitwell <[email protected]> - */ - - -#ifndef BRW_SF_H -#define BRW_SF_H - - -#include "program/program.h" -#include "brw_context.h" -#include "compiler/brw_eu.h" - - -#define SF_POINTS 0 -#define SF_LINES 1 -#define SF_TRIANGLES 2 -#define SF_UNFILLED_TRIS 3 - -struct brw_sf_prog_key { - GLbitfield64 attrs; - bool contains_flat_varying; - unsigned char interp_mode[65]; /* BRW_VARYING_SLOT_COUNT */ - uint8_t point_sprite_coord_replace; - GLuint primitive:2; - GLuint do_twoside_color:1; - GLuint frontface_ccw:1; - GLuint do_point_sprite:1; - GLuint do_point_coord:1; - GLuint sprite_origin_lower_left:1; - GLuint userclip_active:1; -}; - -struct brw_sf_compile { - struct brw_codegen func; - struct brw_sf_prog_key key; - struct brw_sf_prog_data prog_data; - - struct brw_reg pv; - struct brw_reg det; - struct brw_reg dx0; - struct brw_reg dx2; - struct brw_reg dy0; - struct brw_reg dy2; - - /* z and 1/w passed in seperately: - */ - struct brw_reg z[3]; - struct brw_reg inv_w[3]; - - /* The vertices: - */ - struct brw_reg vert[3]; - - /* Temporaries, allocated after last vertex reg. - */ - struct brw_reg inv_det; - struct brw_reg a1_sub_a0; - struct brw_reg a2_sub_a0; - struct brw_reg tmp; - - struct brw_reg m1Cx; - struct brw_reg m2Cy; - struct brw_reg m3C0; - - GLuint nr_verts; - GLuint nr_attr_regs; - GLuint nr_setup_regs; - int urb_entry_read_offset; - - /** The last known value of the f0.0 flag register. */ - unsigned flag_value; - - struct brw_vue_map vue_map; -}; - - -void brw_emit_tri_setup( struct brw_sf_compile *c, bool allocate ); -void brw_emit_line_setup( struct brw_sf_compile *c, bool allocate ); -void brw_emit_point_setup( struct brw_sf_compile *c, bool allocate ); -void brw_emit_point_sprite_setup( struct brw_sf_compile *c, bool allocate ); -void brw_emit_anyprim_setup( struct brw_sf_compile *c ); - -#endif diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index 4ba57c30dfd..f278486aaac 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -39,7 +39,6 @@ #include "brw_context.h" #include "brw_state.h" #include "brw_defines.h" -#include "brw_sf.h" static void upload_sf_vp(struct brw_context *brw) { |