A lot of the mesa code use struct brw_context to get the GPU generation and various information. Let's stub this structure and initialize it ourselves to be able to resuse mesa's code untouched. Signed-off-by: Damien Lespiau <damien.lespiau at intel.com> --- assembler/Makefile.am | 2 + assembler/brw_context.c | 44 ++++++++++++++++++++++++++++++++++ assembler/brw_context.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++ assembler/brw_eu.h | 1 + 4 files changed, 107 insertions(+), 0 deletions(-) create mode 100644 assembler/brw_context.c create mode 100644 assembler/brw_context.h diff --git a/assembler/Makefile.am b/assembler/Makefile.am index d4733d3..9bd3289 100644 --- a/assembler/Makefile.am +++ b/assembler/Makefile.am @@ -11,6 +11,8 @@ gram.h: gram.c intel_gen4asm_SOURCES = \ brw_compat.h \ + brw_context.c \ + brw_context.h \ ralloc.c \ ralloc.h \ brw_defines.h \ diff --git a/assembler/brw_context.c b/assembler/brw_context.c new file mode 100644 index 0000000..6f2a964 --- /dev/null +++ b/assembler/brw_context.c @@ -0,0 +1,44 @@ +/* + * Copyright ? 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include <string.h> + +#include "brw_context.h" + +static bool +intel_init_context(struct intel_context *intel, int gen) +{ + memset(intel, 0, sizeof(struct intel_context)); + intel->gen = gen / 10; + intel->is_haswell = gen == 75; + if (intel->gen >= 5) + intel->needs_ff_sync = true; + + return true; +} + +bool +brw_init_context(struct brw_context *brw, int gen) +{ + return intel_init_context(&brw->intel, gen); +} diff --git a/assembler/brw_context.h b/assembler/brw_context.h new file mode 100644 index 0000000..f0e3a35 --- /dev/null +++ b/assembler/brw_context.h @@ -0,0 +1,60 @@ +/* + * Copyright ? 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/* + * To share code with mesa without having to do big modifications and still be + * able to sync files together at a later point, this file stubs the fields + * of struct brw_context used by the code we import. + */ + +#ifndef __BRW_CONTEXT_H__ +#define __BRW_CONTEXT_H__ + +#include <stdbool.h> + +#ifdef __cplusplus +extern "C" { +#endif + +struct intel_context +{ + int gen; + int gt; + bool is_haswell; + bool is_g4x; + bool needs_ff_sync; +}; + +struct brw_context +{ + struct intel_context intel; +}; + +bool +brw_init_context(struct brw_context *brw, int gen); + +#ifdef __cplusplus +} /* end of extern "C" */ +#endif + +#endif /* __BRW_CONTEXT_H__ */ diff --git a/assembler/brw_eu.h b/assembler/brw_eu.h index 262a40b..f3e99fa 100644 --- a/assembler/brw_eu.h +++ b/assembler/brw_eu.h @@ -34,6 +34,7 @@ #define BRW_EU_H #include <stdbool.h> +#include "brw_context.h" #include "brw_structs.h" #include "brw_defines.h" #include "brw_reg.h" -- 1.7.7.5