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 <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Paul Berry 2013-08-14 17:20:04 -07:00
parent e556286802
commit 72168f5f00
4 changed files with 72 additions and 64 deletions

View file

@ -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" */

View file

@ -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;

View file

@ -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)
{

View file

@ -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