nir: Implement a Mesa IR -> NIR translator.
Shamelessly ripped off from Eric Anholt's tgsi_to_nir pass. This is not built on SCons, like the rest of NIR. v2: - Delete redundant c->s, c->impl, and c->cf_node_list pointers (Ken) - Use nir_builder directly instead of ptn_compile in more places (Ken) - Drop 'struct' keyword in front of nir_builder (ken) - Add a file level Doxygen comment (Ken) - Use scalar constants instead of splatting (Eric) - Use nir_builder helpers for constants, moves, and swizzles (Connor) v3: Minor indentation improvements. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
@@ -174,6 +174,7 @@ endif
|
||||
libmesa_la_SOURCES = \
|
||||
$(MESA_FILES) \
|
||||
$(PROGRAM_FILES) \
|
||||
$(PROGRAM_NIR_FILES) \
|
||||
$(MESA_ASM_FILES_FOR_ARCH)
|
||||
|
||||
libmesa_la_LIBADD = \
|
||||
@@ -183,6 +184,7 @@ libmesa_la_LIBADD = \
|
||||
libmesagallium_la_SOURCES = \
|
||||
$(MESA_GALLIUM_FILES) \
|
||||
$(PROGRAM_FILES) \
|
||||
$(PROGRAM_NIR_FILES) \
|
||||
$(MESA_ASM_FILES_FOR_ARCH)
|
||||
|
||||
libmesagallium_la_LIBADD = \
|
||||
|
||||
@@ -520,6 +520,10 @@ PROGRAM_FILES = \
|
||||
program/symbol_table.c \
|
||||
program/symbol_table.h
|
||||
|
||||
PROGRAM_NIR_FILES = \
|
||||
program/prog_to_nir.c \
|
||||
program/prog_to_nir.h
|
||||
|
||||
ASM_C_FILES = \
|
||||
x86/common_x86.c \
|
||||
x86/x86_xform.c \
|
||||
@@ -608,6 +612,7 @@ INCLUDE_DIRS = \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_srcdir)/src/glsl \
|
||||
-I$(top_builddir)/src/glsl \
|
||||
-I$(top_builddir)/src/glsl/nir \
|
||||
-I$(top_srcdir)/src/glsl/glcpp \
|
||||
-I$(top_srcdir)/src/mesa \
|
||||
-I$(top_builddir)/src/mesa \
|
||||
|
||||
@@ -59,6 +59,8 @@
|
||||
#define SWIZZLE_NOOP MAKE_SWIZZLE4(0,1,2,3)
|
||||
#define GET_SWZ(swz, idx) (((swz) >> ((idx)*3)) & 0x7)
|
||||
#define GET_BIT(msk, idx) (((msk) >> (idx)) & 0x1)
|
||||
/** Determine if swz contains SWIZZLE_ZERO/ONE/NIL for any components. */
|
||||
#define HAS_EXTENDED_SWIZZLE(swz) (swz & 0x924)
|
||||
|
||||
#define SWIZZLE_XYZW MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W)
|
||||
#define SWIZZLE_XXXX MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X, SWIZZLE_X, SWIZZLE_X)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright © 2015 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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef PROG_TO_NIR_H
|
||||
#define PROG_TO_NIR_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct nir_shader *prog_to_nir(struct gl_program *prog,
|
||||
const nir_shader_compiler_options *options);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user