Mesa (master): clover: make module::symbol::name a string

2015-04-29 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 2d112ed96152bc62e5417472270f29966c8feece
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d112ed96152bc62e5417472270f29966c8feece

Author: EdB 
Date:   Fri Apr 24 12:59:56 2015 +0200

clover: make module::symbol::name a string

Acked-by: Francisco Jerez 
Reviewed-by: Tom Stellard 

---

 src/gallium/state_trackers/clover/api/program.cpp |3 +--
 src/gallium/state_trackers/clover/core/module.cpp |   21 +
 src/gallium/state_trackers/clover/core/module.hpp |4 ++--
 3 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/gallium/state_trackers/clover/api/program.cpp 
b/src/gallium/state_trackers/clover/api/program.cpp
index b3be2b8..913d195 100644
--- a/src/gallium/state_trackers/clover/api/program.cpp
+++ b/src/gallium/state_trackers/clover/api/program.cpp
@@ -293,8 +293,7 @@ clGetProgramInfo(cl_program d_prog, cl_program_info param,
 
case CL_PROGRAM_KERNEL_NAMES:
   buf.as_string() = fold([](const std::string &a, const module::symbol &s) 
{
-return ((a.empty() ? "" : a + ";") +
-std::string(s.name.begin(), s.name.size()));
+return ((a.empty() ? "" : a + ";") + s.name);
  }, std::string(), prog.symbols());
   break;
 
diff --git a/src/gallium/state_trackers/clover/core/module.cpp 
b/src/gallium/state_trackers/clover/core/module.cpp
index be10e35..f098b05 100644
--- a/src/gallium/state_trackers/clover/core/module.cpp
+++ b/src/gallium/state_trackers/clover/core/module.cpp
@@ -133,6 +133,27 @@ namespace {
   }
};
 
+   /// (De)serialize a string.
+   template<>
+   struct _serializer {
+  static void
+  proc(compat::ostream &os, const std::string &s) {
+ _proc(os, s.size());
+ os.write(&s[0], s.size() * sizeof(std::string::value_type));
+  }
+
+  static void
+  proc(compat::istream &is, std::string &s) {
+ s.resize(_proc(is));
+ is.read(&s[0], s.size() * sizeof(std::string::value_type));
+  }
+
+  static void
+  proc(module::size_t &sz, const std::string &s) {
+ sz += sizeof(uint32_t) + sizeof(std::string::value_type) * s.size();
+  }
+   };
+
/// (De)serialize a module::section.
template<>
struct _serializer {
diff --git a/src/gallium/state_trackers/clover/core/module.hpp 
b/src/gallium/state_trackers/clover/core/module.hpp
index ee6caf9..46112a3 100644
--- a/src/gallium/state_trackers/clover/core/module.hpp
+++ b/src/gallium/state_trackers/clover/core/module.hpp
@@ -100,12 +100,12 @@ namespace clover {
   };
 
   struct symbol {
- symbol(const compat::vector &name, resource_id section,
+ symbol(const std::string &name, resource_id section,
 size_t offset, const compat::vector &args) :
 name(name), section(section), offset(offset), args(args) { }
  symbol() : name(), section(0), offset(0), args() { }
 
- compat::vector name;
+ std::string name;
  resource_id section;
  size_t offset;
  compat::vector args;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): clover: compile all sources with c++11

2015-04-29 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 3c61ff0d89da4a8cc921d131ce0c2480ddb111a0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3c61ff0d89da4a8cc921d131ce0c2480ddb111a0

Author: EdB 
Date:   Tue Apr 21 15:49:09 2015 +0200

clover: compile all sources with c++11

Later we can remove the compat code

Reviewed-by: Francisco Jerez 
Reviewed-by: Tom Stellard 

---

 src/gallium/state_trackers/clover/Makefile.am |3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gallium/state_trackers/clover/Makefile.am 
b/src/gallium/state_trackers/clover/Makefile.am
index 62c13fa..f46d9ef 100644
--- a/src/gallium/state_trackers/clover/Makefile.am
+++ b/src/gallium/state_trackers/clover/Makefile.am
@@ -35,12 +35,13 @@ endif
 noinst_LTLIBRARIES = libclover.la libcltgsi.la libclllvm.la
 
 libcltgsi_la_CXXFLAGS = \
-   -std=c++0x \
+   -std=c++11 \
$(VISIBILITY_CXXFLAGS)
 
 libcltgsi_la_SOURCES = $(TGSI_SOURCES)
 
 libclllvm_la_CXXFLAGS = \
+   -std=c++11 \
$(VISIBILITY_CXXFLAGS) \
$(LLVM_CXXFLAGS) \
$(DEFINES) \

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): clover: remove compat classes that match std one

2015-04-29 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 1b4a1d0049646e574565bab38b8ae935c1c45fae
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1b4a1d0049646e574565bab38b8ae935c1c45fae

Author: EdB 
Date:   Fri Apr 24 12:59:54 2015 +0200

clover: remove compat classes that match std one

Acked-by: Francisco Jerez 
Reviewed-by: Tom Stellard 

---

