i965: Move clip program compilation to the compiler
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
@@ -281,6 +281,47 @@ struct brw_sf_prog_key {
|
||||
bool userclip_active:1;
|
||||
};
|
||||
|
||||
enum brw_clip_mode {
|
||||
BRW_CLIP_MODE_NORMAL = 0,
|
||||
BRW_CLIP_MODE_CLIP_ALL = 1,
|
||||
BRW_CLIP_MODE_CLIP_NON_REJECTED = 2,
|
||||
BRW_CLIP_MODE_REJECT_ALL = 3,
|
||||
BRW_CLIP_MODE_ACCEPT_ALL = 4,
|
||||
BRW_CLIP_MODE_KERNEL_CLIP = 5,
|
||||
};
|
||||
|
||||
enum brw_clip_fill_mode {
|
||||
BRW_CLIP_FILL_MODE_LINE = 0,
|
||||
BRW_CLIP_FILL_MODE_POINT = 1,
|
||||
BRW_CLIP_FILL_MODE_FILL = 2,
|
||||
BRW_CLIP_FILL_MODE_CULL = 3,
|
||||
};
|
||||
|
||||
/* Note that if unfilled primitives are being emitted, we have to fix
|
||||
* up polygon offset and flatshading at this point:
|
||||
*/
|
||||
struct brw_clip_prog_key {
|
||||
uint64_t attrs;
|
||||
bool contains_flat_varying;
|
||||
bool contains_noperspective_varying;
|
||||
unsigned char interp_mode[65]; /* BRW_VARYING_SLOT_COUNT */
|
||||
unsigned primitive:4;
|
||||
unsigned nr_userclip:4;
|
||||
bool pv_first:1;
|
||||
bool do_unfilled:1;
|
||||
enum brw_clip_fill_mode fill_cw:2; /* includes cull information */
|
||||
enum brw_clip_fill_mode fill_ccw:2; /* includes cull information */
|
||||
bool offset_cw:1;
|
||||
bool offset_ccw:1;
|
||||
bool copy_bfc_cw:1;
|
||||
bool copy_bfc_ccw:1;
|
||||
enum brw_clip_mode clip_mode:3;
|
||||
|
||||
float offset_factor;
|
||||
float offset_units;
|
||||
float offset_clamp;
|
||||
};
|
||||
|
||||
/* 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
|
||||
@@ -905,6 +946,13 @@ struct brw_sf_prog_data {
|
||||
unsigned urb_entry_size;
|
||||
};
|
||||
|
||||
struct brw_clip_prog_data {
|
||||
uint32_t curb_read_length; /* user planes? */
|
||||
uint32_t clip_mode;
|
||||
uint32_t urb_read_length;
|
||||
uint32_t total_grf;
|
||||
};
|
||||
|
||||
#define DEFINE_PROG_DATA_DOWNCAST(stage) \
|
||||
static inline struct brw_##stage##_prog_data * \
|
||||
brw_##stage##_prog_data(struct brw_stage_prog_data *prog_data) \
|
||||
@@ -1010,6 +1058,22 @@ brw_compile_sf(const struct brw_compiler *compiler,
|
||||
struct brw_vue_map *vue_map,
|
||||
unsigned *final_assembly_size);
|
||||
|
||||
/**
|
||||
* Compile a clipper 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_clip(const struct brw_compiler *compiler,
|
||||
void *mem_ctx,
|
||||
const struct brw_clip_prog_key *key,
|
||||
struct brw_clip_prog_data *prog_data,
|
||||
struct brw_vue_map *vue_map,
|
||||
unsigned *final_assembly_size);
|
||||
|
||||
/**
|
||||
* Compile a fragment shader.
|
||||
*
|
||||
|
Reference in New Issue
Block a user