Mesa (master): st/nir: make st_nir_opts() available externally

2018-05-11 Thread Timothy Arceri
Module: Mesa
Branch: master
Commit: 0b3e9564bdda575c3956f338454f4f632041e151
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b3e9564bdda575c3956f338454f4f632041e151

Author: Timothy Arceri 
Date:   Wed May  9 13:25:46 2018 +1000

st/nir: make st_nir_opts() available externally

The following patch will make use of this for asm style programs.

Reviewed-by: Eric Anholt 

---

 src/mesa/state_tracker/st_glsl_to_nir.cpp | 2 +-
 src/mesa/state_tracker/st_nir.h   | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp 
b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index 3b261cf1b2..de906e60c3 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -314,7 +314,7 @@ st_nir_assign_uniform_locations(struct gl_context *ctx,
*size = max;
 }
 
-static void
+void
 st_nir_opts(nir_shader *nir)
 {
bool progress;
diff --git a/src/mesa/state_tracker/st_nir.h b/src/mesa/state_tracker/st_nir.h
index 1c2e32a5e6..15f1ce93e5 100644
--- a/src/mesa/state_tracker/st_nir.h
+++ b/src/mesa/state_tracker/st_nir.h
@@ -42,6 +42,8 @@ void st_finalize_nir(struct st_context *st, struct gl_program 
*prog,
  struct gl_shader_program *shader_program,
  struct nir_shader *nir);
 
+void st_nir_opts(struct nir_shader *nir);
+
 bool
 st_link_nir(struct gl_context *ctx,
 struct gl_shader_program *shader_program);

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


Mesa (master): st/nir: use NIR for asm programs

2018-05-11 Thread Timothy Arceri
Module: Mesa
Branch: master
Commit: 5c33e8c7729edd5e16020ebb8703be96523e04f2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5c33e8c7729edd5e16020ebb8703be96523e04f2

Author: Timothy Arceri 
Date:   Wed May  9 13:28:05 2018 +1000

st/nir: use NIR for asm programs

Reviewed-by: Eric Anholt 

---

 src/mesa/state_tracker/st_program.c | 65 +
 1 file changed, 58 insertions(+), 7 deletions(-)

diff --git a/src/mesa/state_tracker/st_program.c 
b/src/mesa/state_tracker/st_program.c
index f256e2e862..a52c9f8256 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -37,6 +37,7 @@
 #include "main/mtypes.h"
 #include "program/prog_parameter.h"
 #include "program/prog_print.h"
+#include "program/prog_to_nir.h"
 #include "program/programopt.h"
 
 #include "compiler/nir/nir.h"
@@ -378,6 +379,28 @@ st_release_cp_variants(struct st_context *st, struct 
st_compute_program *stcp)
 }
 
 /**
+ * Translate ARB (asm) program to NIR
+ */
+static nir_shader *
+st_translate_prog_to_nir(struct st_context *st, struct gl_program *prog,
+ gl_shader_stage stage)
+{
+   const struct gl_shader_compiler_options *options =
+  &st->ctx->Const.ShaderCompilerOptions[stage];
+
+   /* Translate to NIR */
+   nir_shader *nir = prog_to_nir(prog, options->NirOptions);
+   NIR_PASS_V(nir, nir_lower_regs_to_ssa); /* turn registers into SSA */
+   nir_validate_shader(nir);
+
+   /* Optimise NIR */
+   st_nir_opts(nir);
+   nir_validate_shader(nir);
+
+   return nir;
+}
+
+/**
  * Translate a vertex program.
  */
 bool
@@ -458,15 +481,28 @@ st_translate_vertex_program(struct st_context *st,
   /* No samplers are allowed in ARB_vp. */
}
 