 src/gallium/state_trackers/clover/Makefile.sources |1 -
 src/gallium/state_trackers/clover/api/program.cpp  |2 +-
 .../state_trackers/clover/core/compiler.hpp|2 +-
 src/gallium/state_trackers/clover/core/error.hpp   |6 ++--
 src/gallium/state_trackers/clover/util/compat.cpp  |   38 
 src/gallium/state_trackers/clover/util/compat.hpp  |   27 --
 6 files changed, 6 insertions(+), 70 deletions(-)

diff --git a/src/gallium/state_trackers/clover/Makefile.sources 
b/src/gallium/state_trackers/clover/Makefile.sources
index 5b3344c..03eb754 100644
--- a/src/gallium/state_trackers/clover/Makefile.sources
+++ b/src/gallium/state_trackers/clover/Makefile.sources
@@ -45,7 +45,6 @@ CPP_SOURCES := \
util/adaptor.hpp \
util/algebra.hpp \
util/algorithm.hpp \
-   util/compat.cpp \
util/compat.hpp \
util/factor.hpp \
util/functional.hpp \
diff --git a/src/gallium/state_trackers/clover/api/program.cpp 
b/src/gallium/state_trackers/clover/api/program.cpp
index 60184ed..c985690 100644
--- a/src/gallium/state_trackers/clover/api/program.cpp
+++ b/src/gallium/state_trackers/clover/api/program.cpp
@@ -216,7 +216,7 @@ clCompileProgram(cl_program d_prog, cl_uint num_devs,
 throw error(CL_INVALID_OPERATION);
 
  if (!any_of(key_equals(name), headers))
-headers.push_back(compat::pair(
+headers.push_back(std::pair(
  name, header.source()));
   },
   range(header_names, num_headers),
diff --git a/src/gallium/state_trackers/clover/core/compiler.hpp 
b/src/gallium/state_trackers/clover/core/compiler.hpp
index 7210d1e..bec8aac 100644
--- a/src/gallium/state_trackers/clover/core/compiler.hpp
+++ b/src/gallium/state_trackers/clover/core/compiler.hpp
@@ -29,7 +29,7 @@
 #include "pipe/p_defines.h"
 
 namespace clover {
-   typedef compat::vector > header_map;
 
module compile_program_llvm(const compat::string &source,
diff --git a/src/gallium/state_trackers/clover/core/error.hpp 
b/src/gallium/state_trackers/clover/core/error.hpp
index 7b010f1..45a38c1 100644
--- a/src/gallium/state_trackers/clover/core/error.hpp
+++ b/src/gallium/state_trackers/clover/core/error.hpp
@@ -25,6 +25,8 @@
 
 #include "CL/cl.h"
 
+#include 
+
 #include "util/compat.hpp"
 
 namespace clover {
@@ -50,10 +52,10 @@ namespace clover {
/// Class that represents an error that can be converted to an
/// OpenCL status code.
///
-   class error : public compat::runtime_error {
+   class error : public std::runtime_error {
public:
   error(cl_int code, compat::string what = "") :
- compat::runtime_error(what), code(code) {
+ std::runtime_error(what), code(code) {
   }
 
   cl_int get() const {
diff --git a/src/gallium/state_trackers/clover/util/compat.cpp 
b/src/gallium/state_trackers/clover/util/compat.cpp
deleted file mode 100644
index 80d5b3e..000
--- a/src/gallium/state_trackers/clover/util/compat.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Copyright 2013 Francisco Jerez
-//
-// 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 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 "util/compat.hpp"
-
-using namespace clover::compat;
-
-exception::~exception() {
-}
-
-const char *
-exception::what() const {
-   return "";
-}
-
-const char *
-runtime_error::what() const {
-   return _what.c_str();
-}
diff --git a/src/gallium/state_trackers/clover/util/compat.hpp 
b/src/gallium/state_trackers/clover/util/compat.hpp
index 735994f..ea7d3a0 100644
--- a/src/gallium/state_trackers/clover/util/compat.hpp
+++ b/src/gallium/sta

Mesa (master): clover: remove compat::string

2015-04-29 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 5ca9b23319db66d9768d46c0a7504b7bb079164a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5ca9b23319db66d9768d46c0a7504b7bb079164a

Author: EdB 
Date:   Fri Apr 24 12:59:55 2015 +0200

clover: remove compat::string

Acked-by: Francisco Jerez 
Reviewed-by: Tom Stellard 

---

 src/gallium/state_trackers/clover/api/program.cpp  |2 +-
 .../state_trackers/clover/core/compiler.hpp|   14 +--
 src/gallium/state_trackers/clover/core/error.hpp   |4 +-
 src/gallium/state_trackers/clover/core/program.cpp |2 +-
 .../state_trackers/clover/llvm/invocation.cpp  |   22 ++---
 .../state_trackers/clover/tgsi/compiler.cpp|7 +-
 src/gallium/state_trackers/clover/util/compat.hpp  |  104 
 7 files changed, 26 insertions(+), 129 deletions(-)

diff --git a/src/gallium/state_trackers/clover/api/program.cpp 
b/src/gallium/state_trackers/clover/api/program.cpp
index c985690..b3be2b8 100644
--- a/src/gallium/state_trackers/clover/api/program.cpp
+++ b/src/gallium/state_trackers/clover/api/program.cpp
@@ -216,7 +216,7 @@ clCompileProgram(cl_program d_prog, cl_uint num_devs,
 throw error(CL_INVALID_OPERATION);
 
  if (!any_of(key_equals(name), headers))
-headers.push_back(std::pair(
+headers.push_back(std::pair(
  name, header.source()));
   },
   range(header_names, num_headers),
diff --git a/src/gallium/state_trackers/clover/core/compiler.hpp 
b/src/gallium/state_trackers/clover/core/compiler.hpp
index bec8aac..62c0f47 100644
--- a/src/gallium/state_trackers/clover/core/compiler.hpp
+++ b/src/gallium/state_trackers/clover/core/compiler.hpp
@@ -29,17 +29,17 @@
 #include "pipe/p_defines.h"
 
 namespace clover {
-   typedef compat::vector > header_map;
+   typedef compat::vector > header_map;
 
-   module compile_program_llvm(const compat::string &source,
+   module compile_program_llvm(const std::string &source,
const header_map &headers,
pipe_shader_ir ir,
-   const compat::string &target,
-   const compat::string &opts,
-   compat::string &r_log);
+   const std::string &target,
+   const std::string &opts,
+   std::string &r_log);
 
-   module compile_program_tgsi(const compat::string &source);
+   module compile_program_tgsi(const std::string &source);
 }
 
 #endif
diff --git a/src/gallium/state_trackers/clover/core/error.hpp 
b/src/gallium/state_trackers/clover/core/error.hpp
index 45a38c1..805a0ec 100644
--- a/src/gallium/state_trackers/clover/core/error.hpp
+++ b/src/gallium/state_trackers/clover/core/error.hpp
@@ -54,7 +54,7 @@ namespace clover {
///
class error : public std::runtime_error {
public:
-  error(cl_int code, compat::string what = "") :
+  error(cl_int code, std::string what = "") :
  std::runtime_error(what), code(code) {
   }
 
@@ -68,7 +68,7 @@ namespace clover {
 
class build_error : public error {
public:
-  build_error(const compat::string &what = "") :
+  build_error(const std::string &what = "") :
  error(CL_COMPILE_PROGRAM_FAILURE, what) {
   }
};
diff --git a/src/gallium/state_trackers/clover/core/program.cpp 
b/src/gallium/state_trackers/clover/core/program.cpp
index c07548c..50ac01b 100644
--- a/src/gallium/state_trackers/clover/core/program.cpp
+++ b/src/gallium/state_trackers/clover/core/program.cpp
@@ -52,7 +52,7 @@ program::build(const ref_vector &devs, const char 
*opts,
 
  _opts.insert({ &dev, opts });
 
- compat::string log;
+ std::string log;
 
  try {
 auto module = (dev.ir_format() == PIPE_SHADER_IR_TGSI ?
diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp 
b/src/gallium/state_trackers/clover/llvm/invocation.cpp
index e07d95b..2157909 100644
--- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
+++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
@@ -136,7 +136,7 @@ namespace {
 const std::string &name, const std::string &triple,
 const std::string &processor, const std::string &opts,
 clang::LangAS::Map& address_spaces, unsigned 
&optimization_level,
-compat::string &r_log) {
+std::string &r_log) {
 
   clang::CompilerInstance c;
   clang::EmitLLVMOnlyAction act(&llvm_ctx);
@@ -470,7 +470,7 @@ namespace {
emit_code(LLVMTargetMachineRef tm, LLVMModuleRef mod,
  LLVMCodeGenFileType file_type,
  LLVMMemoryBufferRef *out_buffer,
- compat::string &r_log) {
+ std::string &r_log) {
   LLVMBool err;
   char *err_message = NULL;
 
@@ -491,7 +491,7 @@ namespace {
std::vector
compile_native(const llvm::Modul

Mesa (master): r300: do not link against libdrm_intel

2015-04-29 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: b124dc2b70a1ba546d1ce46578036d263a4287fe
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b124dc2b70a1ba546d1ce46578036d263a4287fe

Author: Emil Velikov 
Date:   Wed Apr 15 14:44:02 2015 +0100

r300: do not link against libdrm_intel

Accidentally added since the introduction of the file.

Cc: "10.4 10.5" 
Signed-off-by: Emil Velikov 
Reviewed-by: Marek Olšák 

---

 src/gallium/drivers/r300/Automake.inc |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r300/Automake.inc 
b/src/gallium/drivers/r300/Automake.inc
index 9334973..d4ddc40 100644
--- a/src/gallium/drivers/r300/Automake.inc
+++ b/src/gallium/drivers/r300/Automake.inc
@@ -5,7 +5,7 @@ TARGET_CPPFLAGS += -DGALLIUM_R300
 TARGET_LIB_DEPS += \
$(top_builddir)/src/gallium/drivers/r300/libr300.la \
$(RADEON_LIBS) \
-   $(INTEL_LIBS)
+   $(LIBDRM_LIBS)
 
 TARGET_RADEON_WINSYS = \
$(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Don' t try to apply the opt_sampler_eot extension for vs

2015-04-29 Thread Neil Roberts
Module: Mesa
Branch: master
Commit: 5d4f085a43ccd1122301421f2013e42a3f0a7604
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5d4f085a43ccd1122301421f2013e42a3f0a7604

Author: Neil Roberts 
Date:   Tue Apr 28 14:20:06 2015 +0100

i965: Don't try to apply the opt_sampler_eot extension for vs

The opt_sampler_eot optimisation of fs_visitor effectively assumes
that it is running on a fragment shader because it casts the program
key to a brw_wm_prog_key. However on Skylake fs_visitor can also be
used for vertex shaders. It looks like this usually works anyway
because the optimisation is skipped if key->nr_color_regions != 1.
However for a vertex shader the key is actually a brw_vs_prog_key so
the space for nr_color_regions is probably taken up by
key->base.program_string_id. This can end up making nr_color_regions
be 1 in which case the function will later assert when the last
instruction is not FS_OPCODE_FB_WRITE. This was making the DEQP test
suite assert. Presumably this only happens there because that compiles
a lot of shaders so it would end up with a high value for
program_string_id.

Reviewed-by: Kristian Høgsberg 
Reviewed-by: Kenneth Graunke 

---

 src/mesa/drivers/dri/i965/brw_fs.cpp |3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp 
b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 61ee056..255ddf4 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -2548,6 +2548,9 @@ fs_visitor::opt_sampler_eot()
 {
brw_wm_prog_key *key = (brw_wm_prog_key*) this->key;
 
+   if (stage != MESA_SHADER_FRAGMENT)
+  return false;
+
if (devinfo->gen < 9 && !devinfo->is_cherryview)
   return false;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): clover: remove util/compat

2015-04-29 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: d8f817ae7f4241a9ea23140805aaeb724a0ac851
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d8f817ae7f4241a9ea23140805aaeb724a0ac851

Author: EdB 
Date:   Thu Apr 23 20:13:51 2015 +0200

clover: remove util/compat

Acked-by: Francisco Jerez 
Reviewed-by: Tom Stellard 

---

 src/gallium/state_trackers/clover/Makefile.sources |1 -
 src/gallium/state_trackers/clover/api/program.cpp  |   14 +-
 .../state_trackers/clover/core/compiler.hpp|4 +-
 src/gallium/state_trackers/clover/core/error.hpp   |2 -
 src/gallium/state_trackers/clover/core/kernel.cpp  |2 +-
 src/gallium/state_trackers/clover/core/module.cpp  |   39 +--
 src/gallium/state_trackers/clover/core/module.hpp  |   19 +-
 src/gallium/state_trackers/clover/core/program.cpp |2 +-
 src/gallium/state_trackers/clover/core/program.hpp |2 +-
 .../state_trackers/clover/llvm/invocation.cpp  |   20 +-
 .../state_trackers/clover/tgsi/compiler.cpp|5 +-
 src/gallium/state_trackers/clover/util/compat.hpp  |  313 
 12 files changed, 56 insertions(+), 367 deletions(-)

diff --git a/src/gallium/state_trackers/clover/Makefile.sources 
b/src/gallium/state_trackers/clover/Makefile.sources
index 03eb754..fa96774 100644
--- a/src/gallium/state_trackers/clover/Makefile.sources
+++ b/src/gallium/state_trackers/clover/Makefile.sources
@@ -45,7 +45,6 @@ CPP_SOURCES := \
util/adaptor.hpp \
util/algebra.hpp \
util/algorithm.hpp \
-   util/compat.hpp \
util/factor.hpp \
util/functional.hpp \
util/lazy.hpp \
diff --git a/src/gallium/state_trackers/clover/api/program.cpp 
b/src/gallium/state_trackers/clover/api/program.cpp
index 913d195..e9b1f38 100644
--- a/src/gallium/state_trackers/clover/api/program.cpp
+++ b/src/gallium/state_trackers/clover/api/program.cpp
@@ -23,6 +23,8 @@
 #include "api/util.hpp"
 #include "core/program.hpp"
 
+#include 
+
 using namespace clover;
 
 namespace {
@@ -94,12 +96,12 @@ clCreateProgramWithBinary(cl_context d_ctx, cl_uint n,
 return { CL_INVALID_VALUE, {} };
 
  try {
-compat::istream::buffer_t bin(p, l);
-compat::istream s(bin);
+std::stringbuf bin( { (char*)p, l } );
+std::istream s(&bin);
 
 return { CL_SUCCESS, module::deserialize(s) };
 
- } catch (compat::istream::error &e) {
+ } catch (std::istream::failure &e) {
 return { CL_INVALID_BINARY, {} };
  }
   },
@@ -279,10 +281,10 @@ clGetProgramInfo(cl_program d_prog, cl_program_info param,
 
case CL_PROGRAM_BINARIES:
   buf.as_matrix() = map([&](const device &dev) {
-compat::ostream::buffer_t bin;
-compat::ostream s(bin);
+std::stringbuf bin;
+std::ostream s(&bin);
 prog.binary(dev).serialize(s);
-return bin;
+return bin.str();
  },
  prog.devices());
   break;
diff --git a/src/gallium/state_trackers/clover/core/compiler.hpp 
b/src/gallium/state_trackers/clover/core/compiler.hpp
index 62c0f47..c68aa39 100644
--- a/src/gallium/state_trackers/clover/core/compiler.hpp
+++ b/src/gallium/state_trackers/clover/core/compiler.hpp
@@ -23,14 +23,12 @@
 #ifndef CLOVER_CORE_COMPILER_HPP
 #define CLOVER_CORE_COMPILER_HPP
 
-#include "util/compat.hpp"
 #include "core/error.hpp"
 #include "core/module.hpp"
 #include "pipe/p_defines.h"
 
 namespace clover {
-   typedef compat::vector > header_map;
+   typedef std::vector > header_map;
 
module compile_program_llvm(const std::string &source,
const header_map &headers,
diff --git a/src/gallium/state_trackers/clover/core/error.hpp 
b/src/gallium/state_trackers/clover/core/error.hpp
index 805a0ec..eb65d62 100644
--- a/src/gallium/state_trackers/clover/core/error.hpp
+++ b/src/gallium/state_trackers/clover/core/error.hpp
@@ -27,8 +27,6 @@
 
 #include 
 
-#include "util/compat.hpp"
-
 namespace clover {
class command_queue;
class context;
diff --git a/src/gallium/state_trackers/clover/core/kernel.cpp 
b/src/gallium/state_trackers/clover/core/kernel.cpp
index 442762c..0756f06 100644
--- a/src/gallium/state_trackers/clover/core/kernel.cpp
+++ b/src/gallium/state_trackers/clover/core/kernel.cpp
@@ -192,7 +192,7 @@ kernel::exec_context::bind(intrusive_ptr _q,
   if (st)
  _q->pipe->delete_compute_state(_q->pipe, st);
 
-  cs.prog = msec.data.begin();
+  cs.prog = &(msec.data[0]);
   cs.req_local_mem = mem_local;
   cs.req_input_mem = input.size();
   st = q->pipe->create_compute_state(q->pipe, &cs);
diff --git a/src/gallium/state_trackers/clover/core/module.cpp 
b/src/gallium/state_trackers/clover/core/module.cpp
index f098b05..a6c5b98 100644
--- a/src/gallium/state_trackers/clover/core/module.cpp
+++ b/src/gallium/state_trackers/clover/core/module.cpp
@@ -21,6 +21,7 @@
 //
 
 #include 
+#include 
 
 #inclu

Mesa (master): winsys/radeon: move radeon_winsys.h to drivers/radeon

2015-04-29 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: dcfbc006b6b07d41338b87c64cdc01c36608087b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dcfbc006b6b07d41338b87c64cdc01c36608087b

Author: Marek Olšák 
Date:   Thu Apr 16 22:50:33 2015 +0200

winsys/radeon: move radeon_winsys.h to drivers/radeon

---

 src/gallium/auxiliary/target-helpers/inline_drm_helper.h |6 +++---
 src/gallium/drivers/r300/r300_chipset.c  |2 +-
 src/gallium/drivers/r300/r300_context.h  |1 -
 src/gallium/drivers/r300/r300_screen.h   |2 +-
 src/gallium/drivers/radeon/Makefile.sources  |3 ++-
 src/gallium/drivers/radeon/r600_pipe_common.h|2 +-
 src/gallium/drivers/radeon/radeon_uvd.c  |1 -
 src/gallium/drivers/radeon/radeon_uvd.h  |2 +-
 src/gallium/drivers/radeon/radeon_vce.c  |1 -
 src/gallium/drivers/radeon/radeon_vce_40_2_2.c   |1 -
 src/gallium/drivers/radeon/radeon_video.c|1 -
 src/gallium/drivers/radeon/radeon_video.h|2 +-
 .../{winsys/radeon/drm => drivers/radeon}/radeon_winsys.h|0
 src/gallium/drivers/radeonsi/si_pm4.h|2 +-
 src/gallium/targets/pipe-loader/pipe_r300.c  |2 +-
 src/gallium/targets/pipe-loader/pipe_r600.c  |2 +-
 src/gallium/targets/pipe-loader/pipe_radeonsi.c  |2 +-
 src/gallium/winsys/radeon/drm/Makefile.sources   |3 +--
 src/gallium/winsys/radeon/drm/radeon_drm_winsys.h|2 +-
 19 files changed, 16 insertions(+), 21 deletions(-)

diff --git a/src/gallium/auxiliary/target-helpers/inline_drm_helper.h 
b/src/gallium/auxiliary/target-helpers/inline_drm_helper.h
index 542ad43..d3c331d 100644
--- a/src/gallium/auxiliary/target-helpers/inline_drm_helper.h
+++ b/src/gallium/auxiliary/target-helpers/inline_drm_helper.h
@@ -28,19 +28,19 @@
 #endif
 
 #if GALLIUM_R300
-#include "radeon/drm/radeon_winsys.h"
+#include "radeon/radeon_winsys.h"
 #include "radeon/drm/radeon_drm_public.h"
 #include "r300/r300_public.h"
 #endif
 
 #if GALLIUM_R600
-#include "radeon/drm/radeon_winsys.h"
+#include "radeon/radeon_winsys.h"
 #include "radeon/drm/radeon_drm_public.h"
 #include "r600/r600_public.h"
 #endif
 
 #if GALLIUM_RADEONSI
-#include "radeon/drm/radeon_winsys.h"
+#include "radeon/radeon_winsys.h"
 #include "radeon/drm/radeon_drm_public.h"
 #include "radeonsi/si_public.h"
 #endif
diff --git a/src/gallium/drivers/r300/r300_chipset.c 
b/src/gallium/drivers/r300/r300_chipset.c
index 7a83611..c1c7ce3 100644
--- a/src/gallium/drivers/r300/r300_chipset.c
+++ b/src/gallium/drivers/r300/r300_chipset.c
@@ -22,7 +22,7 @@
  * USE OR OTHER DEALINGS IN THE SOFTWARE. */
 
 #include "r300_chipset.h"
-#include "radeon/drm/radeon_winsys.h"
+#include "radeon/radeon_winsys.h"
 
 #include "util/u_debug.h"
 #include "util/u_memory.h"
diff --git a/src/gallium/drivers/r300/r300_context.h 
b/src/gallium/drivers/r300/r300_context.h
index 4d2b153..3873c9a 100644
--- a/src/gallium/drivers/r300/r300_context.h
+++ b/src/gallium/drivers/r300/r300_context.h
@@ -36,7 +36,6 @@
 #include "r300_defines.h"
 #include "r300_screen.h"
 #include "compiler/radeon_regalloc.h"
-#include "radeon/drm/radeon_winsys.h"
 
 struct u_upload_mgr;
 struct r300_context;
diff --git a/src/gallium/drivers/r300/r300_screen.h 
b/src/gallium/drivers/r300/r300_screen.h
index f0dd3c6..7bba39b 100644
--- a/src/gallium/drivers/r300/r300_screen.h
+++ b/src/gallium/drivers/r300/r300_screen.h
@@ -25,7 +25,7 @@
 #define R300_SCREEN_H
 
 #include "r300_chipset.h"
-#include "radeon/drm/radeon_winsys.h"
+#include "radeon/radeon_winsys.h"
 #include "pipe/p_screen.h"
 #include "util/u_slab.h"
 #include "os/os_thread.h"
diff --git a/src/gallium/drivers/radeon/Makefile.sources 
b/src/gallium/drivers/radeon/Makefile.sources
index 469f6d1..c655fe5 100644
--- a/src/gallium/drivers/radeon/Makefile.sources
+++ b/src/gallium/drivers/radeon/Makefile.sources
@@ -15,7 +15,8 @@ C_SOURCES := \
radeon_vce.c \
radeon_vce.h \
radeon_video.c \
-   radeon_video.h
+   radeon_video.h \
+   radeon_winsys.h
 
 LLVM_C_FILES := \
radeon_elf_util.c \
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h 
b/src/gallium/drivers/radeon/r600_pipe_common.h
index faa6e0d..f1c9503 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -34,7 +34,7 @@
 
 #include 
 
-#include "radeon/drm/radeon_winsys.h"
+#include "radeon/radeon_winsys.h"
 
 #include "util/u_blitter.h"
 #include "util/u_double_list.h"
diff --git a/src/gallium/drivers/radeon/radeon_uvd.c 
b/src/gallium/drivers/radeon/radeon_uvd.c
index 9668d7d..4d4b54b 100644
--- a/src/gallium/drivers/radeon/radeon_uvd.c
+++ b/src/gallium/d

Mesa (master): winsys/radeon: add a private interface for radeon_surface

2015-04-29 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: a582b22c6382f24d921e9fe8a24917100c1396f1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a582b22c6382f24d921e9fe8a24917100c1396f1

Author: Marek Olšák 
Date:   Thu Apr 16 22:53:04 2015 +0200

winsys/radeon: add a private interface for radeon_surface

---

 src/gallium/drivers/r600/evergreen_state.c |6 +-
 src/gallium/drivers/r600/r600_uvd.c|2 +-
 src/gallium/drivers/radeon/r600_pipe_common.h  |2 +-
 src/gallium/drivers/radeon/r600_texture.c  |   12 +-
 src/gallium/drivers/radeon/radeon_uvd.c|6 +-
 src/gallium/drivers/radeon/radeon_uvd.h|4 +-
 src/gallium/drivers/radeon/radeon_vce.c|2 +-
 src/gallium/drivers/radeon/radeon_vce.h|6 +-
 src/gallium/drivers/radeon/radeon_video.c  |2 +-
 src/gallium/drivers/radeon/radeon_video.h  |2 +-
 src/gallium/drivers/radeon/radeon_winsys.h |   79 -
 src/gallium/drivers/radeonsi/si_state.c|4 +-
 src/gallium/drivers/radeonsi/si_uvd.c  |4 +-
 src/gallium/winsys/radeon/drm/Makefile.sources |1 +
 src/gallium/winsys/radeon/drm/radeon_drm_surface.c |  180 
 src/gallium/winsys/radeon/drm/radeon_drm_winsys.c  |   20 +--
 src/gallium/winsys/radeon/drm/radeon_drm_winsys.h  |1 +
 17 files changed, 286 insertions(+), 47 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index 266e372..4ddbc0b 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -664,7 +664,7 @@ evergreen_create_sampler_view_custom(struct pipe_context 
*ctx,
unsigned height, depth, width;
unsigned macro_aspect, tile_split, bankh, bankw, nbanks, fmask_bankh;
enum pipe_format pipe_format = state->format;
-   struct radeon_surface_level *surflevel;
+   struct radeon_surf_level *surflevel;
unsigned base_level, first_level, last_level;
uint64_t va;
 
@@ -918,7 +918,7 @@ static void evergreen_emit_scissor_state(struct 
r600_context *rctx, struct r600_
 /**
  * This function intializes the CB* register values for RATs.  It is meant
  * to be used for 1D aligned buffers that do not have an associated
- * radeon_surface.
+ * radeon_surf.
  */
 void evergreen_init_color_surface_rat(struct r600_context *rctx,
struct r600_surface *surf)
@@ -1163,7 +1163,7 @@ static void evergreen_init_depth_surface(struct 
r600_context *rctx,
struct r600_screen *rscreen = rctx->screen;
struct r600_texture *rtex = (struct r600_texture*)surf->base.texture;
unsigned level = surf->base.u.tex.level;
-   struct radeon_surface_level *levelinfo = &rtex->surface.level[level];
+   struct radeon_surf_level *levelinfo = &rtex->surface.level[level];
uint64_t offset;
unsigned format, array_mode;
unsigned macro_aspect, tile_split, bankh, bankw, nbanks;
diff --git a/src/gallium/drivers/r600/r600_uvd.c 
b/src/gallium/drivers/r600/r600_uvd.c
index ee5288f..357e901 100644
--- a/src/gallium/drivers/r600/r600_uvd.c
+++ b/src/gallium/drivers/r600/r600_uvd.c
@@ -57,7 +57,7 @@ struct pipe_video_buffer *r600_video_buffer_create(struct 
pipe_context *pipe,
 {
struct r600_context *ctx = (struct r600_context *)pipe;
struct r600_texture *resources[VL_NUM_COMPONENTS] = {};
-   struct radeon_surface* surfaces[VL_NUM_COMPONENTS] = {};
+   struct radeon_surf* surfaces[VL_NUM_COMPONENTS] = {};
struct pb_buffer **pbs[VL_NUM_COMPONENTS] = {};
const enum pipe_format *resource_formats;
struct pipe_video_buffer template;
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h 
b/src/gallium/drivers/radeon/r600_pipe_common.h
index f1c9503..8d885ab 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -199,7 +199,7 @@ struct r600_texture {
unsigneddirty_level_mask; /* each bit says if 
that mipmap is compressed */
struct r600_texture *flushed_depth_texture;
boolean is_flushing_texture;
-   struct radeon_surface   surface;
+   struct radeon_surf  surface;
 
/* Colorbuffer compression and fast clear. */
struct r600_fmask_info  fmask;
diff --git a/src/gallium/drivers/radeon/r600_texture.c 
b/src/gallium/drivers/radeon/r600_texture.c
index ab8ce7b..dc510c9 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -119,7 +119,7 @@ static unsigned r600_texture_get_offset(struct r600_texture 
*rtex, unsigned leve
 }
 
 static int r600_init_surface(struct r600_common_screen *rscreen,
-struct radeon_surface *surface,
+struct radeon_surf 

Mesa (master): glx: Massive update of comments in struct extension_info

2015-04-29 Thread Ian Romanick
Module: Mesa
Branch: master
Commit: 2c7e289d8b1d3c63ab55b64ab3961067fd5a1985
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2c7e289d8b1d3c63ab55b64ab3961067fd5a1985

Author: Ian Romanick 
Date:   Wed Apr 15 11:34:50 2015 -0700

glx: Massive update of comments in struct extension_info

In response to another patch, Emil asked for some clarification how this
stuff works.  Rather than just reply to the e-mail, I decided to update
the exlanation in the code.

Signed-off-by: Ian Romanick 
Cc: Emil Velikov 

---

 src/glx/glxextensions.c |   69 ---
 1 file changed, 65 insertions(+), 4 deletions(-)

diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c
index a326f0d..cb8cd66 100644
--- a/src/glx/glxextensions.c
+++ b/src/glx/glxextensions.c
@@ -61,12 +61,73 @@ struct extension_info
 */
unsigned char version_major;
unsigned char version_minor;
+
+   /**
+* The client (i.e., libGL) supports this extension.
+*
+* Except during bring up, all extensions should have this set to Y.  There
+* are a few cases of extensions that have partial (or speculative)
+* support, but these are rare.  There also shouldn't be any new ones
+* added.
+*
+* Generally, extensions require server support and ::client_support to be
+* enabled.  If the display is capable of direct rendering,
+* ::direct_support is also required.
+*
+* \sa ::client_only
+*/
unsigned char client_support;
+
+   /**
+* The direct-renderer (e.g., i965_dri.so) supports this extension.
+*
+* For cases where all of the infrastructure to support the extension is a
+* required part of the loader/driver interface, this can default to Y.
+* For most cases, extended functionality, usually in the form of DRI2
+* extensions, is necessary to support the extension.  The loader will set
+* the flag true if all the requirements are met.
+*
+* If the display is capable of direct rendering, ::direct_support is
+* required for the extension to be enabled.
+*/
unsigned char direct_support;
-   unsigned char client_only;/** Is the extension client-side only? */
-   unsigned char direct_only;/** Is the extension for direct
- * contexts only?
- */
+
+   /**
+* The extension depends only on client support.
+*
+* This is for extensions like GLX_ARB_get_proc_address that are contained
+* entirely in the client library.  There is no dependency on the server or
+* the direct-renderer.
+*
+* These extensions will be enabled if ::client_support is set.
+*
+* \note
+* An extension \b cannot be both client-only and direct-only because being
+* direct-only implies a dependency on the direct renderer.
+*
+* \sa ::client_support, ::direct_only
+*/
+   unsigned char client_only;
+
+   /**
+* The extension only functions with direct-rendering contexts
+*
+* The extension has no GLX protocol, and, therefore, no explicit
+* dependency on the server.  The functionality is contained entirely in
+* the client library and the direct renderer.  A few of the swap-related
+* extensions are intended to behave this way.
+*
+* These extensions will be enabled if both ::client_support and
+* ::direct_support are set.
+*
+* \note
+* An extension \b cannot be both client-only and direct-only because being
+* client-only implies that all functionality is outside the
+* direct-renderer.
+*
+* \sa ::direct_support, ::client_only
+*/
+   unsigned char direct_only;
 };
 
 /* *INDENT-OFF* */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Expose and refactor brw_update_renderbuffer_surfaces( )

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: c15e20d8f6f6d632ad55d444149c2a12d0dcc515
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c15e20d8f6f6d632ad55d444149c2a12d0dcc515

Author: Topi Pohjolainen 
Date:   Thu Mar 19 11:09:54 2015 +0200

i965: Expose and refactor brw_update_renderbuffer_surfaces()

Note that brw_update_renderbuffer_surfaces() already had a helper
variable which was used in parallel to direct access of the current
draw buffer of the context.

Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_state.h|5 +++
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c |   51 +-
 2 files changed, 35 insertions(+), 21 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_state.h 
b/src/mesa/drivers/dri/i965/brw_state.h
index cfa67b6..83058b9 100644
--- a/src/mesa/drivers/dri/i965/brw_state.h
+++ b/src/mesa/drivers/dri/i965/brw_state.h
@@ -233,6 +233,11 @@ GLuint translate_tex_format(struct brw_context *brw,
 int brw_get_texture_swizzle(const struct gl_context *ctx,
 const struct gl_texture_object *t);
 
+void brw_update_renderbuffer_surfaces(struct brw_context *brw,
+  const struct gl_framebuffer *fb,
+  uint32_t render_target_start,
+  uint32_t *surf_offset);
+
 /* gen7_wm_surface_state.c */
 uint32_t gen7_surface_tiling_mode(uint32_t tiling);
 uint32_t gen7_surface_msaa_bits(unsigned num_samples, enum intel_msaa_layout 
l);
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 
b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index d451940..25fb543 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -731,40 +731,49 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
 /**
  * Construct SURFACE_STATE objects for renderbuffers/draw buffers.
  */
-static void
-brw_update_renderbuffer_surfaces(struct brw_context *brw)
+void
+brw_update_renderbuffer_surfaces(struct brw_context *brw,
+ const struct gl_framebuffer *fb,
+ uint32_t render_target_start,
+ uint32_t *surf_offset)
 {
-   struct gl_context *ctx = &brw->ctx;
-   /* _NEW_BUFFERS */
-   const struct gl_framebuffer *fb = ctx->DrawBuffer;
GLuint i;
 
-   /* _NEW_BUFFERS | _NEW_COLOR */
/* Update surfaces for drawing buffers */
-   if (ctx->DrawBuffer->_NumColorDrawBuffers >= 1) {
-  for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) {
- const uint32_t surf_index =
-brw->wm.prog_data->binding_table.render_target_start + i;
+   if (fb->_NumColorDrawBuffers >= 1) {
+  for (i = 0; i < fb->_NumColorDrawBuffers; i++) {
+ const uint32_t surf_index = render_target_start + i;
 
-if (intel_renderbuffer(ctx->DrawBuffer->_ColorDrawBuffers[i])) {
-brw->wm.base.surf_offset[surf_index] =
+if (intel_renderbuffer(fb->_ColorDrawBuffers[i])) {
+surf_offset[surf_index] = 
brw->vtbl.update_renderbuffer_surface(
-  brw, ctx->DrawBuffer->_ColorDrawBuffers[i],
-  ctx->DrawBuffer->MaxNumLayers > 0, i, surf_index);
+  brw, fb->_ColorDrawBuffers[i],
+  fb->MaxNumLayers > 0, i, surf_index);
 } else {
 brw->vtbl.emit_null_surface_state(
brw, fb->Width, fb->Height, fb->Visual.samples,
-   &brw->wm.base.surf_offset[surf_index]);
+   &surf_offset[surf_index]);
 }
   }
} else {
-  const uint32_t surf_index =
- brw->wm.prog_data->binding_table.render_target_start;
-
+  const uint32_t surf_index = render_target_start;
   brw->vtbl.emit_null_surface_state(
  brw, fb->Width, fb->Height, fb->Visual.samples,
- &brw->wm.base.surf_offset[surf_index]);
+ &surf_offset[surf_index]);
}
+}
+
+static void
+update_renderbuffer_surfaces(struct brw_context *brw)
+{
+   const struct gl_context *ctx = &brw->ctx;
+
+   /* _NEW_BUFFERS | _NEW_COLOR */
+   const struct gl_framebuffer *fb = ctx->DrawBuffer;
+   brw_update_renderbuffer_surfaces(
+  brw, fb,
+  brw->wm.prog_data->binding_table.render_target_start,
+  brw->wm.base.surf_offset);
brw->ctx.NewDriverState |= BRW_NEW_SURFACES;
 }
 
@@ -775,7 +784,7 @@ const struct brw_tracked_state brw_renderbuffer_surfaces = {
   .brw = BRW_NEW_BATCH |
  BRW_NEW_FS_PROG_DATA,
},
-   .emit = brw_update_renderbuffer_surfaces,
+   .emit = update_renderbuffer_surfaces,
 };
 
 const struct brw_tracked_state gen6_renderbuffer_surfaces = {
@@ -783,7 +792,7 @@ const struct brw_tracked_state gen6_renderbuffer_surfaces = 
{
   .mesa = _NEW_BUFFERS,
   .brw = BRW_NEW_BATCH,
},
-   .emit = brw_update_renderbuffer

Mesa (master): i965/ps: Use SET_FIELD() for sampler count

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: f39846fb57c2b4d29b65a40019ba55219b062117
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f39846fb57c2b4d29b65a40019ba55219b062117

Author: Topi Pohjolainen 
Date:   Wed Apr 29 20:35:45 2015 +0300

i965/ps: Use SET_FIELD() for sampler count

The value is actually clamped to 0-16 as sample state pointer
can be used to support more than 16 samplers.

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_defines.h   |1 +
 src/mesa/drivers/dri/i965/gen7_wm_state.c |5 +++--
 src/mesa/drivers/dri/i965/gen8_ps_state.c |5 +++--
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_defines.h 
b/src/mesa/drivers/dri/i965/brw_defines.h
index bd3218a..7d55d85 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -2259,6 +2259,7 @@ enum brw_wm_barycentric_interp_mode {
 # define GEN7_PS_SPF_MODE  (1 << 31)
 # define GEN7_PS_VECTOR_MASK_ENABLE(1 << 30)
 # define GEN7_PS_SAMPLER_COUNT_SHIFT   27
+# define GEN7_PS_SAMPLER_COUNT_MASK INTEL_MASK(29, 27)
 # define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT   18
 # define GEN7_PS_FLOATING_POINT_MODE_IEEE_754  (0 << 16)
 # define GEN7_PS_FLOATING_POINT_MODE_ALT   (1 << 16)
diff --git a/src/mesa/drivers/dri/i965/gen7_wm_state.c 
b/src/mesa/drivers/dri/i965/gen7_wm_state.c
index 923414e..55a1acd 100644
--- a/src/mesa/drivers/dri/i965/gen7_wm_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_wm_state.c
@@ -135,8 +135,9 @@ upload_ps_state(struct brw_context *brw)
 
dw2 = dw4 = dw5 = ksp2 = 0;
 
-   dw2 |=
-  (ALIGN(brw->wm.base.sampler_count, 4) / 4) << 
GEN7_PS_SAMPLER_COUNT_SHIFT;
+   const unsigned sampler_count =
+  DIV_ROUND_UP(CLAMP(brw->wm.base.sampler_count, 0, 16), 4);
+   dw2 |= SET_FIELD(sampler_count, GEN7_PS_SAMPLER_COUNT);
 
dw2 |= ((prog_data->base.binding_table.size_bytes / 4) <<
GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT);
diff --git a/src/mesa/drivers/dri/i965/gen8_ps_state.c 
b/src/mesa/drivers/dri/i965/gen8_ps_state.c
index 5f39e12..8481153 100644
--- a/src/mesa/drivers/dri/i965/gen8_ps_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_ps_state.c
@@ -133,8 +133,9 @@ upload_ps_state(struct brw_context *brw)
 */
dw3 |= GEN7_PS_VECTOR_MASK_ENABLE;
 
-   dw3 |=
-  (ALIGN(brw->wm.base.sampler_count, 4) / 4) << 
GEN7_PS_SAMPLER_COUNT_SHIFT;
+   const unsigned sampler_count =
+  DIV_ROUND_UP(CLAMP(brw->wm.base.sampler_count, 0, 16), 4);
+   dw3 |= SET_FIELD(sampler_count, GEN7_PS_SAMPLER_COUNT); 
 
/* BRW_NEW_FS_PROG_DATA */
dw3 |=

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/blorp: Remove constant parameter

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: d271a13ba31168e0de75d7d4c1d4d7a2e2fb136c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d271a13ba31168e0de75d7d4c1d4d7a2e2fb136c

Author: Topi Pohjolainen 
Date:   Sat Mar 14 10:21:33 2015 +0200

i965/blorp: Remove constant parameter

This was still needed when we had support for blorp clears but now
this is fixed to nop.

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_blorp.cpp  |1 -
 src/mesa/drivers/dri/i965/brw_blorp.h|8 
 src/mesa/drivers/dri/i965/gen7_blorp.cpp |   11 ---
 3 files changed, 20 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp 
b/src/mesa/drivers/dri/i965/brw_blorp.cpp
index 131e155..b0de55d 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp
@@ -162,7 +162,6 @@ brw_blorp_params::brw_blorp_params()
  y1(0),
  depth_format(0),
  hiz_op(GEN6_HIZ_OP_NONE),
- fast_clear_op(GEN7_FAST_CLEAR_OP_NONE),
  use_wm_prog(false)
 {
color_write_disable[0] = false;
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h 
b/src/mesa/drivers/dri/i965/brw_blorp.h
index ff68000..59aecab 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -208,13 +208,6 @@ struct brw_blorp_prog_data
 };
 
 
-enum gen7_fast_clear_op {
-   GEN7_FAST_CLEAR_OP_NONE,
-   GEN7_FAST_CLEAR_OP_FAST_CLEAR,
-   GEN7_FAST_CLEAR_OP_RESOLVE,
-};
-
-
 class brw_blorp_params
 {
 public:
@@ -232,7 +225,6 @@ public:
brw_blorp_surface_info src;
brw_blorp_surface_info dst;
enum gen6_hiz_op hiz_op;
-   enum gen7_fast_clear_op fast_clear_op;
bool use_wm_prog;
brw_blorp_wm_push_constants wm_push_consts;
bool color_write_disable[4];
diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
index fb6a0dd..8215fe9 100644
--- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
@@ -529,17 +529,6 @@ gen7_blorp_emit_ps_config(struct brw_context *brw,
   dw5 |= prog_data->first_curbe_grf << GEN7_PS_DISPATCH_START_GRF_SHIFT_0;
}
 
-   switch (params->fast_clear_op) {
-   case GEN7_FAST_CLEAR_OP_FAST_CLEAR:
-  dw4 |= GEN7_PS_RENDER_TARGET_FAST_CLEAR_ENABLE;
-  break;
-   case GEN7_FAST_CLEAR_OP_RESOLVE:
-  dw4 |= GEN7_PS_RENDER_TARGET_RESOLVE_ENABLE;
-  break;
-   default:
-  break;
-   }
-
BEGIN_BATCH(8);
OUT_BATCH(_3DSTATE_PS << 16 | (8 - 2));
OUT_BATCH(params->use_wm_prog ? prog_offset : 0);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/gen7/blorp: Remove unused arguments

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: dce1972945a4568c181011880e0336a2a14909ec
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dce1972945a4568c181011880e0336a2a14909ec

Author: Topi Pohjolainen 
Date:   Fri Jan 30 11:30:34 2015 +0200

i965/gen7/blorp: Remove unused arguments

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/gen7_blorp.cpp |   75 +++---
 1 file changed, 28 insertions(+), 47 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
index d841346..c9e7cb7 100644
--- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
@@ -48,8 +48,7 @@
  * valid.
  */
 static void
-gen7_blorp_emit_urb_config(struct brw_context *brw,
-   const brw_blorp_params *params)
+gen7_blorp_emit_urb_config(struct brw_context *brw)
 {
unsigned urb_size = (brw->is_haswell && brw->gt == 3) ? 32 : 16;
gen7_emit_push_constant_state(brw,
@@ -73,7 +72,6 @@ gen7_blorp_emit_urb_config(struct brw_context *brw,
 /* 3DSTATE_BLEND_STATE_POINTERS */
 static void
 gen7_blorp_emit_blend_state_pointer(struct brw_context *brw,
-const brw_blorp_params *params,
 uint32_t cc_blend_state_offset)
 {
BEGIN_BATCH(2);
@@ -86,7 +84,6 @@ gen7_blorp_emit_blend_state_pointer(struct brw_context *brw,
 /* 3DSTATE_CC_STATE_POINTERS */
 static void
 gen7_blorp_emit_cc_state_pointer(struct brw_context *brw,
- const brw_blorp_params *params,
  uint32_t cc_state_offset)
 {
BEGIN_BATCH(2);
@@ -96,8 +93,7 @@ gen7_blorp_emit_cc_state_pointer(struct brw_context *brw,
 }
 
 static void
-gen7_blorp_emit_cc_viewport(struct brw_context *brw,
-   const brw_blorp_params *params)
+gen7_blorp_emit_cc_viewport(struct brw_context *brw)
 {
struct brw_cc_viewport *ccv;
uint32_t cc_vp_offset;
@@ -121,7 +117,6 @@ gen7_blorp_emit_cc_viewport(struct brw_context *brw,
  */
 static void
 gen7_blorp_emit_depth_stencil_state_pointers(struct brw_context *brw,
- const brw_blorp_params *params,
  uint32_t depthstencil_offset)
 {
BEGIN_BATCH(2);
@@ -136,7 +131,6 @@ gen7_blorp_emit_depth_stencil_state_pointers(struct 
brw_context *brw,
  */
 static uint32_t
 gen7_blorp_emit_surface_state(struct brw_context *brw,
-  const brw_blorp_params *params,
   const brw_blorp_surface_info *surface,
   uint32_t read_domains, uint32_t write_domain,
   bool is_render_target)
@@ -228,8 +222,7 @@ gen7_blorp_emit_surface_state(struct brw_context *brw,
  * Disable vertex shader.
  */
 static void
-gen7_blorp_emit_vs_disable(struct brw_context *brw,
-   const brw_blorp_params *params)
+gen7_blorp_emit_vs_disable(struct brw_context *brw)
 {
BEGIN_BATCH(7);
OUT_BATCH(_3DSTATE_CONSTANT_VS << 16 | (7 - 2));
@@ -257,8 +250,7 @@ gen7_blorp_emit_vs_disable(struct brw_context *brw,
  * Disable the hull shader.
  */
 static void
-gen7_blorp_emit_hs_disable(struct brw_context *brw,
-   const brw_blorp_params *params)
+gen7_blorp_emit_hs_disable(struct brw_context *brw)
 {
BEGIN_BATCH(7);
OUT_BATCH(_3DSTATE_CONSTANT_HS << 16 | (7 - 2));
@@ -287,8 +279,7 @@ gen7_blorp_emit_hs_disable(struct brw_context *brw,
  * Disable the tesselation engine.
  */
 static void
-gen7_blorp_emit_te_disable(struct brw_context *brw,
-   const brw_blorp_params *params)
+gen7_blorp_emit_te_disable(struct brw_context *brw)
 {
BEGIN_BATCH(4);
OUT_BATCH(_3DSTATE_TE << 16 | (4 - 2));
@@ -304,8 +295,7 @@ gen7_blorp_emit_te_disable(struct brw_context *brw,
  * Disable the domain shader.
  */
 static void
-gen7_blorp_emit_ds_disable(struct brw_context *brw,
-   const brw_blorp_params *params)
+gen7_blorp_emit_ds_disable(struct brw_context *brw)
 {
BEGIN_BATCH(7);
OUT_BATCH(_3DSTATE_CONSTANT_DS << 16 | (7 - 2));
@@ -332,8 +322,7 @@ gen7_blorp_emit_ds_disable(struct brw_context *brw,
  * Disable the geometry shader.
  */
 static void
-gen7_blorp_emit_gs_disable(struct brw_context *brw,
-   const brw_blorp_params *params)
+gen7_blorp_emit_gs_disable(struct brw_context *brw)
 {
BEGIN_BATCH(7);
OUT_BATCH(_3DSTATE_CONSTANT_GS << 16 | (7 - 2));
@@ -377,8 +366,7 @@ gen7_blorp_emit_gs_disable(struct brw_context *brw,
  * Disable streamout.
  */
 static void
-gen7_blorp_emit_streamout_disable(struct brw_context *brw,
-  const brw_blorp_params *params)
+gen7_blorp_emit_streamout_disable(struct brw_context *brw)
 {
BEGIN_BATCH(3);
OUT_BATCH(_3DSTATE_STREAMOUT << 16 | (3 - 2));
@@ -544

Mesa (master): i965: Refactor sampler state setup

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 02dbc79297203a063b91e6b5a0b81bda8aa48c19
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=02dbc79297203a063b91e6b5a0b81bda8aa48c19

Author: Topi Pohjolainen 
Date:   Thu Apr  2 12:45:02 2015 +0300

i965: Refactor sampler state setup

v2 (Matt): Moved * to the name.

Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_sampler_state.c |   60 -
 src/mesa/drivers/dri/i965/brw_state.h |9 
 2 files changed, 47 insertions(+), 22 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_sampler_state.c 
b/src/mesa/drivers/dri/i965/brw_sampler_state.c
index c78e2e3..22ccbfe 100644
--- a/src/mesa/drivers/dri/i965/brw_sampler_state.c
+++ b/src/mesa/drivers/dri/i965/brw_sampler_state.c
@@ -375,21 +375,16 @@ upload_default_color(struct brw_context *brw,
  * Sets the sampler state for a single unit based off of the sampler key
  * entry.
  */
-static void
+void
 brw_update_sampler_state(struct brw_context *brw,
- int unit,
+ GLenum target, bool tex_cube_map_seamless,
+ GLfloat tex_unit_lod_bias,
+ mesa_format format, GLenum base_format,
+ bool is_integer_format,
+ const struct gl_sampler_object *sampler,
  uint32_t *sampler_state,
  uint32_t batch_offset_for_sampler_state)
 {
-   struct gl_context *ctx = &brw->ctx;
-   const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-   const struct gl_texture_object *texObj = texUnit->_Current;
-   const struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit);
-
-   /* These don't use samplers at all. */
-   if (texObj->Target == GL_TEXTURE_BUFFER)
-  return;
-
unsigned min_filter, mag_filter, mip_filter;
 
/* Select min and mip filters. */
@@ -459,12 +454,12 @@ brw_update_sampler_state(struct brw_context *brw,
unsigned wrap_t = translate_wrap_mode(brw, sampler->WrapT, either_nearest);
unsigned wrap_r = translate_wrap_mode(brw, sampler->WrapR, either_nearest);
 
-   if (texObj->Target == GL_TEXTURE_CUBE_MAP ||
-   texObj->Target == GL_TEXTURE_CUBE_MAP_ARRAY) {
+   if (target == GL_TEXTURE_CUBE_MAP ||
+   target == GL_TEXTURE_CUBE_MAP_ARRAY) {
   /* Cube maps must use the same wrap mode for all three coordinate
* dimensions.  Prior to Haswell, only CUBE and CLAMP are valid.
*/
-  if ((ctx->Texture.CubeMapSeamless || sampler->CubeMapSeamless) &&
+  if ((tex_cube_map_seamless || sampler->CubeMapSeamless) &&
  (sampler->MinFilter != GL_NEAREST ||
   sampler->MagFilter != GL_NEAREST)) {
 wrap_s = BRW_TEXCOORDMODE_CUBE;
@@ -475,7 +470,7 @@ brw_update_sampler_state(struct brw_context *brw,
 wrap_t = BRW_TEXCOORDMODE_CLAMP;
 wrap_r = BRW_TEXCOORDMODE_CLAMP;
   }
-   } else if (texObj->Target == GL_TEXTURE_1D) {
+   } else if (target == GL_TEXTURE_1D) {
   /* There's a bug in 1D texture sampling - it actually pays
* attention to the wrap_t value, though it should not.
* Override the wrap_t value here to GL_REPEAT to keep
@@ -495,7 +490,7 @@ brw_update_sampler_state(struct brw_context *brw,
const unsigned min_lod = U_FIXED(CLAMP(sampler->MinLod, 0, 13), lod_bits);
const unsigned max_lod = U_FIXED(CLAMP(sampler->MaxLod, 0, 13), lod_bits);
const int lod_bias =
-  S_FIXED(CLAMP(texUnit->LodBias + sampler->LodBias, -16, 15), lod_bits);
+  S_FIXED(CLAMP(tex_unit_lod_bias + sampler->LodBias, -16, 15), lod_bits);
const unsigned base_level = U_FIXED(0, 1);
 
/* Upload the border color if necessary.  If not, just point it at
@@ -506,14 +501,12 @@ brw_update_sampler_state(struct brw_context *brw,
if (wrap_mode_needs_border_color(wrap_s) ||
wrap_mode_needs_border_color(wrap_t) ||
wrap_mode_needs_border_color(wrap_r)) {
-  const struct gl_texture_image *first_image =
- texObj->Image[0][texObj->BaseLevel];
   upload_default_color(brw, sampler,
-   first_image->TexFormat, first_image->_BaseFormat,
-   texObj->_IsIntegerFormat, &border_color_offset);
+   format, base_format, is_integer_format,
+   &border_color_offset);
}
 
-   const bool non_normalized_coords = texObj->Target == GL_TEXTURE_RECTANGLE;
+   const bool non_normalized_coords = target == GL_TEXTURE_RECTANGLE;
 
brw_emit_sampler_state(brw,
   sampler_state,
@@ -528,6 +521,29 @@ brw_update_sampler_state(struct brw_context *brw,
   border_color_offset);
 }
 
+static void
+update_sampler_state(struct brw_context *brw,
+ int unit,
+ uint32_t *sampler_state,
+ uint32_t batch_offset_for_sampler

Mesa (master): i965/gen8: Expose state base address setup

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: d7e49fba9a48b5f90c0ce8b7d0c0588545090a7f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d7e49fba9a48b5f90c0ce8b7d0c0588545090a7f

Author: Topi Pohjolainen 
Date:   Mon Mar  2 11:29:05 2015 +0200

i965/gen8: Expose state base address setup

Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_state.h   |3 +++
 src/mesa/drivers/dri/i965/gen8_misc_state.c |4 ++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_state.h 
b/src/mesa/drivers/dri/i965/brw_state.h
index 13d541b..a2127d1 100644
--- a/src/mesa/drivers/dri/i965/brw_state.h
+++ b/src/mesa/drivers/dri/i965/brw_state.h
@@ -171,6 +171,9 @@ void brw_upload_invariant_state(struct brw_context *brw);
 uint32_t
 brw_depthbuffer_format(struct brw_context *brw);
 
+/* gen8_misc_state.c */
+void gen8_upload_state_base_address(struct brw_context *brw);
+
 
 /***
  * brw_state.c
diff --git a/src/mesa/drivers/dri/i965/gen8_misc_state.c 
b/src/mesa/drivers/dri/i965/gen8_misc_state.c
index 88e425f..b20038e 100644
--- a/src/mesa/drivers/dri/i965/gen8_misc_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_misc_state.c
@@ -29,7 +29,7 @@
 /**
  * Define the base addresses which some state is referenced from.
  */
-static void upload_state_base_address(struct brw_context *brw)
+void gen8_upload_state_base_address(struct brw_context *brw)
 {
uint32_t mocs_wb = brw->gen >= 9 ? SKL_MOCS_WB : BDW_MOCS_WB;
int pkt_len = brw->gen >= 9 ? 19 : 16;
@@ -78,5 +78,5 @@ const struct brw_tracked_state gen8_state_base_address = {
   .brw = BRW_NEW_BATCH |
  BRW_NEW_PROGRAM_CACHE,
},
-   .emit = upload_state_base_address
+   .emit = gen8_upload_state_base_address
 };

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/blorp: Allow caller to provide sampler settings

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 4de0bef7f438147091a7489728c4d187c6efbbc3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4de0bef7f438147091a7489728c4d187c6efbbc3

Author: Topi Pohjolainen 
Date:   Fri Feb 27 21:59:56 2015 +0200

i965/blorp: Allow caller to provide sampler settings

v2 (Ken): s/use_unorm_coords/non_normalized_coords/

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_blorp.h|4 +++-
 src/mesa/drivers/dri/i965/gen6_blorp.cpp |   15 +--
 src/mesa/drivers/dri/i965/gen7_blorp.cpp |3 ++-
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h 
b/src/mesa/drivers/dri/i965/brw_blorp.h
index 59aecab..6aaae65 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -415,7 +415,9 @@ gen6_blorp_emit_drawing_rectangle(struct brw_context *brw,
 
 uint32_t
 gen6_blorp_emit_sampler_state(struct brw_context *brw,
-  const brw_blorp_params *params);
+  unsigned tex_filter, unsigned max_lod,
+  bool non_normalized_coords);
+
 /** \} */
 
 #endif /* __cplusplus */
diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
index 6c139ec..14e073b 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
@@ -455,7 +455,8 @@ gen6_blorp_emit_binding_table(struct brw_context *brw,
  */
 uint32_t
 gen6_blorp_emit_sampler_state(struct brw_context *brw,
-  const brw_blorp_params *params)
+  unsigned tex_filter, unsigned max_lod,
+  bool non_normalized_coords)
 {
uint32_t sampler_offset;
uint32_t *sampler_state = (uint32_t *)
@@ -476,8 +477,8 @@ gen6_blorp_emit_sampler_state(struct brw_context *brw,
brw_emit_sampler_state(brw,
   sampler_state,
   sampler_offset,
-  BRW_MAPFILTER_LINEAR, /* min filter */
-  BRW_MAPFILTER_LINEAR, /* mag filter */
+  tex_filter, /* min filter */
+  tex_filter, /* mag filter */
   BRW_MIPFILTER_NONE,
   BRW_ANISORATIO_2,
   address_rounding,
@@ -485,11 +486,11 @@ gen6_blorp_emit_sampler_state(struct brw_context *brw,
   BRW_TEXCOORDMODE_CLAMP,
   BRW_TEXCOORDMODE_CLAMP,
   0, /* min LOD */
-  0, /* max LOD */
+  max_lod,
   0, /* LOD bias */
   0, /* base miplevel */
   0, /* shadow function */
-  true, /* non-normalized coordinates */
+  non_normalized_coords,
   0); /* border color offset - unused */
 
return sampler_offset;
@@ -1059,7 +1060,9 @@ gen6_blorp_exec(struct brw_context *brw,
  gen6_blorp_emit_binding_table(brw, params,
wm_surf_offset_renderbuffer,
wm_surf_offset_texture);
-  sampler_offset = gen6_blorp_emit_sampler_state(brw, params);
+  sampler_offset =
+ gen6_blorp_emit_sampler_state(brw, BRW_MAPFILTER_LINEAR, 0, true);
+
   gen6_blorp_emit_sampler_state_pointers(brw, params, sampler_offset);
}
gen6_blorp_emit_vs_disable(brw, params);
diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
index 8215fe9..d841346 100644
--- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
@@ -830,7 +830,8 @@ gen7_blorp_exec(struct brw_context *brw,
  gen6_blorp_emit_binding_table(brw, params,
wm_surf_offset_renderbuffer,
wm_surf_offset_texture);
-  sampler_offset = gen6_blorp_emit_sampler_state(brw, params);
+  sampler_offset =
+ gen6_blorp_emit_sampler_state(brw, BRW_MAPFILTER_LINEAR, 0, true);
}
gen7_blorp_emit_vs_disable(brw, params);
gen7_blorp_emit_hs_disable(brw, params);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/blorp: Prepare for attributes other than render position

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 7fb0db4dd18e49d3ccdb872f7ed174740301f3a2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7fb0db4dd18e49d3ccdb872f7ed174740301f3a2

Author: Topi Pohjolainen 
Date:   Fri Feb 27 11:45:34 2015 +0200

i965/blorp: Prepare for attributes other than render position

Note that the magic number of one in gen7 logic is replaced by
BRW_SF_URB_ENTRY_READ_OFFSET ( == 1 also) for clarity.

On gen6 the change from zero to one (BRW_SF_URB_ENTRY_READ_OFFSET)
has no effect for native blorp as blorp doesn't use any
additional attributes. In fact, regular pipeline setup always
uses BRW_SF_URB_ENTRY_READ_OFFSET even when there are no additional
attributes. Hence the change makes the two (blorp and regular)
consistent.

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_blorp.cpp  |5 +++--
 src/mesa/drivers/dri/i965/brw_blorp.h|3 ++-
 src/mesa/drivers/dri/i965/gen6_blorp.cpp |5 +++--
 src/mesa/drivers/dri/i965/gen7_blorp.cpp |6 --
 4 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp 
b/src/mesa/drivers/dri/i965/brw_blorp.cpp
index b0de55d..0c0cd2b 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp
@@ -155,14 +155,15 @@ brw_blorp_surface_info::compute_tile_offsets(uint32_t 
*tile_x,
 }
 
 
-brw_blorp_params::brw_blorp_params()
+brw_blorp_params::brw_blorp_params(unsigned num_varyings)
: x0(0),
  y0(0),
  x1(0),
  y1(0),
  depth_format(0),
  hiz_op(GEN6_HIZ_OP_NONE),
- use_wm_prog(false)
+ use_wm_prog(false),
+ num_varyings(num_varyings)
 {
color_write_disable[0] = false;
color_write_disable[1] = false;
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h 
b/src/mesa/drivers/dri/i965/brw_blorp.h
index f277dee..0ba3891 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -211,7 +211,7 @@ struct brw_blorp_prog_data
 class brw_blorp_params
 {
 public:
-   brw_blorp_params();
+   explicit brw_blorp_params(unsigned num_varyings = 0);
 
virtual uint32_t get_wm_prog(struct brw_context *brw,
 brw_blorp_prog_data **prog_data) const = 0;
@@ -228,6 +228,7 @@ public:
bool use_wm_prog;
brw_blorp_wm_push_constants wm_push_consts;
bool color_write_disable[4];
+   const unsigned num_varyings;
 };
 
 
diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
index 2fe2840..405a3e8 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
@@ -634,9 +634,10 @@ gen6_blorp_emit_sf_config(struct brw_context *brw,
 {
BEGIN_BATCH(20);
OUT_BATCH(_3DSTATE_SF << 16 | (20 - 2));
-   OUT_BATCH((1 - 1) << GEN6_SF_NUM_OUTPUTS_SHIFT | /* only position */
+   OUT_BATCH(params->num_varyings << GEN6_SF_NUM_OUTPUTS_SHIFT |
  1 << GEN6_SF_URB_ENTRY_READ_LENGTH_SHIFT |
- 0 << GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT);
+ BRW_SF_URB_ENTRY_READ_OFFSET <<
+GEN6_SF_URB_ENTRY_READ_OFFSET_SHIFT);
OUT_BATCH(0); /* dw2 */
OUT_BATCH(params->dst.num_samples > 1 ? GEN6_SF_MSRAST_ON_PATTERN : 0);
for (int i = 0; i < 16; ++i)
diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
index 12f515d..3065a4c 100644
--- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
@@ -415,9 +415,11 @@ gen7_blorp_emit_sf_config(struct brw_context *brw,
{
   BEGIN_BATCH(14);
   OUT_BATCH(_3DSTATE_SBE << 16 | (14 - 2));
-  OUT_BATCH((1 - 1) << GEN7_SBE_NUM_OUTPUTS_SHIFT | /* only position */
+  OUT_BATCH(GEN7_SBE_SWIZZLE_ENABLE |
+params->num_varyings << GEN7_SBE_NUM_OUTPUTS_SHIFT |
 1 << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT |
-0 << GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT);
+BRW_SF_URB_ENTRY_READ_OFFSET <<
+   GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT);
   for (int i = 0; i < 12; ++i)
  OUT_BATCH(0);
   ADVANCE_BATCH();

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Refactor and expose brw_upload_binding_table()

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 21071afc431bb17419c353151544518be7daf05f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=21071afc431bb17419c353151544518be7daf05f

Author: Topi Pohjolainen 
Date:   Thu Mar 19 10:42:49 2015 +0200

i965: Refactor and expose brw_upload_binding_table()

Read and write parts of the state stage are also split into
explicit arguments allowing future patches to use constant
program data.

v2 (Ken): s/BRW_NEW_WM_PROG_DATA/BRW_NEW_FS_PROG_DATA/

Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_binding_tables.c |   21 ++---
 src/mesa/drivers/dri/i965/brw_state.h  |7 +++
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_binding_tables.c 
b/src/mesa/drivers/dri/i965/brw_binding_tables.c
index 459165a..98ff0dd 100644
--- a/src/mesa/drivers/dri/i965/brw_binding_tables.c
+++ b/src/mesa/drivers/dri/i965/brw_binding_tables.c
@@ -50,15 +50,13 @@
  * This copies brw_stage_state::surf_offset[] into the indirect state section
  * of the batchbuffer (allocated by brw_state_batch()).
  */
-static void
+void
 brw_upload_binding_table(struct brw_context *brw,
  uint32_t packet_name,
  GLbitfield brw_new_binding_table,
+ const struct brw_stage_prog_data *prog_data,
  struct brw_stage_state *stage_state)
 {
-   /* BRW_NEW_*_PROG_DATA */
-   struct brw_stage_prog_data *prog_data = stage_state->prog_data;
-
if (prog_data->binding_table.size_bytes == 0) {
   /* There are no surfaces; skip making the binding table altogether. */
   if (stage_state->bind_bo_offset == 0 && brw->gen < 9)
@@ -103,9 +101,12 @@ brw_upload_binding_table(struct brw_context *brw,
 static void
 brw_vs_upload_binding_table(struct brw_context *brw)
 {
+   /* BRW_NEW_VS_PROG_DATA */
+   const struct brw_stage_prog_data *prog_data = brw->vs.base.prog_data;
brw_upload_binding_table(brw,
 _3DSTATE_BINDING_TABLE_POINTERS_VS,
-BRW_NEW_VS_BINDING_TABLE, &brw->vs.base);
+BRW_NEW_VS_BINDING_TABLE, prog_data,
+&brw->vs.base);
 }
 
 const struct brw_tracked_state brw_vs_binding_table = {
@@ -124,9 +125,12 @@ const struct brw_tracked_state brw_vs_binding_table = {
 static void
 brw_upload_wm_binding_table(struct brw_context *brw)
 {
+   /* BRW_NEW_FS_PROG_DATA */
+   const struct brw_stage_prog_data *prog_data = brw->wm.base.prog_data;
brw_upload_binding_table(brw,
 _3DSTATE_BINDING_TABLE_POINTERS_PS,
-BRW_NEW_PS_BINDING_TABLE, &brw->wm.base);
+BRW_NEW_PS_BINDING_TABLE, prog_data,
+&brw->wm.base);
 }
 
 const struct brw_tracked_state brw_wm_binding_table = {
@@ -147,9 +151,12 @@ brw_gs_upload_binding_table(struct brw_context *brw)
if (brw->geometry_program == NULL)
   return;
 
+   /* BRW_NEW_GS_PROG_DATA */
+   const struct brw_stage_prog_data *prog_data = brw->gs.base.prog_data;
brw_upload_binding_table(brw,
 _3DSTATE_BINDING_TABLE_POINTERS_GS,
-BRW_NEW_GS_BINDING_TABLE, &brw->gs.base);
+BRW_NEW_GS_BINDING_TABLE, prog_data,
+&brw->gs.base);
 }
 
 const struct brw_tracked_state brw_gs_binding_table = {
diff --git a/src/mesa/drivers/dri/i965/brw_state.h 
b/src/mesa/drivers/dri/i965/brw_state.h
index 83058b9..8798369 100644
--- a/src/mesa/drivers/dri/i965/brw_state.h
+++ b/src/mesa/drivers/dri/i965/brw_state.h
@@ -159,6 +159,13 @@ brw_state_dirty(struct brw_context *brw, GLuint 
mesa_flags, uint64_t brw_flags)
(brw->ctx.NewDriverState & brw_flags)) != 0;
 }
 
+/* brw_binding_tables.c */
+void brw_upload_binding_table(struct brw_context *brw,
+  uint32_t packet_name,
+  GLbitfield brw_new_binding_table,
+  const struct brw_stage_prog_data *prog_data,
+  struct brw_stage_state *stage_state);
+
 /* brw_misc_state.c */
 void brw_upload_invariant_state(struct brw_context *brw);
 uint32_t

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/ps/gen7: Refactor state uploading

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 4047420ec47488f2cdd7511cbeea95201b620480
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4047420ec47488f2cdd7511cbeea95201b620480

Author: Topi Pohjolainen 
Date:   Fri Feb 13 11:20:05 2015 +0200

i965/ps/gen7: Refactor state uploading

Now the uploading depends only on the input parameters instead
of consulting the current gl-state.

v2: Rebased on top of sampler count clamping

Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_state.h |9 +
 src/mesa/drivers/dri/i965/gen7_wm_state.c |   56 ++---
 2 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_state.h 
b/src/mesa/drivers/dri/i965/brw_state.h
index ab067c3..f8d56b9 100644
--- a/src/mesa/drivers/dri/i965/brw_state.h
+++ b/src/mesa/drivers/dri/i965/brw_state.h
@@ -245,6 +245,15 @@ void brw_update_renderbuffer_surfaces(struct brw_context 
*brw,
   uint32_t render_target_start,
   uint32_t *surf_offset);
 
+/* gen7_wm_state.c */
+void
+gen7_upload_ps_state(struct brw_context *brw,
+ const struct gl_fragment_program *fp,
+ const struct brw_stage_state *stage_state,
+ const struct brw_wm_prog_data *prog_data,
+ bool enable_dual_src_blend, unsigned sample_mask,
+ unsigned fast_clear_op);
+
 /* gen7_wm_surface_state.c */
 uint32_t gen7_surface_tiling_mode(uint32_t tiling);
 uint32_t gen7_surface_msaa_bits(unsigned num_samples, enum intel_msaa_layout 
l);
diff --git a/src/mesa/drivers/dri/i965/gen7_wm_state.c 
b/src/mesa/drivers/dri/i965/gen7_wm_state.c
index 55a1acd..b918275 100644
--- a/src/mesa/drivers/dri/i965/gen7_wm_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_wm_state.c
@@ -122,21 +122,23 @@ const struct brw_tracked_state gen7_wm_state = {
.emit = upload_wm_state,
 };
 
-static void
-upload_ps_state(struct brw_context *brw)
+void
+gen7_upload_ps_state(struct brw_context *brw,
+ const struct gl_fragment_program *fp,
+ const struct brw_stage_state *stage_state,
+ const struct brw_wm_prog_data *prog_data,
+ bool enable_dual_src_blend, unsigned sample_mask,
+ unsigned fast_clear_op)
 {
struct gl_context *ctx = &brw->ctx;
uint32_t dw2, dw4, dw5, ksp0, ksp2;
const int max_threads_shift = brw->is_haswell ?
   HSW_PS_MAX_THREADS_SHIFT : IVB_PS_MAX_THREADS_SHIFT;
 
-   /* BRW_NEW_FS_PROG_DATA */
-   const struct brw_wm_prog_data *prog_data = brw->wm.prog_data;
-
dw2 = dw4 = dw5 = ksp2 = 0;
 
const unsigned sampler_count =
-  DIV_ROUND_UP(CLAMP(brw->wm.base.sampler_count, 0, 16), 4);
+  DIV_ROUND_UP(CLAMP(stage_state->sampler_count, 0, 16), 4);
dw2 |= SET_FIELD(sampler_count, GEN7_PS_SAMPLER_COUNT);
 
dw2 |= ((prog_data->base.binding_table.size_bytes / 4) <<
@@ -149,7 +151,7 @@ upload_ps_state(struct brw_context *brw)
 * in 3DSTATE_SAMPLE_MASK; the values should match. */
/* _NEW_BUFFERS, _NEW_MULTISAMPLE */
if (brw->is_haswell)
-  dw4 |= SET_FIELD(gen6_determine_sample_mask(brw), HSW_PS_SAMPLE_MASK);
+  dw4 |= SET_FIELD(sample_mask, HSW_PS_SAMPLE_MASK);
 
dw4 |= (brw->max_wm_threads - 1) << max_threads_shift;
 
@@ -182,16 +184,11 @@ upload_ps_state(struct brw_context *brw)
else
   dw4 |= GEN7_PS_POSOFFSET_NONE;
 
-   /* BRW_NEW_FS_PROG_DATA | _NEW_COLOR
-*
-* The hardware wedges if you have this bit set but don't turn on any dual
+   /* The hardware wedges if you have this bit set but don't turn on any dual
 * source blend factors.
 */
-   if (prog_data->dual_src_blend &&
-   (ctx->Color.BlendEnabled & 1) &&
-   ctx->Color.Blend[0]._UsesDualSrc) {
+   if (enable_dual_src_blend)
   dw4 |= GEN7_PS_DUAL_SOURCE_BLEND_ENABLE;
-   }
 
/* BRW_NEW_FS_PROG_DATA */
if (prog_data->num_varying_inputs != 0)
@@ -203,7 +200,7 @@ upload_ps_state(struct brw_context *brw)
 * better performance than 'SIMD8 only' dispatch.
 */
int min_inv_per_frag =
-  _mesa_get_min_invocations_per_fragment(ctx, brw->fragment_program, 
false);
+  _mesa_get_min_invocations_per_fragment(ctx, fp, false);
assert(min_inv_per_frag >= 1);
 
if (prog_data->prog_offset_16 || prog_data->no_8) {
@@ -214,22 +211,22 @@ upload_ps_state(struct brw_context *brw)
  GEN7_PS_DISPATCH_START_GRF_SHIFT_0);
  dw5 |= (prog_data->dispatch_grf_start_reg_16 <<
  GEN7_PS_DISPATCH_START_GRF_SHIFT_2);
- ksp0 = brw->wm.base.prog_offset;
- ksp2 = brw->wm.base.prog_offset + prog_data->prog_offset_16;
+ ksp0 = stage_state->prog_offset;
+ ksp2 = stage_state->prog_offset + prog_data->prog_offset_16;
   } else {
  dw5 |= (prog_data->dispatch_grf_start_

Mesa (master): i965/blorp: Prepare drawing rectangle for flipped coordinates

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 13670e8bade296c5c5846dc08615563ad51685e4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=13670e8bade296c5c5846dc08615563ad51685e4

Author: Topi Pohjolainen 
Date:   Sun Mar 29 21:52:02 2015 +0300

i965/blorp: Prepare drawing rectangle for flipped coordinates

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/gen6_blorp.cpp |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
index ed08898..b6a3d78 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
@@ -950,8 +950,8 @@ gen6_blorp_emit_drawing_rectangle(struct brw_context *brw,
BEGIN_BATCH(4);
OUT_BATCH(_3DSTATE_DRAWING_RECTANGLE << 16 | (4 - 2));
OUT_BATCH(0);
-   OUT_BATCH(((params->x1 - 1) & 0x) |
- ((params->y1 - 1) << 16));
+   OUT_BATCH(((MAX2(params->x1, params->x0) - 1) & 0x) |
+ ((MAX2(params->y1, params->y0) - 1) << 16));
OUT_BATCH(0);
ADVANCE_BATCH();
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/blorp: Remove unused arguments

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 25ce6c6943576e22d8d00049578d0e6cc5feea07
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=25ce6c6943576e22d8d00049578d0e6cc5feea07

Author: Topi Pohjolainen 
Date:   Fri Jan 30 11:37:54 2015 +0200

i965/blorp: Remove unused arguments

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_blorp.h|7 ++-
 src/mesa/drivers/dri/i965/gen6_blorp.cpp |   20 +++-
 src/mesa/drivers/dri/i965/gen7_blorp.cpp |6 +++---
 3 files changed, 12 insertions(+), 21 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h 
b/src/mesa/drivers/dri/i965/brw_blorp.h
index 6aaae65..f277dee 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -380,8 +380,7 @@ gen6_blorp_emit_blend_state(struct brw_context *brw,
 const brw_blorp_params *params);
 
 uint32_t
-gen6_blorp_emit_cc_state(struct brw_context *brw,
- const brw_blorp_params *params);
+gen6_blorp_emit_cc_state(struct brw_context *brw);
 
 uint32_t
 gen6_blorp_emit_wm_constants(struct brw_context *brw,
@@ -393,7 +392,6 @@ gen6_blorp_emit_vs_disable(struct brw_context *brw,
 
 uint32_t
 gen6_blorp_emit_binding_table(struct brw_context *brw,
-  const brw_blorp_params *params,
   uint32_t wm_surf_offset_renderbuffer,
   uint32_t wm_surf_offset_texture);
 
@@ -406,8 +404,7 @@ gen6_blorp_emit_gs_disable(struct brw_context *brw,
const brw_blorp_params *params);
 
 void
-gen6_blorp_emit_clip_disable(struct brw_context *brw,
- const brw_blorp_params *params);
+gen6_blorp_emit_clip_disable(struct brw_context *brw);
 
 void
 gen6_blorp_emit_drawing_rectangle(struct brw_context *brw,
diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
index 14e073b..2fe2840 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
@@ -268,8 +268,7 @@ gen6_blorp_emit_blend_state(struct brw_context *brw,
 
 /* CC_STATE */
 uint32_t
-gen6_blorp_emit_cc_state(struct brw_context *brw,
- const brw_blorp_params *params)
+gen6_blorp_emit_cc_state(struct brw_context *brw)
 {
uint32_t cc_state_offset;
 
@@ -431,7 +430,6 @@ gen6_blorp_emit_surface_state(struct brw_context *brw,
 /* BINDING_TABLE.  See brw_wm_binding_table(). */
 uint32_t
 gen6_blorp_emit_binding_table(struct brw_context *brw,
-  const brw_blorp_params *params,
   uint32_t wm_surf_offset_renderbuffer,
   uint32_t wm_surf_offset_texture)
 {
@@ -502,7 +500,6 @@ gen6_blorp_emit_sampler_state(struct brw_context *brw,
  */
 static void
 gen6_blorp_emit_sampler_state_pointers(struct brw_context *brw,
-   const brw_blorp_params *params,
uint32_t sampler_offset)
 {
BEGIN_BATCH(4);
@@ -602,8 +599,7 @@ gen6_blorp_emit_gs_disable(struct brw_context *brw,
  * output, but does spare a few electrons.
  */
 void
-gen6_blorp_emit_clip_disable(struct brw_context *brw,
- const brw_blorp_params *params)
+gen6_blorp_emit_clip_disable(struct brw_context *brw)
 {
BEGIN_BATCH(4);
OUT_BATCH(_3DSTATE_CLIP << 16 | (4 - 2));
@@ -767,7 +763,6 @@ gen6_blorp_emit_constant_ps_disable(struct brw_context *brw,
  */
 static void
 gen6_blorp_emit_binding_table_pointers(struct brw_context *brw,
-   const brw_blorp_params *params,
uint32_t wm_bind_bo_offset)
 {
BEGIN_BATCH(4);
@@ -1036,7 +1031,7 @@ gen6_blorp_exec(struct brw_context *brw,
gen6_blorp_emit_urb_config(brw, params);
if (params->use_wm_prog) {
   cc_blend_state_offset = gen6_blorp_emit_blend_state(brw, params);
-  cc_state_offset = gen6_blorp_emit_cc_state(brw, params);
+  cc_state_offset = gen6_blorp_emit_cc_state(brw);
}
depthstencil_offset = gen6_blorp_emit_depth_stencil_state(brw, params);
gen6_blorp_emit_cc_state_pointers(brw, params, cc_blend_state_offset,
@@ -1057,17 +1052,16 @@ gen6_blorp_exec(struct brw_context *brw,
   I915_GEM_DOMAIN_SAMPLER, 0);
   }
   wm_bind_bo_offset =
- gen6_blorp_emit_binding_table(brw, params,
+ gen6_blorp_emit_binding_table(brw,
wm_surf_offset_renderbuffer,
wm_surf_offset_texture);
   sampler_offset =
  gen6_blorp_emit_sampler_state(brw, BRW_MAPFILTER_LINEAR, 0, true);
-
-  gen6_blorp_emit_sampler_state_pointers(brw, params, sampler_offset);
+  gen6_blorp_emit_sampler_state_pointers(brw, sampler_offse

Mesa (master): i965/blorp: Add support for layered rendering

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: dfd896699d9f640518c0fbafb0352f454d5fc466
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dfd896699d9f640518c0fbafb0352f454d5fc466

Author: Topi Pohjolainen 
Date:   Fri Mar 27 16:25:56 2015 +0200

i965/blorp: Add support for layered rendering

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_blorp.cpp  |6 --
 src/mesa/drivers/dri/i965/brw_blorp.h|4 +++-
 src/mesa/drivers/dri/i965/gen6_blorp.cpp |2 +-
 src/mesa/drivers/dri/i965/gen7_blorp.cpp |2 +-
 4 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp 
b/src/mesa/drivers/dri/i965/brw_blorp.cpp
index 8f82851..b404869 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp
@@ -156,7 +156,8 @@ brw_blorp_surface_info::compute_tile_offsets(uint32_t 
*tile_x,
 
 
 brw_blorp_params::brw_blorp_params(unsigned num_varyings,
-   unsigned num_draw_buffers)
+   unsigned num_draw_buffers,
+   unsigned num_layers)
: x0(0),
  y0(0),
  x1(0),
@@ -165,7 +166,8 @@ brw_blorp_params::brw_blorp_params(unsigned num_varyings,
  hiz_op(GEN6_HIZ_OP_NONE),
  use_wm_prog(false),
  num_varyings(num_varyings),
- num_draw_buffers(num_draw_buffers)
+ num_draw_buffers(num_draw_buffers),
+ num_layers(num_layers)
 {
 }
 
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h 
b/src/mesa/drivers/dri/i965/brw_blorp.h
index c9957a6..dd28d81 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -212,7 +212,8 @@ class brw_blorp_params
 {
 public:
brw_blorp_params(unsigned num_varyings = 0,
-unsigned num_draw_buffers = 1);
+unsigned num_draw_buffers = 1,
+unsigned num_layers = 1);
 
virtual uint32_t get_wm_prog(struct brw_context *brw,
 brw_blorp_prog_data **prog_data) const = 0;
@@ -230,6 +231,7 @@ public:
brw_blorp_wm_push_constants wm_push_consts;
const unsigned num_varyings;
const unsigned num_draw_buffers;
+   const unsigned num_layers;
 };
 
 
diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
index bfd2001..ed08898 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
@@ -992,7 +992,7 @@ gen6_blorp_emit_primitive(struct brw_context *brw,
  GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL);
OUT_BATCH(3); /* vertex count per instance */
OUT_BATCH(0);
-   OUT_BATCH(1); /* instance count */
+   OUT_BATCH(params->num_layers); /* instance count */
OUT_BATCH(0);
OUT_BATCH(0);
ADVANCE_BATCH();
diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
index 3065a4c..2bdc82b 100644
--- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp
@@ -753,7 +753,7 @@ gen7_blorp_emit_primitive(struct brw_context *brw,
  _3DPRIM_RECTLIST);
OUT_BATCH(3); /* vertex count per instance */
OUT_BATCH(0);
-   OUT_BATCH(1); /* instance count */
+   OUT_BATCH(params->num_layers); /* instance count */
OUT_BATCH(0);
OUT_BATCH(0);
ADVANCE_BATCH();

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/gen8: Use constant pointers for reading miptree details

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: d6c83c9d863f9f13e46584b93cbab6d3a3885aea
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d6c83c9d863f9f13e46584b93cbab6d3a3885aea

Author: Topi Pohjolainen 
Date:   Sun Mar  1 22:23:33 2015 +0200

i965/gen8: Use constant pointers for reading miptree details

Reviewed-by: Matt Turner 
Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/gen8_surface_state.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c 
b/src/mesa/drivers/dri/i965/gen8_surface_state.c
index b8ef353..f347065 100644
--- a/src/mesa/drivers/dri/i965/gen8_surface_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c
@@ -70,7 +70,7 @@ surface_tiling_mode(uint32_t tiling)
 }
 
 static unsigned
-vertical_alignment(struct intel_mipmap_tree *mt)
+vertical_alignment(const struct intel_mipmap_tree *mt)
 {
switch (mt->align_h) {
case 4:
@@ -85,7 +85,7 @@ vertical_alignment(struct intel_mipmap_tree *mt)
 }
 
 static unsigned
-horizontal_alignment(struct intel_mipmap_tree *mt)
+horizontal_alignment(const struct intel_mipmap_tree *mt)
 {
switch (mt->align_w) {
case 4:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/ps/gen8: Refactor state uploading

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: fea168f49584333aeeabad2d2b0dc6aaee86f881
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fea168f49584333aeeabad2d2b0dc6aaee86f881

Author: Topi Pohjolainen 
Date:   Mon Mar  2 12:31:17 2015 +0200

i965/ps/gen8: Refactor state uploading

v2: Use SET_FIELD() for sampler count, and for that reason
added GEN7_PS_SAMPLER_COUNT_MASK.

Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_state.h |   12 +
 src/mesa/drivers/dri/i965/gen8_ps_state.c |   72 ++---
 2 files changed, 58 insertions(+), 26 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_state.h 
b/src/mesa/drivers/dri/i965/brw_state.h
index f8d56b9..13d541b 100644
--- a/src/mesa/drivers/dri/i965/brw_state.h
+++ b/src/mesa/drivers/dri/i965/brw_state.h
@@ -265,6 +265,18 @@ void gen7_set_surface_mcs_info(struct brw_context *brw,
 void gen7_check_surface_setup(uint32_t *surf, bool is_render_target);
 void gen7_init_vtable_surface_functions(struct brw_context *brw);
 
+/* gen8_ps_state.c */
+void gen8_upload_ps_state(struct brw_context *brw,
+  const struct gl_fragment_program *fp,
+  const struct brw_stage_state *stage_state,
+  const struct brw_wm_prog_data *prog_data,
+  uint32_t fast_clear_op);
+
+void gen8_upload_ps_extra(struct brw_context *brw,
+  const struct gl_fragment_program *fp,
+  const struct brw_wm_prog_data *prog_data,
+  bool multisampled_fbo);
+
 /* gen7_sol_state.c */
 void gen7_upload_3dstate_so_decl_list(struct brw_context *brw,
   const struct brw_vue_map *vue_map);
diff --git a/src/mesa/drivers/dri/i965/gen8_ps_state.c 
b/src/mesa/drivers/dri/i965/gen8_ps_state.c
index 8481153..85ad3b6 100644
--- a/src/mesa/drivers/dri/i965/gen8_ps_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_ps_state.c
@@ -27,15 +27,13 @@
 #include "brw_defines.h"
 #include "intel_batchbuffer.h"
 
-static void
-upload_ps_extra(struct brw_context *brw)
+void
+gen8_upload_ps_extra(struct brw_context *brw,
+ const struct gl_fragment_program *fp,
+ const struct brw_wm_prog_data *prog_data,
+ bool multisampled_fbo)
 {
struct gl_context *ctx = &brw->ctx;
-   /* BRW_NEW_FRAGMENT_PROGRAM */
-   const struct brw_fragment_program *fp =
-  brw_fragment_program_const(brw->fragment_program);
-   /* BRW_NEW_FS_PROG_DATA */
-   const struct brw_wm_prog_data *prog_data = brw->wm.prog_data;
uint32_t dw1 = 0;
 
dw1 |= GEN8_PSX_PIXEL_SHADER_VALID;
@@ -47,16 +45,14 @@ upload_ps_extra(struct brw_context *brw)
if (prog_data->num_varying_inputs != 0)
   dw1 |= GEN8_PSX_ATTRIBUTE_ENABLE;
 
-   if (fp->program.Base.InputsRead & VARYING_BIT_POS)
+   if (fp->Base.InputsRead & VARYING_BIT_POS)
   dw1 |= GEN8_PSX_USES_SOURCE_DEPTH | GEN8_PSX_USES_SOURCE_W;
 
-   /* BRW_NEW_NUM_SAMPLES | _NEW_MULTISAMPLE */
-   bool multisampled_fbo = brw->num_samples > 1;
if (multisampled_fbo &&
-   _mesa_get_min_invocations_per_fragment(ctx, &fp->program, false) > 1)
+   _mesa_get_min_invocations_per_fragment(ctx, fp, false) > 1)
   dw1 |= GEN8_PSX_SHADER_IS_PER_SAMPLE;
 
-   if (fp->program.Base.SystemValuesRead & SYSTEM_BIT_SAMPLE_MASK_IN)
+   if (fp->Base.SystemValuesRead & SYSTEM_BIT_SAMPLE_MASK_IN)
   dw1 |= GEN8_PSX_SHADER_USES_INPUT_COVERAGE_MASK;
 
if (prog_data->uses_omask)
@@ -68,6 +64,20 @@ upload_ps_extra(struct brw_context *brw)
ADVANCE_BATCH();
 }
 
+static void
+upload_ps_extra(struct brw_context *brw)
+{
+   /* BRW_NEW_FRAGMENT_PROGRAM */
+   const struct brw_fragment_program *fp =
+  brw_fragment_program_const(brw->fragment_program);
+   /* BRW_NEW_FS_PROG_DATA */
+   const struct brw_wm_prog_data *prog_data = brw->wm.prog_data;
+   /* BRW_NEW_NUM_SAMPLES | _NEW_MULTISAMPLE */
+   const bool multisampled_fbo = brw->num_samples > 1;
+
+   gen8_upload_ps_extra(brw, &fp->program, prog_data, multisampled_fbo);
+}
+
 const struct brw_tracked_state gen8_ps_extra = {
.dirty = {
   .mesa  = _NEW_MULTISAMPLE,
@@ -118,15 +128,16 @@ const struct brw_tracked_state gen8_wm_state = {
.emit = upload_wm_state,
 };
 
-static void
-upload_ps_state(struct brw_context *brw)
+void
+gen8_upload_ps_state(struct brw_context *brw,
+ const struct gl_fragment_program *fp,
+ const struct brw_stage_state *stage_state,
+ const struct brw_wm_prog_data *prog_data,
+ uint32_t fast_clear_op)
 {
struct gl_context *ctx = &brw->ctx;
uint32_t dw3 = 0, dw6 = 0, dw7 = 0, ksp0, ksp2 = 0;
 
-   /* BRW_NEW_FS_PROG_DATA */
-   const struct brw_wm_prog_data *prog_data = brw->wm.prog_data;
-
/* Initialize the execution mask with VMask.  Otherwise, derivatives a

Mesa (master): i965/blorp: Allow blend state to be set for multiple render targets

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 91daf9f09bac41c84c6868a56e0d538cc59cc334
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=91daf9f09bac41c84c6868a56e0d538cc59cc334

Author: Topi Pohjolainen 
Date:   Thu Mar 26 16:43:31 2015 +0200

i965/blorp: Allow blend state to be set for multiple render targets

Original blorp writes only one buffer per shader invocation. Once
the launch mechanism is shared with glsl-based programs there will
be need for supporting multiple render targets.

Also drop the always constant color write disable settings.

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_blorp.cpp  |   10 --
 src/mesa/drivers/dri/i965/brw_blorp.h|5 +++--
 src/mesa/drivers/dri/i965/gen6_blorp.cpp |   22 +++---
 3 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp 
b/src/mesa/drivers/dri/i965/brw_blorp.cpp
index 0c0cd2b..8f82851 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp
@@ -155,7 +155,8 @@ brw_blorp_surface_info::compute_tile_offsets(uint32_t 
*tile_x,
 }
 
 
-brw_blorp_params::brw_blorp_params(unsigned num_varyings)
+brw_blorp_params::brw_blorp_params(unsigned num_varyings,
+   unsigned num_draw_buffers)
: x0(0),
  y0(0),
  x1(0),
@@ -163,12 +164,9 @@ brw_blorp_params::brw_blorp_params(unsigned num_varyings)
  depth_format(0),
  hiz_op(GEN6_HIZ_OP_NONE),
  use_wm_prog(false),
- num_varyings(num_varyings)
+ num_varyings(num_varyings),
+ num_draw_buffers(num_draw_buffers)
 {
-   color_write_disable[0] = false;
-   color_write_disable[1] = false;
-   color_write_disable[2] = false;
-   color_write_disable[3] = false;
 }
 
 extern "C" {
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h 
b/src/mesa/drivers/dri/i965/brw_blorp.h
index 0ba3891..c9957a6 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp.h
+++ b/src/mesa/drivers/dri/i965/brw_blorp.h
@@ -211,7 +211,8 @@ struct brw_blorp_prog_data
 class brw_blorp_params
 {
 public:
-   explicit brw_blorp_params(unsigned num_varyings = 0);
+   brw_blorp_params(unsigned num_varyings = 0,
+unsigned num_draw_buffers = 1);
 
virtual uint32_t get_wm_prog(struct brw_context *brw,
 brw_blorp_prog_data **prog_data) const = 0;
@@ -227,8 +228,8 @@ public:
enum gen6_hiz_op hiz_op;
bool use_wm_prog;
brw_blorp_wm_push_constants wm_push_consts;
-   bool color_write_disable[4];
const unsigned num_varyings;
+   const unsigned num_draw_buffers;
 };
 
 
diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
index 405a3e8..bfd2001 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
@@ -246,21 +246,21 @@ gen6_blorp_emit_blend_state(struct brw_context *brw,
 {
uint32_t cc_blend_state_offset;
 
+   assume(params->num_draw_buffers);
+
+   const unsigned size = params->num_draw_buffers *
+ sizeof(struct gen6_blend_state);
struct gen6_blend_state *blend = (struct gen6_blend_state *)
-  brw_state_batch(brw, AUB_TRACE_BLEND_STATE,
-  sizeof(struct gen6_blend_state), 64,
+  brw_state_batch(brw, AUB_TRACE_BLEND_STATE, size, 64,
   &cc_blend_state_offset);
 
-   memset(blend, 0, sizeof(*blend));
-
-   blend->blend1.pre_blend_clamp_enable = 1;
-   blend->blend1.post_blend_clamp_enable = 1;
-   blend->blend1.clamp_range = BRW_RENDERTARGET_CLAMPRANGE_FORMAT;
+   memset(blend, 0, size);
 
-   blend->blend1.write_disable_r = params->color_write_disable[0];
-   blend->blend1.write_disable_g = params->color_write_disable[1];
-   blend->blend1.write_disable_b = params->color_write_disable[2];
-   blend->blend1.write_disable_a = params->color_write_disable[3];
+   for (unsigned i = 0; i < params->num_draw_buffers; ++i) {
+  blend[i].blend1.pre_blend_clamp_enable = 1;
+  blend[i].blend1.post_blend_clamp_enable = 1;
+  blend[i].blend1.clamp_range = BRW_RENDERTARGET_CLAMPRANGE_FORMAT;
+   }
 
return cc_blend_state_offset;
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Refactor rb surface setup to allow caller to store offsets

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: c8b0d890c0b7e6aa5ed326b94ac30dcb7278e7ea
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c8b0d890c0b7e6aa5ed326b94ac30dcb7278e7ea

Author: Topi Pohjolainen 
Date:   Tue Mar 17 13:09:16 2015 +0200

i965: Refactor rb surface setup to allow caller to store offsets

Notice that in gen7_wm_surface_state.c there is also indentation
change in the surrounding code removing tabs.

v2 (Matt): Fixed whitespace: tabs -> spaces

Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_context.h   |8 ++---
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c  |   38 +++--
 src/mesa/drivers/dri/i965/gen6_surface_state.c|   25 +++---
 src/mesa/drivers/dri/i965/gen7_wm_surface_state.c |   28 +++
 src/mesa/drivers/dri/i965/gen8_surface_state.c|   18 +-
 5 files changed, 59 insertions(+), 58 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_context.h 
b/src/mesa/drivers/dri/i965/brw_context.h
index 8db1028..e2f26f5 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -967,10 +967,10 @@ struct brw_context
  unsigned unit,
  uint32_t *surf_offset,
  bool for_gather);
-  void (*update_renderbuffer_surface)(struct brw_context *brw,
- struct gl_renderbuffer *rb,
- bool layered,
- unsigned unit);
+  uint32_t (*update_renderbuffer_surface)(struct brw_context *brw,
+  struct gl_renderbuffer *rb,
+  bool layered, unsigned unit,
+  uint32_t surf_index);
 
   void (*emit_texture_surface_state)(struct brw_context *brw,
  struct intel_mipmap_tree *mt,
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 
b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 161d140..d451940 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -626,11 +626,11 @@ brw_emit_null_surface_state(struct brw_context *brw,
  * While it is only used for the front/back buffer currently, it should be
  * usable for further buffers when doing ARB_draw_buffer support.
  */
-static void
+static uint32_t
 brw_update_renderbuffer_surface(struct brw_context *brw,
-   struct gl_renderbuffer *rb,
-   bool layered,
-   unsigned int unit)
+struct gl_renderbuffer *rb,
+bool layered, unsigned unit,
+uint32_t surf_index)
 {
struct gl_context *ctx = &brw->ctx;
struct intel_renderbuffer *irb = intel_renderbuffer(rb);
@@ -638,11 +638,10 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
uint32_t *surf;
uint32_t tile_x, tile_y;
uint32_t format = 0;
+   uint32_t offset;
/* _NEW_BUFFERS */
mesa_format rb_format = _mesa_get_render_format(ctx, intel_rb_format(irb));
/* BRW_NEW_FS_PROG_DATA */
-   uint32_t surf_index =
-  brw->wm.prog_data->binding_table.render_target_start + unit;
 
assert(!layered);
 
@@ -663,8 +662,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
 
intel_miptree_used_for_rendering(irb->mt);
 
-   surf = brw_state_batch(brw, AUB_TRACE_SURFACE_STATE, 6 * 4, 32,
-  &brw->wm.base.surf_offset[surf_index]);
+   surf = brw_state_batch(brw, AUB_TRACE_SURFACE_STATE, 6 * 4, 32, &offset);
 
format = brw->render_target_format[rb_format];
if (unlikely(!brw->format_supported_as_render_target[rb_format])) {
@@ -721,11 +719,13 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
}
 
drm_intel_bo_emit_reloc(brw->batch.bo,
-  brw->wm.base.surf_offset[surf_index] + 4,
-  mt->bo,
-  surf[1] - mt->bo->offset64,
-  I915_GEM_DOMAIN_RENDER,
-  I915_GEM_DOMAIN_RENDER);
+   offset + 4,
+   mt->bo,
+   surf[1] - mt->bo->offset64,
+   I915_GEM_DOMAIN_RENDER,
+   I915_GEM_DOMAIN_RENDER);
+
+   return offset;
 }
 
 /**
@@ -743,13 +743,15 @@ brw_update_renderbuffer_surfaces(struct brw_context *brw)
/* Update surfaces for drawing buffers */
if (ctx->DrawBuffer->_NumColorDrawBuffers >= 1) {
   for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) {
+ const uint32_t surf_index =
+brw->wm.prog_data->binding_table.render_target_start +

Mesa (master): i965: Remove dependency to tex object in default color setup

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: 47f32cb50d19145ed502e1fccd949d931c0cd392
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=47f32cb50d19145ed502e1fccd949d931c0cd392

Author: Topi Pohjolainen 
Date:   Sat Apr  4 20:28:45 2015 +0300

i965: Remove dependency to tex object in default color setup

Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/brw_sampler_state.c |   22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_sampler_state.c 
b/src/mesa/drivers/dri/i965/brw_sampler_state.c
index c4bd949..c78e2e3 100644
--- a/src/mesa/drivers/dri/i965/brw_sampler_state.c
+++ b/src/mesa/drivers/dri/i965/brw_sampler_state.c
@@ -201,16 +201,13 @@ wrap_mode_needs_border_color(unsigned wrap_mode)
 static void
 upload_default_color(struct brw_context *brw,
  const struct gl_sampler_object *sampler,
- int unit,
+ mesa_format format, GLenum base_format,
+ bool is_integer_format,
  uint32_t *sdc_offset)
 {
-   struct gl_context *ctx = &brw->ctx;
-   struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-   struct gl_texture_object *texObj = texUnit->_Current;
-   struct gl_texture_image *firstImage = texObj->Image[0][texObj->BaseLevel];
union gl_color_union color;
 
-   switch (firstImage->_BaseFormat) {
+   switch (base_format) {
case GL_DEPTH_COMPONENT:
   /* GL specs that border color for depth textures is taken from the
* R channel, while the hardware uses A.  Spam R into all the
@@ -257,7 +254,7 @@ upload_default_color(struct brw_context *brw,
 * where we've initialized the A channel to 1.0.  We also have to set
 * the border color alpha to 1.0 in that case.
 */
-   if (firstImage->_BaseFormat == GL_RGB)
+   if (base_format == GL_RGB)
   color.ui[3] = float_as_int(1.0);
 
if (brw->gen >= 8) {
@@ -269,7 +266,7 @@ upload_default_color(struct brw_context *brw,
   uint32_t *sdc = brw_state_batch(brw, AUB_TRACE_SAMPLER_DEFAULT_COLOR,
   4 * 4, 64, sdc_offset);
   memcpy(sdc, color.ui, 4 * 4);
-   } else if (brw->is_haswell && texObj->_IsIntegerFormat) {
+   } else if (brw->is_haswell && is_integer_format) {
   /* Haswell's integer border color support is completely insane:
* SAMPLER_BORDER_COLOR_STATE is 20 DWords.  The first four are
* for float colors.  The next 12 DWords are MBZ and only exist to
@@ -283,7 +280,6 @@ upload_default_color(struct brw_context *brw,
   memset(sdc, 0, 20 * 4);
   sdc = &sdc[16];
 
-  mesa_format format = firstImage->TexFormat;
   int bits_per_channel = _mesa_get_format_bits(format, GL_RED_BITS);
 
   /* From the Haswell PRM, "Command Reference: Structures", Page 36:
@@ -314,7 +310,7 @@ upload_default_color(struct brw_context *brw,
  ((uint16_t *) sdc)[5] = c[3]; /* A -> DWord 3, bits 31:16 */
  break;
   case 32:
- if (firstImage->_BaseFormat == GL_RG) {
+ if (base_format == GL_RG) {
 /* Careful inspection of the tables reveals that for RG32 formats,
  * the green channel needs to go where blue normally belongs.
  */
@@ -510,7 +506,11 @@ brw_update_sampler_state(struct brw_context *brw,
if (wrap_mode_needs_border_color(wrap_s) ||
wrap_mode_needs_border_color(wrap_t) ||
wrap_mode_needs_border_color(wrap_r)) {
-  upload_default_color(brw, sampler, unit, &border_color_offset);
+  const struct gl_texture_image *first_image =
+ texObj->Image[0][texObj->BaseLevel];
+  upload_default_color(brw, sampler,
+   first_image->TexFormat, first_image->_BaseFormat,
+   texObj->_IsIntegerFormat, &border_color_offset);
}
 
const bool non_normalized_coords = texObj->Target == GL_TEXTURE_RECTANGLE;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/blorp: Refactor vertex buffer state setup

2015-04-29 Thread Topi Pohjolainen
Module: Mesa
Branch: master
Commit: bfdacac86cf82a1ae8d76e3282b8842f08a21c31
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bfdacac86cf82a1ae8d76e3282b8842f08a21c31

Author: Topi Pohjolainen 
Date:   Fri Feb 27 11:17:05 2015 +0200

i965/blorp: Refactor vertex buffer state setup

Reviewed-by: Kenneth Graunke 
Signed-off-by: Topi Pohjolainen 

---

 src/mesa/drivers/dri/i965/gen6_blorp.cpp |   60 +-
 1 file changed, 34 insertions(+), 26 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp 
b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
index e45705a..6c139ec 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
@@ -93,6 +93,37 @@ gen6_blorp_emit_state_base_address(struct brw_context *brw,
ADVANCE_BATCH();
 }
 
+static void
+gen6_blorp_emit_vertex_buffer_state(struct brw_context *brw,
+unsigned num_elems,
+unsigned vbo_size,
+uint32_t vertex_offset)
+{
+   /* 3DSTATE_VERTEX_BUFFERS */
+   const int num_buffers = 1;
+   const int batch_length = 1 + 4 * num_buffers;
+
+   uint32_t dw0 = GEN6_VB0_ACCESS_VERTEXDATA |
+  (num_elems * sizeof(float)) << BRW_VB0_PITCH_SHIFT;
+
+   if (brw->gen >= 7)
+  dw0 |= GEN7_VB0_ADDRESS_MODIFYENABLE;
+
+   if (brw->gen == 7)
+  dw0 |= GEN7_MOCS_L3 << 16;
+
+   BEGIN_BATCH(batch_length);
+   OUT_BATCH((_3DSTATE_VERTEX_BUFFERS << 16) | (batch_length - 2));
+   OUT_BATCH(dw0);
+   /* start address */
+   OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_VERTEX, 0,
+ vertex_offset);
+   /* end address */
+   OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_VERTEX, 0,
+ vertex_offset + vbo_size - 1);
+   OUT_BATCH(0);
+   ADVANCE_BATCH();
+}
 
 void
 gen6_blorp_emit_vertices(struct brw_context *brw,
@@ -144,32 +175,9 @@ gen6_blorp_emit_vertices(struct brw_context *brw,
   memcpy(vertex_data, vertices, GEN6_BLORP_VBO_SIZE);
}
 
-   /* 3DSTATE_VERTEX_BUFFERS */
-   {
-  const int num_buffers = 1;
-  const int batch_length = 1 + 4 * num_buffers;
-
-  uint32_t dw0 = GEN6_VB0_ACCESS_VERTEXDATA |
- (GEN6_BLORP_NUM_VUE_ELEMS * sizeof(float)) << 
BRW_VB0_PITCH_SHIFT;
-
-  if (brw->gen >= 7)
- dw0 |= GEN7_VB0_ADDRESS_MODIFYENABLE;
-
-  if (brw->gen == 7)
- dw0 |= GEN7_MOCS_L3 << 16;
-
-  BEGIN_BATCH(batch_length);
-  OUT_BATCH((_3DSTATE_VERTEX_BUFFERS << 16) | (batch_length - 2));
-  OUT_BATCH(dw0);
-  /* start address */
-  OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_VERTEX, 0,
-   vertex_offset);
-  /* end address */
-  OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_VERTEX, 0,
-   vertex_offset + GEN6_BLORP_VBO_SIZE - 1);
-  OUT_BATCH(0);
-  ADVANCE_BATCH();
-   }
+   gen6_blorp_emit_vertex_buffer_state(brw, GEN6_BLORP_NUM_VUE_ELEMS,
+   GEN6_BLORP_VBO_SIZE,
+   vertex_offset);
 
/* 3DSTATE_VERTEX_ELEMENTS
 *

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gk110/ir: fix set with a register dest to not auto-set the abs flag

2015-04-29 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 515ac907e68ae1485bd9c65d7351dfb3c3d1e33f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=515ac907e68ae1485bd9c65d7351dfb3c3d1e33f

Author: Ilia Mirkin 
Date:   Wed Apr 29 18:01:53 2015 -0400

gk110/ir: fix set with a register dest to not auto-set the abs flag

This was causing src0 to always have the absolute value flag set.

Signed-off-by: Ilia Mirkin 
Cc: mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp 
b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
index a73bee2..d7c6b80 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -971,7 +971,7 @@ CodeEmitterGK110::emitSET(const CmpInstruction *i)
   code[0] |= 0x1c;
} else {
   switch (i->sType) {
-  case TYPE_F32: op2 = 0x000; op1 = 0x820; break;
+  case TYPE_F32: op2 = 0x000; op1 = 0x800; break;
   case TYPE_F64: op2 = 0x080; op1 = 0x900; break;
   default:
  op2 = 0x1a8;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): nvc0/ir: fix predicated PFETCH emission

2015-04-29 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: a9d08a250ada5fbd4e3f78f8e4119ec295d692cf
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a9d08a250ada5fbd4e3f78f8e4119ec295d692cf

Author: Ilia Mirkin 
Date:   Wed Apr 29 23:05:44 2015 -0400

nvc0/ir: fix predicated PFETCH emission

src1 would contain the predicate, which would get emitted as a register
source by an undiscerning srcId helper. Work around this in the same way
as in emitTEX.

Signed-off-by: Ilia Mirkin 
Cc: mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp |4 +++-
 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp  |4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp 
b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
index d7c6b80..a6e6c1f 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -1333,8 +1333,10 @@ CodeEmitterGK110::emitPFETCH(const Instruction *i)
 
emitPredicate(i);
 
+   const int src1 = (i->predSrc == 1) ? 2 : 1; // if predSrc == 1, 
!srcExists(2)
+
defId(i->def(0), 2);
-   srcId(i->src(1), 10);
+   srcId(i, 1, 10);
 }
 
 void
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp 
b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
index 1a4f6e0..4ad098e 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
@@ -1495,8 +1495,10 @@ CodeEmitterNVC0::emitPFETCH(const Instruction *i)
 
emitPredicate(i);
 
+   const int src1 = (i->predSrc == 1) ? 2 : 1; // if predSrc == 1, 
!srcExists(2)
+
defId(i->def(0), 14);
-   srcId(i->src(1), 20);
+   srcId(i, 1, 20);
 }
 
 void

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): nv50/ir: fix asFlow() const helper for OP_JOIN

2015-04-29 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: db269ae495425849804fb1d05cfe42b0d3d304b3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=db269ae495425849804fb1d05cfe42b0d3d304b3

Author: Ilia Mirkin 
Date:   Wed Apr 29 23:33:27 2015 -0400

nv50/ir: fix asFlow() const helper for OP_JOIN

Signed-off-by: Ilia Mirkin 
Cc: mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/nouveau/codegen/nv50_ir_inlines.h |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_inlines.h 
b/src/gallium/drivers/nouveau/codegen/nv50_ir_inlines.h
index 255324f..e465f24 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_inlines.h
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_inlines.h
@@ -302,7 +302,7 @@ FlowInstruction *Instruction::asFlow()
 
 const FlowInstruction *Instruction::asFlow() const
 {
-   if (op >= OP_BRA && op <= OP_JOINAT)
+   if (op >= OP_BRA && op <= OP_JOIN)
   return static_cast(this);
return NULL;
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): nvc0/ir: fix predicated PFETCH for real

2015-04-29 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 33f0d1138d6ffa4596d3deda68fa5ba9a3d7cf86
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=33f0d1138d6ffa4596d3deda68fa5ba9a3d7cf86

Author: Ilia Mirkin 
Date:   Thu Apr 30 02:01:22 2015 -0400

nvc0/ir: fix predicated PFETCH for real

Commit a9d08a250 accidentally didn't make use of the new src1 variable.
Use it.

Signed-off-by: Ilia Mirkin 
Cc: mesa-sta...@lists.freedesktop.org

---

 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp |2 +-
 src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp  |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp 
b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
index a6e6c1f..6bb9620 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -1336,7 +1336,7 @@ CodeEmitterGK110::emitPFETCH(const Instruction *i)
const int src1 = (i->predSrc == 1) ? 2 : 1; // if predSrc == 1, 
!srcExists(2)
 
defId(i->def(0), 2);
-   srcId(i, 1, 10);
+   srcId(i, src1, 10);
 }
 
 void
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp 
b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
index 4ad098e..d9aed34 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp
@@ -1498,7 +1498,7 @@ CodeEmitterNVC0::emitPFETCH(const Instruction *i)
const int src1 = (i->predSrc == 1) ? 2 : 1; // if predSrc == 1, 
!srcExists(2)
 
defId(i->def(0), 14);
-   srcId(i, 1, 20);
+   srcId(i, src1, 20);
 }
 
 void

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit