summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri
diff options
context:
space:
mode:
authorPaul Berry <[email protected]>2013-08-14 17:20:04 -0700
committerPaul Berry <[email protected]>2013-08-23 11:02:44 -0700
commit72168f5f0069b2a0d8a2434ba80f4446952e84c7 (patch)
treef54f860d2b7bebacfc3d8c7b8f7f8b068a0ffc6f /src/mesa/drivers/dri
parente556286802811b4b99c692d1ff5197f8ee1f011b (diff)
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 <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4.cpp27
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4.h46
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.c26
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.h37
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 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
@@ -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 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