-   if (stvp->shader_program) {
-  struct gl_program *prog = stvp->shader_program->last_vert_prog;
-  if (prog) {
- st_translate_stream_output_info2(prog->sh.LinkedTransformFeedback,
-  stvp->result_to_output,
-  &stvp->tgsi.stream_output);
+   enum pipe_shader_ir preferred_ir = (enum pipe_shader_ir)
+  st->pipe->screen->get_shader_param(st->pipe->screen, PIPE_SHADER_VERTEX,
+ PIPE_SHADER_CAP_PREFERRED_IR);
+
+   if (preferred_ir == PIPE_SHADER_IR_NIR) {
+  if (stvp->shader_program) {
+ struct gl_program *prog = stvp->shader_program->last_vert_prog;
+ if (prog) {
+st_translate_stream_output_info2(prog->sh.LinkedTransformFeedback,
+ stvp->result_to_output,
+ &stvp->tgsi.stream_output);
+ }
+
+ st_store_ir_in_disk_cache(st, &stvp->Base, true);
+  } else {
+ nir_shader *nir = st_translate_prog_to_nir(st, &stvp->Base,
+MESA_SHADER_VERTEX);
+
+ stvp->tgsi.type = PIPE_SHADER_IR_NIR;
+ stvp->tgsi.ir.nir = nir;
   }
 
-  st_store_ir_in_disk_cache(st, &stvp->Base, true);
   return true;
}
 
@@ -706,6 +742,21 @@ st_translate_fragment_program(struct st_context *st,
   }
}
 
+   enum pipe_shader_ir preferred_ir = (enum pipe_shader_ir)
+  st->pipe->screen->get_shader_param(st->pipe->screen,
+ PIPE_SHADER_FRAGMENT,
+ PIPE_SHADER_CAP_PREFERRED_IR);
+
+   if (preferred_ir == PIPE_SHADER_IR_NIR) {
+  nir_shader *nir = st_translate_prog_to_nir(st, &stfp->Base,
+ MESA_SHADER_FRAGMENT);
+
+  stfp->tgsi.type = PIPE_SHADER_IR_NIR;
+  stfp->tgsi.ir.nir = nir;
+
+  return true;
+   }
+
/*
 * Convert Mesa program inputs to TGSI input register semantics.
 */

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


Mesa: tag mesa-18.1.0-rc4: mesa-18.1.0-rc4

2018-05-11 Thread Dylan Baker
Module: Mesa
Branch: refs/tags/mesa-18.1.0-rc4
Tag:a428d00619069fd307efdfe557c6cb649cd87c99
URL:
http://cgit.freedesktop.org/mesa/mesa/tag/?id=a428d00619069fd307efdfe557c6cb649cd87c99

Tagger: Dylan Baker 
Date:   Fri May 11 16:29:28 2018 -0700

mesa-18.1.0-rc4
___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeon/vce: add firmware support for ver 53 and up

2018-05-11 Thread Leo Liu
Module: Mesa
Branch: master
Commit: 0907d3ab9c61ee1fc841aaf22fb4a5ab38633a0c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0907d3ab9c61ee1fc841aaf22fb4a5ab38633a0c

Author: Boyuan Zhang 
Date:   Tue May  8 14:35:06 2018 -0400

radeon/vce: add firmware support for ver 53 and up

All vce firmwares with major version greater than or equal to 53 are supported

Signed-off-by: Boyuan Zhang 
Reviewed-by: Leo Liu 

---

 src/gallium/drivers/radeon/radeon_vce.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_vce.c 
b/src/gallium/drivers/radeon/radeon_vce.c
index 22168b50e2..6d1b1ff787 100644
--- a/src/gallium/drivers/radeon/radeon_vce.c
+++ b/src/gallium/drivers/radeon/radeon_vce.c
@@ -506,7 +506,7 @@ struct pipe_video_codec *si_vce_create_encoder(struct 
pipe_context *context,
break;
 
default:
-   if ((sscreen->info.vce_fw_version & (0xff << 24)) == FW_53) {
+   if ((sscreen->info.vce_fw_version & (0xff << 24)) >= FW_53) {
si_vce_52_init(enc);
si_get_pic_param = si_vce_52_get_param;
} else
@@ -542,7 +542,7 @@ bool si_vce_is_fw_version_supported(struct si_screen 
*sscreen)
case FW_52_8_3:
return true;
default:
-   if ((sscreen->info.vce_fw_version & (0xff << 24)) == FW_53)
+   if ((sscreen->info.vce_fw_version & (0xff << 24)) >= FW_53)
return true;
else
return false;

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


Mesa (master): etnaviv: remove pipe_fence_handle::ctx

2018-05-11 Thread Christian Gmeiner
Module: Mesa
Branch: master
Commit: a7c81a7f676618723de547b71d57eb3781147ba2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a7c81a7f676618723de547b71d57eb3781147ba2

Author: Rob Clark 
Date:   Tue May  8 21:00:18 2018 -0400

etnaviv: remove pipe_fence_handle::ctx

A fence can outlive the ctx it was created from (see glmark2).. etnaviv
doesn't actually need fence->ctx so lets remove it before someone makes
the mistake of assuming it is a valid pointer.

Signed-off-by: Rob Clark 
Reviewed-by: Christian Gmeiner 

---

 src/gallium/drivers/etnaviv/etnaviv_fence.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_fence.c 
b/src/gallium/drivers/etnaviv/etnaviv_fence.c
index 22a964ad28..cf3e67766b 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_fence.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_fence.c
@@ -36,7 +36,6 @@
 
 struct pipe_fence_handle {
struct pipe_reference reference;
-   struct etna_context *ctx;
struct etna_screen *screen;
int fence_fd;
uint32_t timestamp;
@@ -111,7 +110,6 @@ etna_fence_create(struct pipe_context *pctx, int fence_fd)
 
pipe_reference_init(&fence->reference, 1);
 
-   fence->ctx = ctx;
fence->screen = ctx->screen;
fence->timestamp = etna_cmd_stream_timestamp(ctx->stream);
fence->fence_fd = fence_fd;

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


Mesa (master): swr/rast: Prepend the console output with a newline

2018-05-11 Thread George Kyriazis
Module: Mesa
Branch: master
Commit: 8cb55dae2e796445635303f03a0e1e6c01a767d5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8cb55dae2e796445635303f03a0e1e6c01a767d5

Author: George Kyriazis 
Date:   Mon Apr 30 17:45:55 2018 -0500

swr/rast: Prepend the console output with a newline

It can get jumbled with output from other threads.

Reviewed-by: Bruce Cherniak 

---

 .../swr/rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp
 
b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp
index ceded82b73..79612f3120 100644
--- 
a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp
+++ 
b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp
@@ -59,7 +59,7 @@ namespace ArchRast
 outDir << KNOB_DEBUG_OUTPUT_DIR << pBaseName << "_" << pid << 
std::ends;
 mOutputDir = outDir.str();
 if (CreateDirectory(mOutputDir.c_str(), NULL)) {
-std::cout << "ArchRast Dir:  " << mOutputDir << std::endl 
<< std::endl << std::flush;
+std::cout << std::endl << "ArchRast Dir:   " << mOutputDir 
<< std::endl << std::endl << std::flush;
 }
 
 // There could be multiple threads creating thread pools. We

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


Mesa (master): swr/rast: Add ConcatLists()

2018-05-11 Thread George Kyriazis
Module: Mesa
Branch: master
Commit: db25fcfcdebe96d65f62692d4f0729dcee6ee2e0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=db25fcfcdebe96d65f62692d4f0729dcee6ee2e0

Author: George Kyriazis 
Date:   Fri Apr 27 18:05:00 2018 -0500

swr/rast: Add ConcatLists()

for concatenating lists

Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/rasterizer/codegen/gen_common.py | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/src/gallium/drivers/swr/rasterizer/codegen/gen_common.py 
b/src/gallium/drivers/swr/rasterizer/codegen/gen_common.py
index 44a0cc88e3..60b749d3ab 100644
--- a/src/gallium/drivers/swr/rasterizer/codegen/gen_common.py
+++ b/src/gallium/drivers/swr/rasterizer/codegen/gen_common.py
@@ -32,6 +32,12 @@ from mako.template import Template
 from mako.exceptions import RichTraceback
 
 #==
+def ConcatLists(list_of_lists):
+output = []
+for l in list_of_lists: output += l
+return output
+
+#==
 def MakeTmpDir(suffix=''):
 '''
 Create temporary directory for use in codegen scripts.

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


Mesa (master): swr/rast: Change formatting

2018-05-11 Thread George Kyriazis
Module: Mesa
Branch: master
Commit: b3b0f0e0ec98d1da42554764adc17402535fa0b7
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b3b0f0e0ec98d1da42554764adc17402535fa0b7

Author: George Kyriazis 
Date:   Wed Apr 25 22:20:01 2018 -0500

swr/rast: Change formatting

Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/rasterizer/core/api.cpp | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/swr/rasterizer/core/api.cpp 
b/src/gallium/drivers/swr/rasterizer/core/api.cpp
index a2ee85d12b..3458793fd8 100644
--- a/src/gallium/drivers/swr/rasterizer/core/api.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/api.cpp
@@ -475,7 +475,12 @@ void SetupDefaultState(SWR_CONTEXT *pContext)
 pState->depthBoundsState.depthBoundsTestMaxValue = 1.0f;
 }
 
-void SwrSync(HANDLE hContext, PFN_CALLBACK_FUNC pfnFunc, uint64_t userData, 
uint64_t userData2, uint64_t userData3)
+void SWR_API SwrSync(
+HANDLE hContext,
+PFN_CALLBACK_FUNC pfnFunc,
+uint64_t userData,
+uint64_t userData2,
+uint64_t userData3)
 {
 SWR_ASSERT(pfnFunc != nullptr);
 

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


Mesa (master): swr/rast: Use binner topology to assemble backend attributes

2018-05-11 Thread George Kyriazis
Module: Mesa
Branch: master
Commit: 70f0a28b83d9977e106f80cfd033e0796bc43f2f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=70f0a28b83d9977e106f80cfd033e0796bc43f2f

Author: George Kyriazis 
Date:   Thu Apr 26 16:12:24 2018 -0500

swr/rast: Use binner topology to assemble backend attributes

Previously was using the draw topology, which may change if GS or Tess
are active. Only affected attributes marked with constant interpolation,
which limited the impact.

Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/rasterizer/core/binner.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/swr/rasterizer/core/binner.cpp 
b/src/gallium/drivers/swr/rasterizer/core/binner.cpp
index 9f8dc887aa..7b9c20ef80 100644
--- a/src/gallium/drivers/swr/rasterizer/core/binner.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/binner.cpp
@@ -81,7 +81,7 @@ INLINE void ProcessAttributes(
 // Conservative Rasterization requires degenerate tris to have constant 
attribute interpolation
 uint32_t constantInterpMask = IsDegenerate::value ? 0x : 
backendState.constantInterpolationMask;
 const uint32_t provokingVertex = 
pDC->pState->state.frontendState.topologyProvokingVertex;
-const PRIMITIVE_TOPOLOGY topo = pDC->pState->state.topology;
+const PRIMITIVE_TOPOLOGY topo = pa.binTopology;
 
 static const float constTable[3][4] = {
 { 0.0f, 0.0f, 0.0f, 0.0f },

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


Mesa (master): swr/rast: Add Builder::GetVectorType()

2018-05-11 Thread George Kyriazis
Module: Mesa
Branch: master
Commit: 8238c791dcd244c5d242b0e61cbc744ed64e5e23
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8238c791dcd244c5d242b0e61cbc744ed64e5e23

Author: George Kyriazis 
Date:   Tue May  1 16:33:19 2018 -0500

swr/rast: Add Builder::GetVectorType()

Reviewed-by: Bruce Cherniak 

---

 .../drivers/swr/rasterizer/jitter/builder.cpp  | 44 ++
 .../drivers/swr/rasterizer/jitter/builder.h|  1 +
 2 files changed, 45 insertions(+)

diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder.cpp 
b/src/gallium/drivers/swr/rasterizer/jitter/builder.cpp
index 32487353f8..e1c5d80c80 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder.cpp
@@ -170,4 +170,48 @@ namespace SwrJit
 return (pGenIntrin->getMetadata("is_evaluate") != nullptr);
 }
 
+//
+/// @brief Packetizes the type. Assumes SOA conversion.
+Type* Builder::GetVectorType(Type* pType)
+{
+if (pType->isVectorTy())
+{
+return pType;
+}
+
+// [N x float] should packetize to [N x <8 x float>]
+if (pType->isArrayTy())
+{
+uint32_t arraySize = pType->getArrayNumElements();
+Type* pArrayType = pType->getArrayElementType();
+Type* pVecArrayType = GetVectorType(pArrayType);
+Type* pVecType = ArrayType::get(pVecArrayType, arraySize);
+return pVecType;
+}
+
+// {float,int} should packetize to {<8 x float>, <8 x int>}
+if (pType->isAggregateType())
+{
+uint32_t numElems = pType->getStructNumElements();
+SmallVector vecTypes;
+for (uint32_t i = 0; i < numElems; ++i)
+{
+Type* pElemType = pType->getStructElementType(i);
+Type* pVecElemType = GetVectorType(pElemType);
+vecTypes.push_back(pVecElemType);
+}
+Type* pVecType = StructType::get(JM()->mContext, vecTypes);
+return pVecType;
+}
+
+// [N x float]* should packetize to [N x <8 x float>]*
+if (pType->isPointerTy() && 
pType->getPointerElementType()->isArrayTy())
+{
+return 
PointerType::get(GetVectorType(pType->getPointerElementType()), 
pType->getPointerAddressSpace());
+}
+
+//  should packetize to <8 x >
+Type* vecType = VectorType::get(pType, JM()->mVWidth);
+return vecType;
+}
 }
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder.h 
b/src/gallium/drivers/swr/rasterizer/jitter/builder.h
index 82c5f8cde2..6ca128d38f 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder.h
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder.h
@@ -123,6 +123,7 @@ namespace SwrJit
 bool IsTempAlloca(Value* inst);
 bool SetTexelMaskEvaluate(Instruction* inst);
 bool IsTexelMaskEvaluate(Instruction* inst);
+Type* GetVectorType(Type* pType);
 
 #include "gen_builder.hpp"
 #include "gen_builder_meta.hpp"

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


Mesa (master): swr/rast: Add constant initializer for uint64_t

2018-05-11 Thread George Kyriazis
Module: Mesa
Branch: master
Commit: dcaca3c7b34f4b9c150860cde19c8f21d13bf51f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dcaca3c7b34f4b9c150860cde19c8f21d13bf51f

Author: George Kyriazis 
Date:   Thu Apr 26 19:29:40 2018 -0500

swr/rast: Add constant initializer for uint64_t

Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp | 5 +
 src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h   | 1 +
 2 files changed, 6 insertions(+)

diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp 
b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
index 619a67beba..231fa94d00 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
@@ -182,6 +182,11 @@ namespace SwrJit
 return ConstantInt::get(IRB()->getInt32Ty(), i);
 }
 
+Constant *Builder::C(uint64_t i)
+{
+return ConstantInt::get(IRB()->getInt64Ty(), i);
+}
+
 Constant *Builder::C(float i)
 {
 return ConstantFP::get(IRB()->getFloatTy(), i);
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h 
b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
index a51aad05a0..d7732ef8c2 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
@@ -34,6 +34,7 @@ Constant *C(char i);
 Constant *C(uint8_t i);
 Constant *C(int i);
 Constant *C(int64_t i);
+Constant *C(uint64_t i);
 Constant *C(uint16_t i);
 Constant *C(uint32_t i);
 Constant *C(float i);

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


Mesa (master): swr/rast: Thread locked tiles improvement

2018-05-11 Thread George Kyriazis
Module: Mesa
Branch: master
Commit: 4e52cb51b56eaae7153394ed712f49ce0ba63bcc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e52cb51b56eaae7153394ed712f49ce0ba63bcc

Author: George Kyriazis 
Date:   Tue May  1 19:33:38 2018 -0500

swr/rast: Thread locked tiles improvement

- Change tilemgr TILE_ID encoding to use Morton-order (Z-order).
- Change locked tiles set to bitset.  Makes clear, set, get much faster.

Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/rasterizer/core/api.cpp|  11 ++-
 src/gallium/drivers/swr/rasterizer/core/context.h  |   2 +-
 .../drivers/swr/rasterizer/core/threads.cpp|   5 +-
 src/gallium/drivers/swr/rasterizer/core/threads.h  |   2 +-
 .../drivers/swr/rasterizer/core/tilemgr.cpp|  31 +++---
 src/gallium/drivers/swr/rasterizer/core/tilemgr.h  |  20 ++--
 src/gallium/drivers/swr/rasterizer/core/tileset.h  | 105 +
 7 files changed, 152 insertions(+), 24 deletions(-)

diff --git a/src/gallium/drivers/swr/rasterizer/core/api.cpp 
b/src/gallium/drivers/swr/rasterizer/core/api.cpp
index 3458793fd8..47f3633d54 100644
--- a/src/gallium/drivers/swr/rasterizer/core/api.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/api.cpp
@@ -42,6 +42,7 @@
 #include "core/tilemgr.h"
 #include "core/clip.h"
 #include "core/utils.h"
+#include "core/tileset.h"
 
 #include "common/os.h"
 
@@ -139,6 +140,11 @@ HANDLE SwrCreateContext(
 BindApiThread(pContext, 0);
 }
 
+if (pContext->threadInfo.SINGLE_THREADED)
+{
+pContext->pSingleThreadLockedTiles = new TileSet();
+}
+
 pContext->ppScratch = new uint8_t*[pContext->NumWorkerThreads];
 pContext->pStats = (SWR_STATS*)AlignedMalloc(sizeof(SWR_STATS) * 
pContext->NumWorkerThreads, 64);
 
@@ -245,7 +251,7 @@ void QueueWork(SWR_CONTEXT *pContext)
 {
 uint32_t curDraw[2] = { pContext->pCurDrawContext->drawId, 
pContext->pCurDrawContext->drawId };
 WorkOnFifoFE(pContext, 0, curDraw[0]);
-WorkOnFifoBE(pContext, 0, curDraw[1], 
pContext->singleThreadLockedTiles, 0, 0);
+WorkOnFifoBE(pContext, 0, curDraw[1], 
*pContext->pSingleThreadLockedTiles, 0, 0);
 }
 else
 {
@@ -427,7 +433,8 @@ void SwrDestroyContext(HANDLE hContext)
 delete[] pContext->ppScratch;
 AlignedFree(pContext->pStats);
 
-delete(pContext->pHotTileMgr);
+delete pContext->pHotTileMgr;
+delete pContext->pSingleThreadLockedTiles;
 
 pContext->~SWR_CONTEXT();
 AlignedFree(GetContext(hContext));
diff --git a/src/gallium/drivers/swr/rasterizer/core/context.h 
b/src/gallium/drivers/swr/rasterizer/core/context.h
index af8f4b8db4..2cd61e4abb 100644
--- a/src/gallium/drivers/swr/rasterizer/core/context.h
+++ b/src/gallium/drivers/swr/rasterizer/core/context.h
@@ -516,7 +516,7 @@ struct SWR_CONTEXT
 
 uint32_t lastFrameChecked;
 uint64_t lastDrawChecked;
-TileSet singleThreadLockedTiles;
+TileSet* pSingleThreadLockedTiles;
 
 // ArchRast thread contexts.
 HANDLE* pArContext;
diff --git a/src/gallium/drivers/swr/rasterizer/core/threads.cpp 
b/src/gallium/drivers/swr/rasterizer/core/threads.cpp
index 9e16246c3f..f77ae22a80 100644
--- a/src/gallium/drivers/swr/rasterizer/core/threads.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/threads.cpp
@@ -49,6 +49,7 @@
 #include "rasterizer.h"
 #include "rdtsc_core.h"
 #include "tilemgr.h"
+#include "tileset.h"
 
 
 
@@ -587,7 +588,7 @@ bool WorkOnFifoBE(
 }
 
 // can only work on this draw if it's not in use by other threads
-if (lockedTiles.find(tileID) != lockedTiles.end())
+if (lockedTiles.get(tileID))
 {
 continue;
 }
@@ -645,7 +646,7 @@ bool WorkOnFifoBE(
 else
 {
 // This tile is already locked. So let's add it to our locked 
tiles set. This way we don't try locking this one again.
-lockedTiles.insert(tileID);
+lockedTiles.set(tileID);
 }
 }
 }
diff --git a/src/gallium/drivers/swr/rasterizer/core/threads.h 
b/src/gallium/drivers/swr/rasterizer/core/threads.h
index cb918ddb60..0489a3cc6c 100644
--- a/src/gallium/drivers/swr/rasterizer/core/threads.h
+++ b/src/gallium/drivers/swr/rasterizer/core/threads.h
@@ -62,7 +62,7 @@ struct THREAD_POOL
 THREAD_DATA *pApiThreadData;
 };
 
-typedef std::unordered_set TileSet;
+struct TileSet;
 
 void CreateThreadPool(SWR_CONTEXT *pContext, THREAD_POOL *pPool);
 void StartThreadPool(SWR_CONTEXT* pContext, THREAD_POOL* pPool);
diff --git a/src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp 
b/src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp
index 28fa787711..1bdef4bd7d 100644
--- a/src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp
@@ -33,8 +33,6 @@
 #include "core/multisample.h"
 #include "rdtsc_core.h"
 
-#define TILE_ID(x,y) ((x << 16 | y))
-
 MacroTileMgr

Mesa (18.1): winsys/amdgpu: Destroy dev_hash table when the last winsys is removed.

2018-05-11 Thread Dylan Baker
Module: Mesa
Branch: 18.1
Commit: 36c24a608e81307e7abbc60f2e397bd1fe514fb4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=36c24a608e81307e7abbc60f2e397bd1fe514fb4

Author: Jan Vesely 
Date:   Thu May 10 18:29:13 2018 -0400

winsys/amdgpu: Destroy dev_hash table when the last winsys is removed.

Fixes memory leak on module unload.

CC: 
Signed-off-by: Jan Vesely 
Reviewed-by: Marek Olšák 
(cherry picked from commit 58272c1ad771802a6f15a482ae552649e9085042)

---

 src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c 
b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
index f4bbd3e732..84d8ca6fcf 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
@@ -220,8 +220,13 @@ static bool amdgpu_winsys_unref(struct radeon_winsys *rws)
simple_mtx_lock(&dev_tab_mutex);
 
destroy = pipe_reference(&ws->reference, NULL);
-   if (destroy && dev_tab)
+   if (destroy && dev_tab) {
   util_hash_table_remove(dev_tab, ws->dev);
+  if (util_hash_table_count(dev_tab) == 0) {
+ util_hash_table_destroy(dev_tab);
+ dev_tab = NULL;
+  }
+   }
 
simple_mtx_unlock(&dev_tab_mutex);
return destroy;

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


Mesa (18.1): radeonsi/gfx9: work around a GPU hang due to broken indirect indexing in LLVM

2018-05-11 Thread Dylan Baker
Module: Mesa
Branch: 18.1
Commit: 1def4eaa5c29a7b25d626a37d55f1541273cf336
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1def4eaa5c29a7b25d626a37d55f1541273cf336

Author: Marek Olšák 
Date:   Tue May  1 20:16:19 2018 -0400

radeonsi/gfx9: work around a GPU hang due to broken indirect indexing in LLVM

Fixes: 6d19120da85 "radeonsi/gfx9: workaround for INTERP with indirect indexing"
Cc: 18.1 
Reviewed-by: Nicolai Hähnle 
(cherry picked from commit 597b9e881083533b987dbcbb8f679ca1eefff974)

---

 src/gallium/drivers/radeonsi/si_get.c | 9 +
 1 file changed, 9 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_get.c 
b/src/gallium/drivers/radeonsi/si_get.c
index 04ab0f46bb..6bfbc4d0c4 100644
--- a/src/gallium/drivers/radeonsi/si_get.c
+++ b/src/gallium/drivers/radeonsi/si_get.c
@@ -484,6 +484,15 @@ static int si_get_shader_param(struct pipe_screen* pscreen,
!sscreen->llvm_has_working_vgpr_indexing)
return 0;
 
+   /* Doing indirect indexing on GFX9 with LLVM 6.0 hangs.
+* This means we don't support INTERP instructions with
+* indirect indexing on inputs.
+*/
+   if (shader == PIPE_SHADER_FRAGMENT &&
+   !sscreen->llvm_has_working_vgpr_indexing &&
+   HAVE_LLVM < 0x0700)
+   return 0;
+
/* TCS and TES load inputs directly from LDS or offchip
 * memory, so indirect indexing is always supported.
 * PS has to support indirect indexing, because we can't

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


Mesa (18.1): mesa: revert GL_[SECONDARY_]COLOR_ARRAY_SIZE glGet type to TYPE_INT

2018-05-11 Thread Dylan Baker
Module: Mesa
Branch: 18.1
Commit: 421aedcc5932d2dc23fb18b721d1bbb2180c02d2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=421aedcc5932d2dc23fb18b721d1bbb2180c02d2

Author: Brian Paul 
Date:   Thu May 10 09:24:20 2018 -0600

mesa: revert GL_[SECONDARY_]COLOR_ARRAY_SIZE glGet type to TYPE_INT

Since size can be 3, 4 or GL_BGRA we need to keep these glGet types
as TYPE_INT, not TYPE_UBYTE.

Fixes: d07466fe18522 ("mesa: fix glGetInteger/Float/etc queries for
vertex arrays attribs")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106462
cc: mesa-sta...@lists.freedesktop.org
Reviewed-by: Mathias Fröhlich 

(cherry picked from commit e4211b36bba4acde3e56ce1e22b12759e820a241)

---

 src/mesa/main/get_hash_params.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index 62245693e7..4af12d4309 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -219,7 +219,7 @@ descriptor=[
   [ "NORMAL_ARRAY_TYPE", "ARRAY_ENUM16(VertexAttrib[VERT_ATTRIB_NORMAL].Type), 
NO_EXTRA" ],
   [ "NORMAL_ARRAY_STRIDE", 
"ARRAY_SHORT(VertexAttrib[VERT_ATTRIB_NORMAL].Stride), NO_EXTRA" ],
   [ "COLOR_ARRAY", "ARRAY_BOOL(VertexAttrib[VERT_ATTRIB_COLOR0].Enabled), 
NO_EXTRA" ],
-  [ "COLOR_ARRAY_SIZE", "LOC_CUSTOM, TYPE_UBYTE, 0, NO_EXTRA" ],
+  [ "COLOR_ARRAY_SIZE", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
   [ "COLOR_ARRAY_TYPE", "ARRAY_ENUM16(VertexAttrib[VERT_ATTRIB_COLOR0].Type), 
NO_EXTRA" ],
   [ "COLOR_ARRAY_STRIDE", 
"ARRAY_SHORT(VertexAttrib[VERT_ATTRIB_COLOR0].Stride), NO_EXTRA" ],
   [ "TEXTURE_COORD_ARRAY", "LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct 
gl_array_attributes, Enabled), NO_EXTRA" ],
@@ -812,7 +812,7 @@ descriptor=[
   [ "SECONDARY_COLOR_ARRAY", 
"ARRAY_BOOL(VertexAttrib[VERT_ATTRIB_COLOR1].Enabled), NO_EXTRA" ],
   [ "SECONDARY_COLOR_ARRAY_TYPE", 
"ARRAY_ENUM16(VertexAttrib[VERT_ATTRIB_COLOR1].Type), NO_EXTRA" ],
   [ "SECONDARY_COLOR_ARRAY_STRIDE", 
"ARRAY_SHORT(VertexAttrib[VERT_ATTRIB_COLOR1].Stride), NO_EXTRA" ],
-  [ "SECONDARY_COLOR_ARRAY_SIZE", "LOC_CUSTOM, TYPE_UBYTE, 0, NO_EXTRA" ],
+  [ "SECONDARY_COLOR_ARRAY_SIZE", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
 
 # GL_EXT_fog_coord
   [ "CURRENT_FOG_COORDINATE", 
"CONTEXT_FLOAT(Current.Attrib[VERT_ATTRIB_FOG][0]), extra_flush_current" ],

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


Mesa (18.1): mesa: fix glGetInteger/Float/etc queries for vertex arrays attribs

2018-05-11 Thread Dylan Baker
Module: Mesa
Branch: 18.1
Commit: 5391c4f5fd53e0b757bb9d951c8f716fb9d12f57
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5391c4f5fd53e0b757bb9d951c8f716fb9d12f57

Author: Brian Paul 
Date:   Wed May  9 19:46:32 2018 -0600

mesa: fix glGetInteger/Float/etc queries for vertex arrays attribs

The vertex array Size and Stride attributes are now ubyte and short,
respectively.  The glGet code needed to be updated to handle those
types, but wasn't.

Fixes the new piglit test gl-1.5-get-array-attribs test.

v2: fix inadvertant whitespace change, change COLOR_ARRAY_SIZE to UBYTE,
misc fixes suggested by Justin

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106450
Fixes: d5f42f96e16 ("mesa: shrink size of gl_array_attributes (v2)")
Cc: mesa-sta...@lists.freedesktop.org
Reviewed-by: Mathias Fröhlich 
Reviewed-by: Jordan Justen 
(cherry picked from commit d07466fe18522cde1acadfc597583f80b69c15b7)

---

 src/mesa/main/get.c  | 71 
 src/mesa/main/get_hash_params.py | 26 +++
 2 files changed, 84 insertions(+), 13 deletions(-)

diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 90ab7ca60f..9a16d079e2 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -105,6 +105,8 @@ enum value_type {
TYPE_ENUM,
TYPE_ENUM_2,
TYPE_BOOLEAN,
+   TYPE_UBYTE,
+   TYPE_SHORT,
TYPE_BIT_0,
TYPE_BIT_1,
TYPE_BIT_2,
@@ -188,6 +190,8 @@ union value {
GLint value_int_4[4];
GLint64 value_int64;
GLenum value_enum;
+   GLubyte value_ubyte;
+   GLshort value_short;
 
/* Sigh, see GL_COMPRESSED_TEXTURE_FORMATS_ARB handling */
struct {
@@ -235,10 +239,13 @@ union value {
 #define CONTEXT_MATRIX(field) CONTEXT_FIELD(field, TYPE_MATRIX)
 #define CONTEXT_MATRIX_T(field) CONTEXT_FIELD(field, TYPE_MATRIX_T)
 
+/* Vertex array fields */
 #define ARRAY_INT(field) ARRAY_FIELD(field, TYPE_INT)
 #define ARRAY_ENUM(field) ARRAY_FIELD(field, TYPE_ENUM)
 #define ARRAY_ENUM16(field) ARRAY_FIELD(field, TYPE_ENUM16)
 #define ARRAY_BOOL(field) ARRAY_FIELD(field, TYPE_BOOLEAN)
+#define ARRAY_UBYTE(field) ARRAY_FIELD(field, TYPE_UBYTE)
+#define ARRAY_SHORT(field) ARRAY_FIELD(field, TYPE_SHORT)
 
 #define EXT(f) \
offsetof(struct gl_extensions, f)
@@ -1517,6 +1524,10 @@ get_value_size(enum value_type type, const union value 
*v)
   return sizeof(GLenum) * 2;
case TYPE_BOOLEAN:
   return sizeof(GLboolean);
+   case TYPE_UBYTE:
+  return sizeof(GLubyte);
+   case TYPE_SHORT:
+  return sizeof(GLshort);
case TYPE_BIT_0:
case TYPE_BIT_1:
case TYPE_BIT_2:
@@ -1628,6 +1639,14 @@ _mesa_GetBooleanv(GLenum pname, GLboolean *params)
   params[0] = ((GLboolean*) p)[0];
   break;
 
+   case TYPE_UBYTE:
+  params[0] = INT_TO_BOOLEAN(((GLubyte *) p)[0]);
+  break;
+
+   case TYPE_SHORT:
+  params[0] = INT_TO_BOOLEAN(((GLshort *) p)[0]);
+  break;
+
case TYPE_MATRIX:
   m = *(GLmatrix **) p;
   for (i = 0; i < 16; i++)
@@ -1735,6 +1754,14 @@ _mesa_GetFloatv(GLenum pname, GLfloat *params)
   params[0] = BOOLEAN_TO_FLOAT(*(GLboolean*) p);
   break;
 
+   case TYPE_UBYTE:
+  params[0] = (GLfloat) ((GLubyte *) p)[0];
+  break;
+
+   case TYPE_SHORT:
+  params[0] = (GLfloat) ((GLshort *) p)[0];
+  break;
+
case TYPE_MATRIX:
   m = *(GLmatrix **) p;
   for (i = 0; i < 16; i++)
@@ -1842,6 +1869,14 @@ _mesa_GetIntegerv(GLenum pname, GLint *params)
   params[0] = BOOLEAN_TO_INT(*(GLboolean*) p);
   break;
 
+   case TYPE_UBYTE:
+  params[0] = ((GLubyte *) p)[0];
+  break;
+
+   case TYPE_SHORT:
+  params[0] = ((GLshort *) p)[0];
+  break;
+
case TYPE_MATRIX:
   m = *(GLmatrix **) p;
   for (i = 0; i < 16; i++)
@@ -2062,6 +2097,14 @@ _mesa_GetDoublev(GLenum pname, GLdouble *params)
   params[0] = *(GLboolean*) p;
   break;
 
+   case TYPE_UBYTE:
+  params[0] = ((GLubyte *) p)[0];
+  break;
+
+   case TYPE_SHORT:
+  params[0] = ((GLshort *) p)[0];
+  break;
+
case TYPE_MATRIX:
   m = *(GLmatrix **) p;
   for (i = 0; i < 16; i++)
@@ -2141,6 +2184,8 @@ _mesa_GetUnsignedBytevEXT(GLenum pname, GLubyte *data)
case TYPE_ENUM:
case TYPE_ENUM_2:
case TYPE_BOOLEAN:
+   case TYPE_UBYTE:
+   case TYPE_SHORT:
case TYPE_FLOAT:
case TYPE_FLOATN:
case TYPE_FLOAT_2:
@@ -2790,6 +2835,14 @@ _mesa_GetFloati_v(GLenum pname, GLuint index, GLfloat 
*params)
   params[0] = BOOLEAN_TO_FLOAT(v.value_bool);
   break;
 
+   case TYPE_UBYTE:
+  params[0] = (GLfloat) v.value_ubyte;
+  break;
+
+   case TYPE_SHORT:
+  params[0] = (GLfloat) v.value_short;
+  break;
+
case TYPE_MATRIX:
   m = *(GLmatrix **) &v;
   for (i = 0; i < 16; i++)
@@ -2873,6 +2926,14 @@ _mesa_GetDoublei_v(GLenum pname, GLuint index, GLdouble 
*params)
   params[0] = (GLdouble) BOOLEAN_TO_FLOAT(v.value_bool);
   break;
 
+   case TYPE_UBYT

Mesa (18.1): Bump version to rc4

2018-05-11 Thread Dylan Baker
Module: Mesa
Branch: 18.1
Commit: 630559e05443b1df6fedb7576c2291af99c3dec5
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=630559e05443b1df6fedb7576c2291af99c3dec5

Author: Dylan Baker 
Date:   Fri May 11 08:34:16 2018 -0700

Bump version to rc4

---

 VERSION | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/VERSION b/VERSION
index 5b3a4a1f0b..628d7e49e3 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-18.1.0-rc3
+18.1.0-rc4

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


Mesa (18.1): 21 new commits

2018-05-11 Thread Dylan Baker
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce9f53f5d9685b94baf35be5faed96fcecd18abd
Author: Dylan Baker 
Date:   Fri May 11 08:34:16 2018 -0700

Bump version to rc4

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e4c54e10315e312cd1a8c05175e67b99e4167e37
Author: Jason Ekstrand 
Date:   Wed May 9 15:06:13 2018 -0700

i965,anv: Set the CS stall bit on the ISP disable PIPE_CONTROL

From the bspec docs for "Indirect State Pointers Disable":

"At the completion of the post-sync operation associated with this
pipe control packet, the indirect state pointers in the hardware are
considered invalid"

So the ISP disable is a post-sync type of operation which means that it
should be combined with a CS stall.  Without this, the simulator throws
an error.

Fixes: 766d801ca "anv: emit pixel scoreboard stall before ISP disable"
Fixes: f536097f6 "i965: require pixel scoreboard stall prior to ISP disable"
Reviewed-by: Lionel Landwerlin 
(cherry picked from commit a8a740f272a808a2694524b43fc33d2f0c0e3709)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b9b1175aaec05544fe0ac02d486d6a9286e3188
Author: Matt Turner 
Date:   Wed May 9 16:36:58 2018 -0700

gallium/tests: Fix assignment of EXTRA_DIST

Fixes: 6754c2e83d79 ("autotools: Include new meson files")
(cherry picked from commit 0f959215c340150cb6075f5c2d3ccfc5d109558f)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7da026cb98204f9a74a3f2521cd620c6e056921f
Author: Lionel Landwerlin 
Date:   Tue May 8 17:25:55 2018 +0100

anv: emit pixel scoreboard stall before ISP disable

We want to make sure that all indirect state data has been loaded into
the EUs before disable the pointers.

Signed-off-by: Lionel Landwerlin 
Reviewed-by: Rafael Antognolli 
Fixes: 78c125af3904c ("anv/gen10: Ignore push constant packets during 
context restore.")
(cherry picked from commit 766d801ca32118a722fb2e58a48ee9a96897d3b7)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2c140183d411b17951a2a570674b9adab222d10a
Author: Lionel Landwerlin 
Date:   Tue May 1 12:32:45 2018 +0100

i965: require pixel scoreboard stall prior to ISP disable

Invalidating the indirect state pointers might affect a previously
scheduled & still running 3DPRIMITIVE (causing page fault). So stall
on pixel scoreboard before that.

v2: Fix compile issue :(

v3: Stall on pixel scoreboard

v4: Drop the post sync operation (Lionel)

Signed-off-by: Lionel Landwerlin 
Reviewed-by: Rafael Antognolli 
Fixes: ca19ee33d7d39 ("i965/gen10: Ignore push constant packets during 
context restore.")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106243
(cherry picked from commit f536097f67521180dafd270b28ac9a852af9c141)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e3106b460eaeb3744d289d0d949891a7912ff816
Author: Lionel Landwerlin 
Date:   Wed May 9 16:40:37 2018 +0100

i965: silence unused variable

Signed-off-by: Lionel Landwerlin 
Fixes: 2dc29e095f9da ("i965: Don't leak blorp on Gen4-5.")
Reviewed-by: Caio Marcelo de Oliveira Filho 
(cherry picked from commit 3853f1c6f4b97edde22c767a80c137da6e39904a)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5519bb3c659165c487603fa67bff90d62b606a5c
Author: Jan Vesely 
Date:   Tue May 8 01:39:04 2018 -0400

winsys/radeon: Destroy fd_hash table when the last winsys is removed.

Fixes memory leak on module unload.
v2: Use util_hash_table helper function

CC: 
Reviewed-by: Marek Olšák 
Signed-off-by: Jan Vesely 
(cherry picked from commit 45dfa6f4e77fbb21f312eb6101db6c25acd4d483)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5fc5b1dab831b8846fb09db7cad6f83f00c0
Author: Jan Vesely 
Date:   Wed May 9 15:06:33 2018 -0400

gallium/auxiliary: Add helper function to count the number of entries in 
hash table

CC: 
Reviewed-by: Marek Olšák 
Signed-off-by: Jan Vesely 
(cherry picked from commit d146768d139f887105464f0db5600dd046452a8f)

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e90f0d711c6429d34aa60fef4c878c0badce1ea3
Author: Dave Airlie 
Date:   Wed May 9 23:17:09 2018 +0100

r600: fix constant buffer bounds.

If you have an indirect access to a constant buffer on r600/eg
use a vertex fetch in the shader. However apps have expected
behaviour on those out of bounds accessess (even if illegal).

If the constants were being uploaded as part of a larger
upload buffer, we'd set the range of allowed access to a lot
larger than required so apps would get values back from
other parts of the upload buffer instead of the expected out
of bounds access.

This fixes rendering bugs in Trine and Witcher 1, thanks
to iive for nagging me effectively until I figured it out :

Mesa (master): meson: Fix build for egl platform_x11 with dri3

2018-05-11 Thread Ville Syrjala
Module: Mesa
Branch: master
Commit: 659910eda01de0ddbd168a0879f548b7950aef00
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=659910eda01de0ddbd168a0879f548b7950aef00

Author: Ville Syrjälä 
Date:   Mon May  7 19:20:23 2018 +0300

meson: Fix build for egl platform_x11 with dri3

platform_x11 with dri3 needs inc_loader.

In file included from ../src/egl/drivers/dri2/platform_x11_dri3.c:35:0:
../src/egl/drivers/dri2/egl_dri2.h:41:32: fatal error: loader_dri3_helper.h: No 
such file or directory
In file included from ../src/egl/drivers/dri2/platform_x11.c:46:0:
../src/egl/drivers/dri2/egl_dri2.h:41:32: fatal error: loader_dri3_helper.h: No 
such file or directory
In file included from ../src/egl/drivers/dri2/egl_dri2.c:61:0:
../src/egl/drivers/dri2/egl_dri2.h:41:32: fatal error: loader_dri3_helper.h: No 
such file or directory

Cc: Dylan Baker 
Reviewed-by: Eric Engestrom 
Signed-off-by: Ville Syrjälä 

---

 src/egl/meson.build | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/egl/meson.build b/src/egl/meson.build
index 6537e4bdee..9050d763a6 100644
--- a/src/egl/meson.build
+++ b/src/egl/meson.build
@@ -102,6 +102,7 @@ if with_platform_x11
   if with_dri3
 files_egl += files('drivers/dri2/platform_x11_dri3.c')
 link_for_egl += libloader_dri3_helper
+incs_for_egl += inc_loader
   endif
   deps_for_egl += [dep_x11_xcb, dep_xcb_dri2, dep_xcb_xfixes]
 endif

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


Mesa (master): radv: minor cleanups in radv_fill_shader_variant()

2018-05-11 Thread Samuel Pitoiset
Module: Mesa
Branch: master
Commit: 3a410f0afcfe8c26290782141a08ff962956ef3a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a410f0afcfe8c26290782141a08ff962956ef3a

Author: Samuel Pitoiset 
Date:   Fri May 11 09:46:46 2018 +0200

radv: minor cleanups in radv_fill_shader_variant()

Signed-off-by: Samuel Pitoiset 
Reviewed-by: Timothy Arceri 

---

 src/amd/vulkan/radv_shader.c | 29 +++--
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index 27b3fbed16..07634870d4 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -371,6 +371,7 @@ radv_fill_shader_variant(struct radv_device *device,
 gl_shader_stage stage)
 {
bool scratch_enabled = variant->config.scratch_bytes_per_wave > 0;
+   struct radv_shader_info *info = &variant->info.info;
unsigned vgpr_comp_cnt = 0;
 
if (scratch_enabled && !device->llvm_supports_spill)
@@ -378,9 +379,9 @@ radv_fill_shader_variant(struct radv_device *device,
 
variant->code_size = binary->code_size;
variant->rsrc2 = S_00B12C_USER_SGPR(variant->info.num_user_sgprs) |
-   S_00B12C_SCRATCH_EN(scratch_enabled);
+S_00B12C_SCRATCH_EN(scratch_enabled);
 
-   variant->rsrc1 =  S_00B848_VGPRS((variant->config.num_vgprs - 1) / 4) |
+   variant->rsrc1 = S_00B848_VGPRS((variant->config.num_vgprs - 1) / 4) |
S_00B848_SGPRS((variant->config.num_sgprs - 1) / 8) |
S_00B848_DX10_CLAMP(1) |
S_00B848_FLOAT_MODE(variant->config.float_mode);
@@ -391,10 +392,11 @@ radv_fill_shader_variant(struct radv_device *device,
variant->rsrc2 |= S_00B12C_OC_LDS_EN(1);
break;
case MESA_SHADER_TESS_CTRL:
-   if (device->physical_device->rad_info.chip_class >= GFX9)
+   if (device->physical_device->rad_info.chip_class >= GFX9) {
vgpr_comp_cnt = variant->info.vs.vgpr_comp_cnt;
-   else
+   } else {
variant->rsrc2 |= S_00B12C_OC_LDS_EN(1);
+   }
break;
case MESA_SHADER_VERTEX:
case MESA_SHADER_GEOMETRY:
@@ -402,8 +404,7 @@ radv_fill_shader_variant(struct radv_device *device,
break;
case MESA_SHADER_FRAGMENT:
break;
-   case MESA_SHADER_COMPUTE: {
-   struct radv_shader_info *info = &variant->info.info;
+   case MESA_SHADER_COMPUTE:
variant->rsrc2 |=
S_00B84C_TGID_X_EN(info->cs.uses_block_id[0]) |
S_00B84C_TGID_Y_EN(info->cs.uses_block_id[1]) |
@@ -413,7 +414,6 @@ radv_fill_shader_variant(struct radv_device *device,
S_00B84C_TG_SIZE_EN(info->cs.uses_local_invocation_idx) 
|
S_00B84C_LDS_SIZE(variant->config.lds_size);
break;
-   }
default:
unreachable("unsupported shader type");
break;
@@ -421,7 +421,6 @@ radv_fill_shader_variant(struct radv_device *device,
 
if (device->physical_device->rad_info.chip_class >= GFX9 &&
stage == MESA_SHADER_GEOMETRY) {
-   struct radv_shader_info *info = &variant->info.info;
unsigned es_type = variant->info.gs.es_type;
unsigned gs_vgpr_comp_cnt, es_vgpr_comp_cnt;
 
@@ -436,23 +435,25 @@ radv_fill_shader_variant(struct radv_device *device,
/* If offsets 4, 5 are used, GS_VGPR_COMP_CNT is ignored and
 * VGPR[0:4] are always loaded.
 */
-   if (info->uses_invocation_id)
+   if (info->uses_invocation_id) {
gs_vgpr_comp_cnt = 3; /* VGPR3 contains InvocationID. */
-   else if (info->uses_prim_id)
+   } else if (info->uses_prim_id) {
gs_vgpr_comp_cnt = 2; /* VGPR2 contains PrimitiveID. */
-   else if (variant->info.gs.vertices_in >= 3)
+   } else if (variant->info.gs.vertices_in >= 3) {
gs_vgpr_comp_cnt = 1; /* VGPR1 contains offsets 2, 3 */
-   else
+   } else {
gs_vgpr_comp_cnt = 0; /* VGPR0 contains offsets 0, 1 */
+   }
 
variant->rsrc1 |= S_00B228_GS_VGPR_COMP_CNT(gs_vgpr_comp_cnt);
variant->rsrc2 |= S_00B22C_ES_VGPR_COMP_CNT(es_vgpr_comp_cnt) |
  S_00B22C_OC_LDS_EN(es_type == 
MESA_SHADER_TESS_EVAL);
} else if (device->physical_device->rad_info.chip_class >= GFX9 &&
-   stage == MESA_SHADER_TESS_CTRL)
+  stage == MESA_SHADER_TESS_CTRL) {
variant->rsrc1 |= S_00B428_LS_VGPR_COMP_CNT(vgpr_comp_cnt);
-   else
+   } else {
variant->rsrc1 |= S_00

Mesa (master): radv: move ac_build_if_state on top of radv_nir_to_llvm.c

2018-05-11 Thread Samuel Pitoiset
Module: Mesa
Branch: master
Commit: efc10949cc9259da25dafd4965ba5e58cd99a181
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=efc10949cc9259da25dafd4965ba5e58cd99a181

Author: Samuel Pitoiset 
Date:   Fri May 11 09:37:11 2018 +0200

radv: move ac_build_if_state on top of radv_nir_to_llvm.c

These helpers will be needed for future work.

Signed-off-by: Samuel Pitoiset 
Reviewed-by: Timothy Arceri 

---

 src/amd/vulkan/radv_nir_to_llvm.c | 183 +++---
 1 file changed, 92 insertions(+), 91 deletions(-)

diff --git a/src/amd/vulkan/radv_nir_to_llvm.c 
b/src/amd/vulkan/radv_nir_to_llvm.c
index e2d241e495..f98940f0d8 100644
--- a/src/amd/vulkan/radv_nir_to_llvm.c
+++ b/src/amd/vulkan/radv_nir_to_llvm.c
@@ -124,6 +124,98 @@ radv_shader_context_from_abi(struct ac_shader_abi *abi)
return container_of(abi, ctx, abi);
 }
 
+struct ac_build_if_state
+{
+   struct radv_shader_context *ctx;
+   LLVMValueRef condition;
+   LLVMBasicBlockRef entry_block;
+   LLVMBasicBlockRef true_block;
+   LLVMBasicBlockRef false_block;
+   LLVMBasicBlockRef merge_block;
+};
+
+static LLVMBasicBlockRef
+ac_build_insert_new_block(struct radv_shader_context *ctx, const char *name)
+{
+   LLVMBasicBlockRef current_block;
+   LLVMBasicBlockRef next_block;
+   LLVMBasicBlockRef new_block;
+
+   /* get current basic block */
+   current_block = LLVMGetInsertBlock(ctx->ac.builder);
+
+   /* chqeck if there's another block after this one */
+   next_block = LLVMGetNextBasicBlock(current_block);
+   if (next_block) {
+   /* insert the new block before the next block */
+   new_block = LLVMInsertBasicBlockInContext(ctx->context, 
next_block, name);
+   }
+   else {
+   /* append new block after current block */
+   LLVMValueRef function = LLVMGetBasicBlockParent(current_block);
+   new_block = LLVMAppendBasicBlockInContext(ctx->context, 
function, name);
+   }
+   return new_block;
+}
+
+static void
+ac_nir_build_if(struct ac_build_if_state *ifthen,
+   struct radv_shader_context *ctx,
+   LLVMValueRef condition)
+{
+   LLVMBasicBlockRef block = LLVMGetInsertBlock(ctx->ac.builder);
+
+   memset(ifthen, 0, sizeof *ifthen);
+   ifthen->ctx = ctx;
+   ifthen->condition = condition;
+   ifthen->entry_block = block;
+
+   /* create endif/merge basic block for the phi functions */
+   ifthen->merge_block = ac_build_insert_new_block(ctx, "endif-block");
+
+   /* create/insert true_block before merge_block */
+   ifthen->true_block =
+   LLVMInsertBasicBlockInContext(ctx->context,
+ ifthen->merge_block,
+ "if-true-block");
+
+   /* successive code goes into the true block */
+   LLVMPositionBuilderAtEnd(ctx->ac.builder, ifthen->true_block);
+}
+
+/**
+ * End a conditional.
+ */
+static void
+ac_nir_build_endif(struct ac_build_if_state *ifthen)
+{
+   LLVMBuilderRef builder = ifthen->ctx->ac.builder;
+
+   /* Insert branch to the merge block from current block */
+   LLVMBuildBr(builder, ifthen->merge_block);
+
+   /*
+* Now patch in the various branch instructions.
+*/
+
+   /* Insert the conditional branch instruction at the end of entry_block 
*/
+   LLVMPositionBuilderAtEnd(builder, ifthen->entry_block);
+   if (ifthen->false_block) {
+   /* we have an else clause */
+   LLVMBuildCondBr(builder, ifthen->condition,
+   ifthen->true_block, ifthen->false_block);
+   }
+   else {
+   /* no else clause */
+   LLVMBuildCondBr(builder, ifthen->condition,
+   ifthen->true_block, ifthen->merge_block);
+   }
+
+   /* Resume building code at end of the ifthen->merge_block */
+   LLVMPositionBuilderAtEnd(builder, ifthen->merge_block);
+}
+
+
 static LLVMValueRef get_rel_patch_id(struct radv_shader_context *ctx)
 {
switch (ctx->stage) {
@@ -2502,97 +2594,6 @@ handle_ls_outputs_post(struct radv_shader_context *ctx)
}
 }
 
-struct ac_build_if_state
-{
-   struct radv_shader_context *ctx;
-   LLVMValueRef condition;
-   LLVMBasicBlockRef entry_block;
-   LLVMBasicBlockRef true_block;
-   LLVMBasicBlockRef false_block;
-   LLVMBasicBlockRef merge_block;
-};
-
-static LLVMBasicBlockRef
-ac_build_insert_new_block(struct radv_shader_context *ctx, const char *name)
-{
-   LLVMBasicBlockRef current_block;
-   LLVMBasicBlockRef next_block;
-   LLVMBasicBlockRef new_block;
-
-   /* get current basic block */
-   current_block = LLVMGetInsertBlock(ctx->ac.builder);
-
-   /* check if there's another block after this one */
-   next_block = LLVMGetNextBasicBlock(current_block);
-   if (next_block) {