From: Paul Berry Date: Thu, 15 Aug 2013 00:20:04 +0000 (-0700) Subject: i965/vec4: Move vec4 data structures and functions to brw_vec4.{cpp,h}. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=72168f5f0069b2a0d8a2434ba80f4446952e84c7;p=mesa.git i965/vec4: Move vec4 data structures and functions to brw_vec4.{cpp,h}. This patch moves the following things into brw_vec4.{cpp,h}: - struct brw_vec4_compile - struct brw_vec4_prog_key - brw_vec4_prog_data_compare() - brw_vec4_prog_data_free() This will allow us to avoid having to include brw_vs.h in geometry-shader-specific files. Reviewed-by: Ian Romanick Reviewed-by: Kenneth Graunke Reviewed-by: Matt Turner --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index d7671a458b3..36527cd7972 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -1562,4 +1562,31 @@ brw_vs_emit(struct brw_context *brw, return generated; } + +bool +brw_vec4_prog_data_compare(const struct brw_vec4_prog_data *a, + const struct brw_vec4_prog_data *b) +{ + /* Compare all the struct up to the pointers. */ + if (memcmp(a, b, offsetof(struct brw_vec4_prog_data, param))) + return false; + + if (memcmp(a->param, b->param, a->nr_params * sizeof(void *))) + return false; + + if (memcmp(a->pull_param, b->pull_param, a->nr_pull_params * sizeof(void *))) + return false; + + return true; +} + + +void +brw_vec4_prog_data_free(const struct brw_vec4_prog_data *prog_data) +{ + ralloc_free((void *)prog_data->param); + ralloc_free((void *)prog_data->pull_param); +} + + } /* extern "C" */ diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index e46d2b170f1..512b6b30894 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -28,6 +28,7 @@ #include "brw_shader.h" #include "main/compiler.h" #include "program/hash_table.h" +#include "brw_program.h" #ifdef __cplusplus extern "C" { @@ -42,11 +43,52 @@ extern "C" { #include "glsl/ir.h" -struct brw_vec4_compile; struct brw_vs_compile; -struct brw_vec4_prog_key; + + +struct brw_vec4_compile { + GLuint last_scratch; /**< measured in 32-byte (register size) units */ +}; + + +struct brw_vec4_prog_key { + GLuint program_string_id; + + /** + * True if at least one clip flag is enabled, regardless of whether the + * shader uses clip planes or gl_ClipDistance. + */ + GLuint userclip_active:1; + + /** + * How many user clipping planes are being uploaded to the vertex shader as + * push constants. + */ + GLuint nr_userclip_plane_consts:4; + + /** + * True if the shader uses gl_ClipDistance, regardless of whether any clip + * flags are enabled. + */ + GLuint uses_clip_distance:1; + + GLuint clamp_vertex_color:1; + + struct brw_sampler_prog_key_data tex; +}; + #ifdef __cplusplus +extern "C" { +#endif + +bool brw_vec4_prog_data_compare(const struct brw_vec4_prog_data *a, + const struct brw_vec4_prog_data *b); +void brw_vec4_prog_data_free(const struct brw_vec4_prog_data *prog_data); + +#ifdef __cplusplus +} /* extern "C" */ + namespace brw { class dst_reg; diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index ee77b019740..f1ff14166ef 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -173,24 +173,6 @@ gl_clip_plane *brw_select_clip_planes(struct gl_context *ctx) } -bool -brw_vec4_prog_data_compare(const struct brw_vec4_prog_data *a, - const struct brw_vec4_prog_data *b) -{ - /* Compare all the struct up to the pointers. */ - if (memcmp(a, b, offsetof(struct brw_vec4_prog_data, param))) - return false; - - if (memcmp(a->param, b->param, a->nr_params * sizeof(void *))) - return false; - - if (memcmp(a->pull_param, b->pull_param, a->nr_pull_params * sizeof(void *))) - return false; - - return true; -} - - bool brw_vs_prog_data_compare(const void *in_a, const void *in_b, int aux_size, const void *in_key) @@ -551,14 +533,6 @@ brw_vs_precompile(struct gl_context *ctx, struct gl_shader_program *prog) } -void -brw_vec4_prog_data_free(const struct brw_vec4_prog_data *prog_data) -{ - ralloc_free((void *)prog_data->param); - ralloc_free((void *)prog_data->pull_param); -} - - void brw_vs_prog_data_free(const void *in_prog_data) { diff --git a/src/mesa/drivers/dri/i965/brw_vs.h b/src/mesa/drivers/dri/i965/brw_vs.h index d51d7b69d34..90c96b607ce 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.h +++ b/src/mesa/drivers/dri/i965/brw_vs.h @@ -36,7 +36,7 @@ #include "brw_context.h" #include "brw_eu.h" -#include "brw_program.h" +#include "brw_vec4.h" #include "program/program.h" /** @@ -50,33 +50,6 @@ #define BRW_ATTRIB_WA_SIGN 32 /* interpret as signed in shader */ #define BRW_ATTRIB_WA_SCALE 64 /* interpret as scaled in shader */ -struct brw_vec4_prog_key { - GLuint program_string_id; - - /** - * True if at least one clip flag is enabled, regardless of whether the - * shader uses clip planes or gl_ClipDistance. - */ - GLuint userclip_active:1; - - /** - * How many user clipping planes are being uploaded to the vertex shader as - * push constants. - */ - GLuint nr_userclip_plane_consts:4; - - /** - * True if the shader uses gl_ClipDistance, regardless of whether any clip - * flags are enabled. - */ - GLuint uses_clip_distance:1; - - GLuint clamp_vertex_color:1; - - struct brw_sampler_prog_key_data tex; -}; - - struct brw_vs_prog_key { struct brw_vec4_prog_key base; @@ -99,11 +72,6 @@ struct brw_vs_prog_key { }; -struct brw_vec4_compile { - GLuint last_scratch; /**< measured in 32-byte (register size) units */ -}; - - struct brw_vs_compile { struct brw_vec4_compile base; struct brw_vs_prog_key key; @@ -125,11 +93,8 @@ bool brw_vs_precompile(struct gl_context *ctx, struct gl_shader_program *prog); void brw_vs_debug_recompile(struct brw_context *brw, struct gl_shader_program *prog, const struct brw_vs_prog_key *key); -bool brw_vec4_prog_data_compare(const struct brw_vec4_prog_data *a, - const struct brw_vec4_prog_data *b); bool brw_vs_prog_data_compare(const void *a, const void *b, int aux_size, const void *key); -void brw_vec4_prog_data_free(const struct brw_vec4_prog_data *prog_data); void brw_vs_prog_data_free(const void *in_prog_data); #ifdef __cplusplus