[Mesa-dev] [PATCH 06/30] i965/vec4: Move vec4 data structures and functions to brw_vec4.{cpp, h}.
Paul Berry
stereotype441 at gmail.com
Tue Aug 20 11:30:21 PDT 2013
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.
---
src/mesa/drivers/dri/i965/brw_vec4.cpp | 27 ++++++++++++++++++++
src/mesa/drivers/dri/i965/brw_vec4.h | 46 ++++++++++++++++++++++++++++++++--
src/mesa/drivers/dri/i965/brw_vs.c | 26 -------------------
src/mesa/drivers/dri/i965/brw_vs.h | 37 +--------------------------
4 files changed, 72 insertions(+), 64 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
index d7671a4..36527cd 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 e46d2b1..512b6b3 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 ee77b01..f1ff141 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -174,24 +174,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)
{
@@ -552,14 +534,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)
{
const struct brw_vs_prog_data *prog_data = in_prog_data;
diff --git a/src/mesa/drivers/dri/i965/brw_vs.h b/src/mesa/drivers/dri/i965/brw_vs.h
index d51d7b6..90c96b6 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
--
1.8.3.4
More information about the mesa-dev
mailing list