diff options
author | Jonathan Gray <jsg@cvs.openbsd.org> | 2018-10-23 06:36:00 +0000 |
---|---|---|
committer | Jonathan Gray <jsg@cvs.openbsd.org> | 2018-10-23 06:36:00 +0000 |
commit | b65fcab046d3a1b6b6ac315720df220925c5322e (patch) | |
tree | ff73dcc383ac0799c655ff6194cda9dacb75dde9 /lib/mesa/src/gallium/drivers/i915 | |
parent | 18d6381c51e253e4c41c62619f80d9ce745b95c8 (diff) |
Merge Mesa 17.3.9
Mesa 18.x needs an ld with build-id for at least the intel code
Mesa 18.2 assumes linux only memfd syscalls in intel code
Tested by matthieu@, kettenis@ and myself on a variety of hardware and
architectures. ok kettenis@
Diffstat (limited to 'lib/mesa/src/gallium/drivers/i915')
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/Automake.inc | 2 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/Makefile.in | 77 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_context.c | 25 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_context.h | 1 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_fpc.h | 1 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_fpc_optimize.c | 5 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_fpc_translate.c | 137 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_screen.c | 38 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_state.c | 14 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_state_derived.c | 17 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_state_dynamic.c | 3 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_state_immediate.c | 6 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_state_static.c | 2 | ||||
-rw-r--r-- | lib/mesa/src/gallium/drivers/i915/i915_surface.c | 2 |
14 files changed, 114 insertions, 216 deletions
diff --git a/lib/mesa/src/gallium/drivers/i915/Automake.inc b/lib/mesa/src/gallium/drivers/i915/Automake.inc index 8cb40f27d..73ef8101d 100644 --- a/lib/mesa/src/gallium/drivers/i915/Automake.inc +++ b/lib/mesa/src/gallium/drivers/i915/Automake.inc @@ -5,7 +5,7 @@ TARGET_CPPFLAGS += -DGALLIUM_I915 TARGET_LIB_DEPS += \ $(top_builddir)/src/gallium/winsys/i915/drm/libi915drm.la \ $(top_builddir)/src/gallium/drivers/i915/libi915.la \ - $(INTEL_LIBS) \ + $(I915_LIBS) \ $(LIBDRM_LIBS) endif diff --git a/lib/mesa/src/gallium/drivers/i915/Makefile.in b/lib/mesa/src/gallium/drivers/i915/Makefile.in index f0cb97e4c..cbd2c3771 100644 --- a/lib/mesa/src/gallium/drivers/i915/Makefile.in +++ b/lib/mesa/src/gallium/drivers/i915/Makefile.in @@ -76,16 +76,20 @@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/Makefile.sources $(top_srcdir)/bin/depcomp \ $(top_srcdir)/src/gallium/Automake.inc TODO -@HAVE_DRISW_TRUE@am__append_1 = \ +@HAVE_LIBDRM_TRUE@am__append_1 = \ +@HAVE_LIBDRM_TRUE@ $(LIBDRM_LIBS) + +@HAVE_DRISW_TRUE@am__append_2 = \ @HAVE_DRISW_TRUE@ $(top_builddir)/src/gallium/winsys/sw/dri/libswdri.la -@HAVE_DRISW_KMS_TRUE@am__append_2 = \ +@HAVE_DRISW_KMS_TRUE@am__append_3 = \ @HAVE_DRISW_KMS_TRUE@ $(top_builddir)/src/gallium/winsys/sw/kms-dri/libswkmsdri.la \ @HAVE_DRISW_KMS_TRUE@ $(LIBDRM_LIBS) subdir = src/gallium/drivers/i915 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_gnu_make.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_check_python_mako_module.m4 \ $(top_srcdir)/m4/ax_gcc_builtin.m4 \ $(top_srcdir)/m4/ax_gcc_func_attribute.m4 \ @@ -165,6 +169,8 @@ AMDGPU_CFLAGS = @AMDGPU_CFLAGS@ AMDGPU_LIBS = @AMDGPU_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +ANDROID_CFLAGS = @ANDROID_CFLAGS@ +ANDROID_LIBS = @ANDROID_LIBS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -195,8 +201,6 @@ DLLTOOL = @DLLTOOL@ DLOPEN_LIBS = @DLOPEN_LIBS@ DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@ DRI2PROTO_LIBS = @DRI2PROTO_LIBS@ -DRI3PROTO_CFLAGS = @DRI3PROTO_CFLAGS@ -DRI3PROTO_LIBS = @DRI3PROTO_LIBS@ DRIGL_CFLAGS = @DRIGL_CFLAGS@ DRIGL_LIBS = @DRIGL_LIBS@ DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@ @@ -209,10 +213,11 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGL_CFLAGS = @EGL_CFLAGS@ -EGL_CLIENT_APIS = @EGL_CLIENT_APIS@ EGL_LIB_DEPS = @EGL_LIB_DEPS@ EGL_NATIVE_PLATFORM = @EGL_NATIVE_PLATFORM@ EGREP = @EGREP@ +ETNAVIV_CFLAGS = @ETNAVIV_CFLAGS@ +ETNAVIV_LIBS = @ETNAVIV_LIBS@ EXEEXT = @EXEEXT@ EXPAT_CFLAGS = @EXPAT_CFLAGS@ EXPAT_LIBS = @EXPAT_LIBS@ @@ -239,6 +244,8 @@ GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@ GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@ GREP = @GREP@ HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@ +I915_CFLAGS = @I915_CFLAGS@ +I915_LIBS = @I915_LIBS@ INDENT = @INDENT@ INDENT_FLAGS = @INDENT_FLAGS@ INSTALL = @INSTALL@ @@ -246,45 +253,40 @@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTEL_CFLAGS = @INTEL_CFLAGS@ -INTEL_LIBS = @INTEL_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LD_NO_UNDEFINED = @LD_NO_UNDEFINED@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBATOMIC_LIBS = @LIBATOMIC_LIBS@ LIBCLC_INCLUDEDIR = @LIBCLC_INCLUDEDIR@ LIBCLC_LIBEXECDIR = @LIBCLC_LIBEXECDIR@ LIBDRM_CFLAGS = @LIBDRM_CFLAGS@ LIBDRM_LIBS = @LIBDRM_LIBS@ LIBELF_CFLAGS = @LIBELF_CFLAGS@ LIBELF_LIBS = @LIBELF_LIBS@ +LIBGLVND_DATADIR = @LIBGLVND_DATADIR@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -LIBSENSORS_LDFLAGS = @LIBSENSORS_LDFLAGS@ -LIBSHA1_CFLAGS = @LIBSHA1_CFLAGS@ -LIBSHA1_LIBS = @LIBSHA1_LIBS@ +LIBSENSORS_LIBS = @LIBSENSORS_LIBS@ LIBTOOL = @LIBTOOL@ +LIBUNWIND_CFLAGS = @LIBUNWIND_CFLAGS@ +LIBUNWIND_LIBS = @LIBUNWIND_LIBS@ LIB_DIR = @LIB_DIR@ LIB_EXT = @LIB_EXT@ LIPO = @LIPO@ -LLVM_BINDIR = @LLVM_BINDIR@ LLVM_CFLAGS = @LLVM_CFLAGS@ LLVM_CONFIG = @LLVM_CONFIG@ -LLVM_CPPFLAGS = @LLVM_CPPFLAGS@ LLVM_CXXFLAGS = @LLVM_CXXFLAGS@ LLVM_INCLUDEDIR = @LLVM_INCLUDEDIR@ LLVM_LDFLAGS = @LLVM_LDFLAGS@ -LLVM_LIBDIR = @LLVM_LIBDIR@ LLVM_LIBS = @LLVM_LIBS@ -LLVM_VERSION = @LLVM_VERSION@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ -MESA_LLVM = @MESA_LLVM@ MKDIR_P = @MKDIR_P@ MSVC2013_COMPAT_CFLAGS = @MSVC2013_COMPAT_CFLAGS@ MSVC2013_COMPAT_CXXFLAGS = @MSVC2013_COMPAT_CXXFLAGS@ @@ -300,13 +302,11 @@ NVVIEUX_CFLAGS = @NVVIEUX_CFLAGS@ NVVIEUX_LIBS = @NVVIEUX_LIBS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ -OMX_CFLAGS = @OMX_CFLAGS@ -OMX_LIBS = @OMX_LIBS@ -OMX_LIB_INSTALL_DIR = @OMX_LIB_INSTALL_DIR@ +OMX_BELLAGIO_CFLAGS = @OMX_BELLAGIO_CFLAGS@ +OMX_BELLAGIO_LIBS = @OMX_BELLAGIO_LIBS@ +OMX_BELLAGIO_LIB_INSTALL_DIR = @OMX_BELLAGIO_LIB_INSTALL_DIR@ OPENCL_LIBNAME = @OPENCL_LIBNAME@ OPENCL_VERSION = @OPENCL_VERSION@ -OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ -OPENSSL_LIBS = @OPENSSL_LIBS@ OSMESA_LIB = @OSMESA_LIB@ OSMESA_LIB_DEPS = @OSMESA_LIB_DEPS@ OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@ @@ -326,8 +326,6 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSIX_SHELL = @POSIX_SHELL@ -PRESENTPROTO_CFLAGS = @PRESENTPROTO_CFLAGS@ -PRESENTPROTO_LIBS = @PRESENTPROTO_LIBS@ PTHREADSTUBS_CFLAGS = @PTHREADSTUBS_CFLAGS@ PTHREADSTUBS_LIBS = @PTHREADSTUBS_LIBS@ PTHREAD_CC = @PTHREAD_CC@ @@ -343,8 +341,6 @@ SED = @SED@ SELINUX_CFLAGS = @SELINUX_CFLAGS@ SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ -SHA1_CFLAGS = @SHA1_CFLAGS@ -SHA1_LIBS = @SHA1_LIBS@ SHELL = @SHELL@ SIMPENROSE_CFLAGS = @SIMPENROSE_CFLAGS@ SIMPENROSE_LIBS = @SIMPENROSE_LIBS@ @@ -353,7 +349,8 @@ STRIP = @STRIP@ SWR_AVX2_CXXFLAGS = @SWR_AVX2_CXXFLAGS@ SWR_AVX_CXXFLAGS = @SWR_AVX_CXXFLAGS@ SWR_CXX11_CXXFLAGS = @SWR_CXX11_CXXFLAGS@ -TIMESTAMP_CMD = @TIMESTAMP_CMD@ +SWR_KNL_CXXFLAGS = @SWR_KNL_CXXFLAGS@ +SWR_SKX_CXXFLAGS = @SWR_SKX_CXXFLAGS@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ VALGRIND_LIBS = @VALGRIND_LIBS@ VA_CFLAGS = @VA_CFLAGS@ @@ -361,25 +358,28 @@ VA_LIBS = @VA_LIBS@ VA_LIB_INSTALL_DIR = @VA_LIB_INSTALL_DIR@ VA_MAJOR = @VA_MAJOR@ VA_MINOR = @VA_MINOR@ -VC4_CFLAGS = @VC4_CFLAGS@ -VC4_LIBS = @VC4_LIBS@ +VC5_SIMULATOR_CFLAGS = @VC5_SIMULATOR_CFLAGS@ +VC5_SIMULATOR_LIBS = @VC5_SIMULATOR_LIBS@ VDPAU_CFLAGS = @VDPAU_CFLAGS@ VDPAU_LIBS = @VDPAU_LIBS@ VDPAU_LIB_INSTALL_DIR = @VDPAU_LIB_INSTALL_DIR@ VDPAU_MAJOR = @VDPAU_MAJOR@ VDPAU_MINOR = @VDPAU_MINOR@ VERSION = @VERSION@ -VG_LIB_DEPS = @VG_LIB_DEPS@ VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ VISIBILITY_CXXFLAGS = @VISIBILITY_CXXFLAGS@ VL_CFLAGS = @VL_CFLAGS@ VL_LIBS = @VL_LIBS@ VULKAN_ICD_INSTALL_DIR = @VULKAN_ICD_INSTALL_DIR@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ +WAYLAND_CLIENT_CFLAGS = @WAYLAND_CLIENT_CFLAGS@ +WAYLAND_CLIENT_LIBS = @WAYLAND_CLIENT_LIBS@ +WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@ WAYLAND_SCANNER = @WAYLAND_SCANNER@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SERVER_CFLAGS = @WAYLAND_SERVER_CFLAGS@ +WAYLAND_SERVER_LIBS = @WAYLAND_SERVER_LIBS@ +WNO_OVERRIDE_INIT = @WNO_OVERRIDE_INIT@ X11_INCLUDES = @X11_INCLUDES@ XA_MAJOR = @XA_MAJOR@ XA_MINOR = @XA_MINOR@ @@ -398,9 +398,10 @@ XVMC_LIBS = @XVMC_LIBS@ XVMC_LIB_INSTALL_DIR = @XVMC_LIB_INSTALL_DIR@ XVMC_MAJOR = @XVMC_MAJOR@ XVMC_MINOR = @XVMC_MINOR@ -XXD = @XXD@ YACC = @YACC@ YFLAGS = @YFLAGS@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -546,17 +547,15 @@ GALLIUM_TARGET_CFLAGS = \ -I$(top_srcdir)/src/gallium/auxiliary \ -I$(top_srcdir)/src/gallium/drivers \ -I$(top_srcdir)/src/gallium/winsys \ + -I$(top_builddir)/src/util/ \ + -I$(top_builddir)/src/gallium/drivers/ \ $(DEFINES) \ $(PTHREAD_CFLAGS) \ $(LIBDRM_CFLAGS) \ $(VISIBILITY_CFLAGS) -GALLIUM_COMMON_LIB_DEPS = \ - -lm \ - $(CLOCK_LIB) \ - $(PTHREAD_LIBS) \ - $(DLOPEN_LIBS) - +GALLIUM_COMMON_LIB_DEPS = -lm $(LIBUNWIND_LIBS) $(LIBSENSORS_LIBS) \ + $(CLOCK_LIB) $(PTHREAD_LIBS) $(DLOPEN_LIBS) $(am__append_1) GALLIUM_WINSYS_CFLAGS = \ -I$(top_srcdir)/src \ -I$(top_srcdir)/include \ @@ -568,7 +567,7 @@ GALLIUM_WINSYS_CFLAGS = \ GALLIUM_PIPE_LOADER_WINSYS_LIBS = \ $(top_builddir)/src/gallium/winsys/sw/null/libws_null.la \ $(top_builddir)/src/gallium/winsys/sw/wrapper/libwsw.la \ - $(am__append_1) $(am__append_2) + $(am__append_2) $(am__append_3) AM_CFLAGS = \ $(GALLIUM_DRIVER_CFLAGS) diff --git a/lib/mesa/src/gallium/drivers/i915/i915_context.c b/lib/mesa/src/gallium/drivers/i915/i915_context.c index f3324dbc2..8ea944003 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_context.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_context.c @@ -37,6 +37,8 @@ #include "pipe/p_defines.h" #include "util/u_inlines.h" #include "util/u_memory.h" +#include "util/u_prim.h" +#include "util/u_upload_mgr.h" #include "pipe/p_screen.h" @@ -56,6 +58,9 @@ i915_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) const void *mapped_indices = NULL; unsigned i; + if (!u_trim_pipe_prim(info->mode, (unsigned*)&info->count)) + return; + /* * Ack vs contants here, helps ipers a lot. */ @@ -68,22 +73,23 @@ i915_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) * Map vertex buffers */ for (i = 0; i < i915->nr_vertex_buffers; i++) { - const void *buf = i915->vertex_buffers[i].user_buffer; + const void *buf = i915->vertex_buffers[i].is_user_buffer ? + i915->vertex_buffers[i].buffer.user : NULL; if (!buf) - buf = i915_buffer(i915->vertex_buffers[i].buffer)->data; + buf = i915_buffer(i915->vertex_buffers[i].buffer.resource)->data; draw_set_mapped_vertex_buffer(draw, i, buf, ~0); } /* * Map index buffer, if present */ - if (info->indexed) { - mapped_indices = i915->index_buffer.user_buffer; + if (info->index_size) { + mapped_indices = info->has_user_indices ? info->index.user : NULL; if (!mapped_indices) - mapped_indices = i915_buffer(i915->index_buffer.buffer)->data; + mapped_indices = i915_buffer(info->index.resource)->data; draw_set_indexes(draw, - (ubyte *) mapped_indices + i915->index_buffer.offset, - i915->index_buffer.index_size, ~0); + (ubyte *) mapped_indices, + info->index_size, ~0); } if (i915->constants[PIPE_SHADER_VERTEX]) @@ -137,6 +143,9 @@ static void i915_destroy(struct pipe_context *pipe) draw_destroy(i915->draw); + if (i915->base.stream_uploader) + u_upload_destroy(i915->base.stream_uploader); + if(i915->batch) i915->iws->batchbuffer_destroy(i915->batch); @@ -166,6 +175,8 @@ i915_create_context(struct pipe_screen *screen, void *priv, unsigned flags) i915->iws = i915_screen(screen)->iws; i915->base.screen = screen; i915->base.priv = priv; + i915->base.stream_uploader = u_upload_create_default(&i915->base); + i915->base.const_uploader = i915->base.stream_uploader; i915->base.destroy = i915_destroy; diff --git a/lib/mesa/src/gallium/drivers/i915/i915_context.h b/lib/mesa/src/gallium/drivers/i915/i915_context.h index ea13834c1..626a17f56 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_context.h +++ b/lib/mesa/src/gallium/drivers/i915/i915_context.h @@ -249,7 +249,6 @@ struct i915_context { struct pipe_sampler_view *fragment_sampler_views[PIPE_MAX_SAMPLERS]; struct pipe_sampler_view *vertex_sampler_views[PIPE_MAX_SAMPLERS]; struct pipe_viewport_state viewport; - struct pipe_index_buffer index_buffer; unsigned dirty; diff --git a/lib/mesa/src/gallium/drivers/i915/i915_fpc.h b/lib/mesa/src/gallium/drivers/i915/i915_fpc.h index adc42542f..309cf8e67 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_fpc.h +++ b/lib/mesa/src/gallium/drivers/i915/i915_fpc.h @@ -296,7 +296,6 @@ struct i915_full_instruction { struct tgsi_instruction Instruction; /* - struct tgsi_instruction_predicate Predicate; struct tgsi_instruction_label Label; */ struct tgsi_instruction_texture Texture; diff --git a/lib/mesa/src/gallium/drivers/i915/i915_fpc_optimize.c b/lib/mesa/src/gallium/drivers/i915/i915_fpc_optimize.c index a2b6d2729..76ef20d84 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_fpc_optimize.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_fpc_optimize.c @@ -76,7 +76,6 @@ static const struct { unsigned num_dst; unsigned num_src; } op_table [TGSI_OPCODE_LAST] = { - [ TGSI_OPCODE_ABS ] = { false, false, 0, 1, 1 }, [ TGSI_OPCODE_ADD ] = { false, true, TGSI_SWIZZLE_ZERO, 1, 2 }, [ TGSI_OPCODE_CEIL ] = { false, false, 0, 1, 1 }, [ TGSI_OPCODE_CMP ] = { false, false, 0, 1, 2 }, @@ -86,7 +85,6 @@ static const struct { [ TGSI_OPCODE_DP2 ] = { false, true, TGSI_SWIZZLE_ONE, 1, 2 }, [ TGSI_OPCODE_DP3 ] = { false, true, TGSI_SWIZZLE_ONE, 1, 2 }, [ TGSI_OPCODE_DP4 ] = { false, true, TGSI_SWIZZLE_ONE, 1, 2 }, - [ TGSI_OPCODE_DPH ] = { false, false, 0, 1, 2 }, [ TGSI_OPCODE_DST ] = { false, false, 0, 1, 2 }, [ TGSI_OPCODE_END ] = { false, false, 0, 0, 0 }, [ TGSI_OPCODE_EX2 ] = { false, false, 0, 1, 1 }, @@ -107,7 +105,6 @@ static const struct { [ TGSI_OPCODE_RCP ] = { false, false, 0, 1, 1 }, [ TGSI_OPCODE_RET ] = { false, false, 0, 0, 0 }, [ TGSI_OPCODE_RSQ ] = { false, false, 0, 1, 1 }, - [ TGSI_OPCODE_SCS ] = { false, false, 0, 1, 1 }, [ TGSI_OPCODE_SEQ ] = { false, false, 0, 1, 2 }, [ TGSI_OPCODE_SGE ] = { false, false, 0, 1, 2 }, [ TGSI_OPCODE_SGT ] = { false, false, 0, 1, 2 }, @@ -116,12 +113,10 @@ static const struct { [ TGSI_OPCODE_SLT ] = { false, false, 0, 1, 2 }, [ TGSI_OPCODE_SNE ] = { false, false, 0, 1, 2 }, [ TGSI_OPCODE_SSG ] = { false, false, 0, 1, 1 }, - [ TGSI_OPCODE_SUB ] = { false, false, 0, 1, 2 }, [ TGSI_OPCODE_TEX ] = { true, false, 0, 1, 2 }, [ TGSI_OPCODE_TRUNC ] = { false, false, 0, 1, 1 }, [ TGSI_OPCODE_TXB ] = { true, false, 0, 1, 2 }, [ TGSI_OPCODE_TXP ] = { true, false, 0, 1, 2 }, - [ TGSI_OPCODE_XPD ] = { false, false, 0, 1, 2 }, }; static boolean op_has_dst(unsigned opcode) diff --git a/lib/mesa/src/gallium/drivers/i915/i915_fpc_translate.c b/lib/mesa/src/gallium/drivers/i915/i915_fpc_translate.c index 72b909294..2eaa1e64e 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_fpc_translate.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_fpc_translate.c @@ -77,21 +77,6 @@ static unsigned passthrough_program[] = 0 }; - -/* 1, -1/3!, 1/5!, -1/7! */ -static const float scs_sin_constants[4] = { 1.0, - -1.0f / (3 * 2 * 1), - 1.0f / (5 * 4 * 3 * 2 * 1), - -1.0f / (7 * 6 * 5 * 4 * 3 * 2 * 1) -}; - -/* 1, -1/2!, 1/4!, -1/6! */ -static const float scs_cos_constants[4] = { 1.0, - -1.0f / (2 * 1), - 1.0f / (4 * 3 * 2 * 1), - -1.0f / (6 * 5 * 4 * 3 * 2 * 1) -}; - /* 2*pi, -(2*pi)^3/3!, (2*pi)^5/5!, -(2*pi)^7/7! */ static const float sin_constants[4] = { 2.0 * M_PI, -8.0f * M_PI * M_PI * M_PI / (3 * 2 * 1), @@ -495,20 +480,10 @@ i915_translate_instruction(struct i915_fp_compile *p, const struct i915_full_instruction *inst, struct i915_fragment_shader *fs) { - uint writemask; uint src0, src1, src2, flags; uint tmp = 0; switch (inst->Instruction.Opcode) { - case TGSI_OPCODE_ABS: - src0 = src_vector(p, &inst->Src[0], fs); - i915_emit_arith(p, - A0_MAX, - get_result_vector(p, &inst->Dst[0]), - get_result_flags(inst), 0, - src0, negate(src0, 1, 1, 1, 1), 0); - break; - case TGSI_OPCODE_ADD: emit_simple_arith(p, inst, A0_ADD, 2, fs); break; @@ -613,17 +588,6 @@ i915_translate_instruction(struct i915_fp_compile *p, emit_simple_arith(p, inst, A0_DP4, 2, fs); break; - case TGSI_OPCODE_DPH: - src0 = src_vector(p, &inst->Src[0], fs); - src1 = src_vector(p, &inst->Src[1], fs); - - i915_emit_arith(p, - A0_DP4, - get_result_vector(p, &inst->Dst[0]), - get_result_flags(inst), 0, - swizzle(src0, X, Y, Z, ONE), src1, 0); - break; - case TGSI_OPCODE_DST: src0 = src_vector(p, &inst->Src[0], fs); src1 = src_vector(p, &inst->Src[1], fs); @@ -823,70 +787,6 @@ i915_translate_instruction(struct i915_fp_compile *p, swizzle(src0, X, X, X, X), 0, 0); break; - case TGSI_OPCODE_SCS: - src0 = src_vector(p, &inst->Src[0], fs); - tmp = i915_get_utemp(p); - - /* - * t0.xy = MUL x.xx11, x.x1111 ; x^2, x, 1, 1 - * t0 = MUL t0.xyxy t0.xx11 ; x^4, x^3, x^2, x - * t1 = MUL t0.xyyw t0.yz11 ; x^7 x^5 x^3 x - * scs.x = DP4 t1, scs_sin_constants - * t1 = MUL t0.xxz1 t0.z111 ; x^6 x^4 x^2 1 - * scs.y = DP4 t1, scs_cos_constants - */ - i915_emit_arith(p, - A0_MUL, - tmp, A0_DEST_CHANNEL_XY, 0, - swizzle(src0, X, X, ONE, ONE), - swizzle(src0, X, ONE, ONE, ONE), 0); - - i915_emit_arith(p, - A0_MUL, - tmp, A0_DEST_CHANNEL_ALL, 0, - swizzle(tmp, X, Y, X, Y), - swizzle(tmp, X, X, ONE, ONE), 0); - - writemask = inst->Dst[0].Register.WriteMask; - - if (writemask & TGSI_WRITEMASK_Y) { - uint tmp1; - - if (writemask & TGSI_WRITEMASK_X) - tmp1 = i915_get_utemp(p); - else - tmp1 = tmp; - - i915_emit_arith(p, - A0_MUL, - tmp1, A0_DEST_CHANNEL_ALL, 0, - swizzle(tmp, X, Y, Y, W), - swizzle(tmp, X, Z, ONE, ONE), 0); - - i915_emit_arith(p, - A0_DP4, - get_result_vector(p, &inst->Dst[0]), - A0_DEST_CHANNEL_Y, 0, - swizzle(tmp1, W, Z, Y, X), - i915_emit_const4fv(p, scs_sin_constants), 0); - } - - if (writemask & TGSI_WRITEMASK_X) { - i915_emit_arith(p, - A0_MUL, - tmp, A0_DEST_CHANNEL_XYZ, 0, - swizzle(tmp, X, X, Z, ONE), - swizzle(tmp, Z, ONE, ONE, ONE), 0); - - i915_emit_arith(p, - A0_DP4, - get_result_vector(p, &inst->Dst[0]), - A0_DEST_CHANNEL_X, 0, - swizzle(tmp, ONE, Z, Y, X), - i915_emit_const4fv(p, scs_cos_constants), 0); - } - break; - case TGSI_OPCODE_SEQ: /* if we're both >= and <= then we're == */ src0 = src_vector(p, &inst->Src[0], fs); @@ -1031,17 +931,6 @@ i915_translate_instruction(struct i915_fp_compile *p, negate(tmp, 1, 1, 1, 1), 0); break; - case TGSI_OPCODE_SUB: - src0 = src_vector(p, &inst->Src[0], fs); - src1 = src_vector(p, &inst->Src[1], fs); - - i915_emit_arith(p, - A0_ADD, - get_result_vector(p, &inst->Dst[0]), - get_result_flags(inst), 0, - src0, negate(src1, 1, 1, 1, 1), 0); - break; - case TGSI_OPCODE_TEX: emit_tex(p, inst, T0_TEXLD, fs); break; @@ -1058,32 +947,6 @@ i915_translate_instruction(struct i915_fp_compile *p, emit_tex(p, inst, T0_TEXLDP, fs); break; - case TGSI_OPCODE_XPD: - /* Cross product: - * result.x = src0.y * src1.z - src0.z * src1.y; - * result.y = src0.z * src1.x - src0.x * src1.z; - * result.z = src0.x * src1.y - src0.y * src1.x; - * result.w = undef; - */ - src0 = src_vector(p, &inst->Src[0], fs); - src1 = src_vector(p, &inst->Src[1], fs); - tmp = i915_get_utemp(p); - - i915_emit_arith(p, - A0_MUL, - tmp, A0_DEST_CHANNEL_ALL, 0, - swizzle(src0, Z, X, Y, ONE), - swizzle(src1, Y, Z, X, ONE), 0); - - i915_emit_arith(p, - A0_MAD, - get_result_vector(p, &inst->Dst[0]), - get_result_flags(inst), 0, - swizzle(src0, Y, Z, X, ONE), - swizzle(src1, Z, X, Y, ONE), - negate(tmp, 1, 1, 1, 0)); - break; - default: i915_program_error(p, "bad opcode %d", inst->Instruction.Opcode); p->error = 1; diff --git a/lib/mesa/src/gallium/drivers/i915/i915_screen.c b/lib/mesa/src/gallium/drivers/i915/i915_screen.c index 003f85559..8b9574e14 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_screen.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_screen.c @@ -107,7 +107,9 @@ i915_get_name(struct pipe_screen *screen) } static int -i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap cap) +i915_get_shader_param(struct pipe_screen *screen, + enum pipe_shader_type shader, + enum pipe_shader_cap cap) { switch(shader) { case PIPE_SHADER_VERTEX: @@ -144,8 +146,6 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha return 1; case PIPE_SHADER_CAP_MAX_TEMPS: return 12; /* XXX: 12 -> 32 ? */ - case PIPE_SHADER_CAP_MAX_PREDS: - return 0; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED: return 0; @@ -157,13 +157,15 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha case PIPE_SHADER_CAP_SUBROUTINES: return 0; case PIPE_SHADER_CAP_INTEGERS: + case PIPE_SHADER_CAP_INT64_ATOMICS: + case PIPE_SHADER_CAP_FP16: return 0; case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS: case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS: return I915_TEX_UNITS; - case PIPE_SHADER_CAP_DOUBLES: case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED: case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: + case PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED: case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: return 0; @@ -199,7 +201,6 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap) case PIPE_CAP_TGSI_INSTANCEID: case PIPE_CAP_VERTEX_COLOR_CLAMPED: case PIPE_CAP_USER_VERTEX_BUFFERS: - case PIPE_CAP_USER_INDEX_BUFFERS: case PIPE_CAP_USER_CONSTANT_BUFFERS: case PIPE_CAP_MIXED_COLOR_DEPTH_BITS: return 1; @@ -278,10 +279,13 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap) case PIPE_CAP_MAX_WINDOW_RECTANGLES: case PIPE_CAP_POLYGON_OFFSET_UNITS_UNSCALED: case PIPE_CAP_TGSI_ARRAY_COMPONENTS: + case PIPE_CAP_POLYGON_MODE_FILL_RECTANGLE: + case PIPE_CAP_POST_DEPTH_COVERAGE: return 0; case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS: case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME: + case PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS: case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY: case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY: case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY: @@ -293,6 +297,28 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap) case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE: case PIPE_CAP_SAMPLER_VIEW_TARGET: case PIPE_CAP_VIEWPORT_SUBPIXEL_BITS: + case PIPE_CAP_TGSI_CAN_READ_OUTPUTS: + case PIPE_CAP_NATIVE_FENCE_FD: + case PIPE_CAP_GLSL_OPTIMIZE_CONSERVATIVELY: + case PIPE_CAP_TGSI_FS_FBFETCH: + case PIPE_CAP_TGSI_MUL_ZERO_WINS: + case PIPE_CAP_DOUBLES: + case PIPE_CAP_INT64: + case PIPE_CAP_INT64_DIVMOD: + case PIPE_CAP_TGSI_TEX_TXF_LZ: + case PIPE_CAP_TGSI_CLOCK: + case PIPE_CAP_SPARSE_BUFFER_PAGE_SIZE: + case PIPE_CAP_TGSI_BALLOT: + case PIPE_CAP_TGSI_TES_LAYER_VIEWPORT: + case PIPE_CAP_CAN_BIND_CONST_BUFFER_AS_VERTEX: + case PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION: + case PIPE_CAP_BINDLESS_TEXTURE: + case PIPE_CAP_NIR_SAMPLERS_AS_DEREF: + case PIPE_CAP_QUERY_SO_OVERFLOW: + case PIPE_CAP_MEMOBJ: + case PIPE_CAP_LOAD_CONSTBUF: + case PIPE_CAP_TGSI_ANY_REG_AS_ADDRESS: + case PIPE_CAP_TILE_RASTER_ORDER: return 0; case PIPE_CAP_MAX_VIEWPORTS: @@ -604,7 +630,5 @@ i915_screen_create(struct i915_winsys *iws) i915_debug_init(is); - util_format_s3tc_init(); - return &is->base; } diff --git a/lib/mesa/src/gallium/drivers/i915/i915_state.c b/lib/mesa/src/gallium/drivers/i915/i915_state.c index 950604407..ddc27098d 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_state.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_state.c @@ -675,7 +675,7 @@ static void i915_delete_vs_state(struct pipe_context *pipe, void *shader) } static void i915_set_constant_buffer(struct pipe_context *pipe, - uint shader, uint index, + enum pipe_shader_type shader, uint index, const struct pipe_constant_buffer *cb) { struct i915_context *i915 = i915_context(pipe); @@ -1060,17 +1060,6 @@ i915_delete_vertex_elements_state(struct pipe_context *pipe, void *velems) FREE( velems ); } -static void i915_set_index_buffer(struct pipe_context *pipe, - const struct pipe_index_buffer *ib) -{ - struct i915_context *i915 = i915_context(pipe); - - if (ib) - memcpy(&i915->index_buffer, ib, sizeof(i915->index_buffer)); - else - memset(&i915->index_buffer, 0, sizeof(i915->index_buffer)); -} - static void i915_set_sample_mask(struct pipe_context *pipe, unsigned sample_mask) @@ -1119,5 +1108,4 @@ i915_init_state_functions( struct i915_context *i915 ) i915->base.sampler_view_destroy = i915_sampler_view_destroy; i915->base.set_viewport_states = i915_set_viewport_states; i915->base.set_vertex_buffers = i915_set_vertex_buffers; - i915->base.set_index_buffer = i915_set_index_buffer; } diff --git a/lib/mesa/src/gallium/drivers/i915/i915_state_derived.c b/lib/mesa/src/gallium/drivers/i915/i915_state_derived.c index dbfbc84c9..7809010d9 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_state_derived.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_state_derived.c @@ -216,6 +216,23 @@ void i915_update_derived(struct i915_context *i915) if (I915_DBG_ON(DBG_ATOMS)) i915_dump_dirty(i915, __FUNCTION__); + if (!i915->fs) { + i915->dirty &= ~(I915_NEW_FS_CONSTANTS | I915_NEW_FS); + i915->hardware_dirty &= ~(I915_HW_PROGRAM | I915_HW_CONSTANTS); + } + + if (!i915->vs) + i915->dirty &= ~I915_NEW_VS; + + if (!i915->blend) + i915->dirty &= ~I915_NEW_BLEND; + + if (!i915->rasterizer) + i915->dirty &= ~I915_NEW_RASTERIZER; + + if (!i915->depth_stencil) + i915->dirty &= ~I915_NEW_DEPTH_STENCIL; + for (i = 0; atoms[i]; i++) if (atoms[i]->dirty & i915->dirty) atoms[i]->update(i915); diff --git a/lib/mesa/src/gallium/drivers/i915/i915_state_dynamic.c b/lib/mesa/src/gallium/drivers/i915/i915_state_dynamic.c index 85b272156..434b09d4e 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_state_dynamic.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_state_dynamic.c @@ -213,7 +213,8 @@ static void upload_STIPPLE(struct i915_context *i915) /* I915_NEW_RASTERIZER */ - st[1] |= i915->rasterizer->st; + if (i915->rasterizer) + st[1] |= i915->rasterizer->st; /* I915_NEW_STIPPLE */ diff --git a/lib/mesa/src/gallium/drivers/i915/i915_state_immediate.c b/lib/mesa/src/gallium/drivers/i915/i915_state_immediate.c index b6007acdd..14566a4be 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_state_immediate.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_state_immediate.c @@ -168,11 +168,13 @@ static void upload_S6(struct i915_context *i915) /* I915_NEW_BLEND */ - LIS6 |= i915->blend->LIS6; + if (i915->blend) + LIS6 |= i915->blend->LIS6; /* I915_NEW_DEPTH */ - LIS6 |= i915->depth_stencil->depth_LIS6; + if (i915->depth_stencil) + LIS6 |= i915->depth_stencil->depth_LIS6; set_immediate(i915, I915_IMMEDIATE_S6, LIS6); } diff --git a/lib/mesa/src/gallium/drivers/i915/i915_state_static.c b/lib/mesa/src/gallium/drivers/i915/i915_state_static.c index 9a7ea227e..88b418b1a 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_state_static.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_state_static.c @@ -216,7 +216,7 @@ static void update_dst_buf_vars(struct i915_context *i915) zformat = translate_depth_format(depth_surface->format); if (is->is_i945 && tex->tiling != I915_TILE_NONE - && !i915->fs->info.writes_z) + && (i915->fs && !i915->fs->info.writes_z)) early_z = CLASSIC_EARLY_DEPTH; } else zformat = 0; diff --git a/lib/mesa/src/gallium/drivers/i915/i915_surface.c b/lib/mesa/src/gallium/drivers/i915/i915_surface.c index 27b0d9eae..57e90c6ed 100644 --- a/lib/mesa/src/gallium/drivers/i915/i915_surface.c +++ b/lib/mesa/src/gallium/drivers/i915/i915_surface.c @@ -105,7 +105,7 @@ i915_surface_copy_render(struct pipe_context *pipe, goto fallback; util_blitter_default_dst_texture(&dst_templ, dst, dst_level, dstz); - util_blitter_default_src_texture(&src_templ, src, src_level); + util_blitter_default_src_texture(i915->blitter, &src_templ, src, src_level); if (!util_blitter_is_copy_supported(i915->blitter, dst, src)) goto fallback; |