Mesa (master): radeonsi: Handle additional PIPE_COMPUTE_CAP_*

2013-08-23 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 288a25252386d2cc372a5938fd4ff05879efd3ca
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=288a25252386d2cc372a5938fd4ff05879efd3ca

Author: Niels Ole Salscheider 
Date:   Fri Aug  9 11:59:30 2013 +0200

radeonsi: Handle additional PIPE_COMPUTE_CAP_*

This patch adds support for:
PIPE_COMPUTE_CAP_MAX_INPUT_SIZE
PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE

Return the values reported by the closed source driver for now.

Signed-off-by: Niels Ole Salscheider 
Reviewed-by: Tom Stellard 

---

 src/gallium/drivers/radeonsi/radeonsi_pipe.c |   15 ++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c 
b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
index 2258de9..91c41e7 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
@@ -611,7 +611,20 @@ static int r600_get_compute_param(struct pipe_screen 
*screen,
*max_global_size = 20;
}
return sizeof(uint64_t);
-
+   case PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE:
+   if (ret) {
+   uint64_t *max_local_size = ret;
+   /* Value reported by the closed source driver. */
+   *max_local_size = 32768;
+   }
+   return sizeof(uint64_t);
+   case PIPE_COMPUTE_CAP_MAX_INPUT_SIZE:
+   if (ret) {
+   uint64_t *max_input_size = ret;
+   /* Value reported by the closed source driver. */
+   *max_input_size = 1024;
+   }
+   return sizeof(uint64_t);
case PIPE_COMPUTE_CAP_MAX_MEM_ALLOC_SIZE:
if (ret) {
uint64_t max_global_size;

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


Mesa (master): radeonsi: copy r600_get_timestamp

2013-08-23 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 04349541cd6fd635db786e00568357f0dbfd1aa0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=04349541cd6fd635db786e00568357f0dbfd1aa0

Author: Niels Ole Salscheider 
Date:   Fri Aug  9 11:59:29 2013 +0200

radeonsi: copy r600_get_timestamp

Signed-off-by: Niels Ole Salscheider 
Reviewed-by: Marek Olšák 

---

 src/gallium/drivers/radeonsi/radeonsi_pipe.c |9 +
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c 
b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
index 3351768..2258de9 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
@@ -788,6 +788,14 @@ static int r600_init_tiling(struct r600_screen *rscreen)
return evergreen_interpret_tiling(rscreen, tiling_config);
 }
 
+static uint64_t r600_get_timestamp(struct pipe_screen *screen)
+{
+   struct r600_screen *rscreen = (struct r600_screen*)screen;
+
+   return 100 * rscreen->ws->query_value(rscreen->ws, 
RADEON_TIMESTAMP) /
+   rscreen->info.r600_clock_crystal_freq;
+}
+
 static unsigned radeon_family_from_device(unsigned device)
 {
switch (device) {
@@ -839,6 +847,7 @@ struct pipe_screen *radeonsi_screen_create(struct 
radeon_winsys *ws)
rscreen->screen.get_shader_param = r600_get_shader_param;
rscreen->screen.get_paramf = r600_get_paramf;
rscreen->screen.get_compute_param = r600_get_compute_param;
+   rscreen->screen.get_timestamp = r600_get_timestamp;
rscreen->screen.is_format_supported = si_is_format_supported;
rscreen->screen.context_create = r600_create_context;
rscreen->screen.fence_reference = r600_fence_reference;

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


Mesa (master): radeonsi: Implement PIPE_QUERY_TIMESTAMP

2013-08-23 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: db6f4165f4af89b8a963c5fd5ece4fc9a94c42d0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=db6f4165f4af89b8a963c5fd5ece4fc9a94c42d0

Author: Niels Ole Salscheider 
Date:   Fri Aug  9 11:59:28 2013 +0200

radeonsi: Implement PIPE_QUERY_TIMESTAMP

Signed-off-by: Niels Ole Salscheider 
Reviewed-by: Marek Olšák 

---

 src/gallium/drivers/radeonsi/r600.h|1 +
 src/gallium/drivers/radeonsi/r600_hw_context.c |   31 
 src/gallium/drivers/radeonsi/r600_query.c  |   14 ++-
 src/gallium/drivers/radeonsi/radeonsi_pipe.c   |2 +-
 4 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/r600.h 
b/src/gallium/drivers/radeonsi/r600.h
index 8f35cc2..ce0468d 100644
--- a/src/gallium/drivers/radeonsi/r600.h
+++ b/src/gallium/drivers/radeonsi/r600.h
@@ -102,6 +102,7 @@ void si_context_emit_fence(struct r600_context *ctx, struct 
si_resource *fence,
unsigned offset, unsigned value);
 
 void r600_context_draw_opaque_count(struct r600_context *ctx, struct 
r600_so_target *t);
+bool si_query_needs_begin(unsigned type);
 void si_need_cs_space(struct r600_context *ctx, unsigned num_dw, boolean 
count_draw_in);
 
 int si_context_init(struct r600_context *ctx);
diff --git a/src/gallium/drivers/radeonsi/r600_hw_context.c 
b/src/gallium/drivers/radeonsi/r600_hw_context.c
index 55daa82..59b2d70 100644
--- a/src/gallium/drivers/radeonsi/r600_hw_context.c
+++ b/src/gallium/drivers/radeonsi/r600_hw_context.c
@@ -110,6 +110,11 @@ err:
return;
 }
 
+bool si_query_needs_begin(unsigned type)
+{
+   return type != PIPE_QUERY_TIMESTAMP;
+}
+
 /* initialize */
 void si_need_cs_space(struct r600_context *ctx, unsigned num_dw,
boolean count_draw_in)
@@ -357,6 +362,12 @@ static boolean r600_query_result(struct r600_context *ctx, 
struct r600_query *qu
results_base = (results_base + 16) % 
query->buffer->b.b.width0;
}
break;
+   case PIPE_QUERY_TIMESTAMP:
+   {
+   uint32_t *current_result = (uint32_t*)map;
+   query->result.u64 = (uint64_t)current_result[0] | 
(uint64_t)current_result[1] << 32;
+   break;
+   }
case PIPE_QUERY_TIME_ELAPSED:
while (results_base != query->results_end) {
query->result.u64 +=
@@ -502,6 +513,19 @@ void r600_query_end(struct r600_context *ctx, struct 
r600_query *query)
 {
struct radeon_winsys_cs *cs = ctx->cs;
uint64_t va;
+   unsigned new_results_end;
+
+   /* The queries which need begin already called this in begin_query. */
+   if (!si_query_needs_begin(query->type)) {
+   si_need_cs_space(ctx, query->num_cs_dw, TRUE);
+
+   new_results_end = (query->results_end + query->result_size) % 
query->buffer->b.b.width0;
+
+   /* collect current results if query buffer is full */
+   if (new_results_end == query->results_start) {
+   r600_query_result(ctx, query, TRUE);
+   }
+   }
 
va = r600_resource_va(&ctx->screen->screen, (void*)query->buffer);
/* emit end query */
@@ -525,6 +549,8 @@ void r600_query_end(struct r600_context *ctx, struct 
r600_query *query)
break;
case PIPE_QUERY_TIME_ELAPSED:
va += query->results_end + query->result_size/2;
+   /* fall through */
+   case PIPE_QUERY_TIMESTAMP:
cs->buf[cs->cdw++] = PKT3(PKT3_EVENT_WRITE_EOP, 4, 0);
cs->buf[cs->cdw++] = 
EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT) | EVENT_INDEX(5);
cs->buf[cs->cdw++] = va;
@@ -602,6 +628,10 @@ struct r600_query *r600_context_query_create(struct 
r600_context *ctx, unsigned
query->result_size = 16 * ctx->max_db;
query->num_cs_dw = 6;
break;
+   case PIPE_QUERY_TIMESTAMP:
+   query->result_size = 8;
+   query->num_cs_dw = 8;
+   break;
case PIPE_QUERY_TIME_ELAPSED:
query->result_size = 16;
query->num_cs_dw = 8;
@@ -665,6 +695,7 @@ boolean r600_context_query_result(struct r600_context *ctx,
case PIPE_QUERY_SO_OVERFLOW_PREDICATE:
*result_b = query->result.b;
break;
+   case PIPE_QUERY_TIMESTAMP:
case PIPE_QUERY_TIME_ELAPSED:
*result_u64 = (100 * query->result.u64) / 
ctx->screen->info.r600_clock_crystal_freq;
break;
diff --git a/src/gallium/drivers/radeonsi/r600_query.c 
b/src/gallium/drivers/radeonsi/r600_query.c
index 0162cce..927577c 100644
--- a/src/gallium/drivers/radeonsi/r600_query.c
+++ b/src/gallium/drivers/radeonsi/r600_query.c
@@ -42,6 +42,11 @@ static void r600_begin_query(struct pipe_context *ctx, 
struct pipe_query *query)
struct r600_c

Mesa (master): gallivm: fix min/mag switchover point for nearest/ none mip filter

2013-08-23 Thread Roland Scheidegger
Module: Mesa
Branch: master
Commit: ad9b5b9ae9a9068be4571a406f6118b9f4382ac4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ad9b5b9ae9a9068be4571a406f6118b9f4382ac4

Author: Roland Scheidegger 
Date:   Fri Aug 23 04:33:32 2013 +0200

gallivm: fix min/mag switchover point for nearest/none mip filter

Previously, the min/mag switchover point when using nearest/none mip
filter was effectively -0.5 which can't be right. Looks like new OpenGL
thinks it's ok if it's always 0.0 (older versions required 0.5 in some
cases), let's hope everybody else thinks that's fine too.
Refactor this slightly and get the per-quad/per-pixel min/mag decision
values further down to sampling, though still only the first component
is used yet.
While here also fix code trying to skip lod bias application etc. when
mipfilter is none, as this is still needed for determining min/mag filter.

Reviewed-by: Jose Fonseca 

---

 src/gallium/auxiliary/gallivm/lp_bld_sample.c |   48 +++
 src/gallium/auxiliary/gallivm/lp_bld_sample.h |3 +-
 src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c |   25 +++-
 src/gallium/auxiliary/gallivm/lp_bld_sample_aos.h |2 +-
 src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c |   69 ++---
 5 files changed, 81 insertions(+), 66 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c 
b/src/gallium/auxiliary/gallivm/lp_bld_sample.c
index 9554104..89d7249 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c
@@ -162,7 +162,8 @@ lp_sampler_static_sampler_state(struct 
lp_static_sampler_state *state,
   state->min_mip_filter = PIPE_TEX_MIPFILTER_NONE;
}
 
-   if (state->min_mip_filter != PIPE_TEX_MIPFILTER_NONE) {
+   if (state->min_mip_filter != PIPE_TEX_MIPFILTER_NONE ||
+   state->min_img_filter != state->mag_img_filter) {
   if (sampler->lod_bias != 0.0f) {
  state->lod_bias_non_zero = 1;
   }
@@ -669,9 +670,10 @@ lp_build_brilinear_rho(struct lp_build_context *bld,
  * \param derivs  partial derivatives of (s, t, r, q) with respect to X and Y
  * \param lod_bias  optional float vector with the shader lod bias
  * \param explicit_lod  optional float vector with the explicit lod
- * \param width  scalar int texture width
- * \param height  scalar int texture height
- * \param depth  scalar int texture depth
+ * \param cube_rho  rho calculated by cube coord mapping (optional)
+ * \param out_lod_ipart  integer part of lod
+ * \param out_lod_fpart  float part of lod (never larger than 1 but may be 
negative)
+ * \param out_lod_positive  (mask) if lod is positive (i.e. texture is 
minified)
  *
  * The resulting lod is scalar per quad, so only the first value per quad
  * passed in from lod_bias, explicit_lod is used.
@@ -689,7 +691,8 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
   LLVMValueRef explicit_lod, /* optional */
   unsigned mip_filter,
   LLVMValueRef *out_lod_ipart,
-  LLVMValueRef *out_lod_fpart)
+  LLVMValueRef *out_lod_fpart,
+  LLVMValueRef *out_lod_positive)
 
 {
LLVMBuilderRef builder = bld->gallivm->builder;
@@ -697,8 +700,27 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
LLVMValueRef lod;
 
*out_lod_ipart = bld->leveli_bld.zero;
+   *out_lod_positive = bld->leveli_bld.zero;
*out_lod_fpart = levelf_bld->zero;
 
+   /*
+* For determining min/mag, we follow GL 4.1 spec, 3.9.12 Texture 
Magnification:
+* "Implementations may either unconditionally assume c = 0 for the 
minification
+* vs. magnification switch-over point, or may choose to make c depend on 
the
+* combination of minification and magnification modes as follows: if the
+* magnification filter is given by LINEAR and the minification filter is 
given
+* by NEAREST_MIPMAP_NEAREST or NEAREST_MIPMAP_LINEAR, then c = 0.5. This is
+* done to ensure that a minified texture does not appear "sharper" than a
+* magnified texture. Otherwise c = 0."
+* And 3.9.11 Texture Minification:
+* "If lod is less than or equal to the constant c (see section 3.9.12) the
+* texture is said to be magnified; if it is greater, the texture is 
minified."
+* So, using 0 as switchover point always, and using magnification for lod 
== 0.
+* Note that the always c = 0 behavior is new (first appearing in GL 3.1 
spec),
+* old GL versions required 0.5 for the modes listed above.
+* I have no clue about the (undocumented) wishes of d3d9/d3d10 here!
+*/
+
if (bld->static_sampler_state->min_max_lod_equal) {
   /* User is forcing sampling from a particular mipmap level.
* This is hit during mipmap generation.
@@ -739,21 +761,20 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
 if (mip_filter == PIPE_TEX_MIPFILTER_NONE ||
 mip_filter == P

Mesa (master): gallium/osmesa: Always link with the c++ linker.

2013-08-23 Thread Matt Turner
Module: Mesa
Branch: master
Commit: aeb9c9e4b01af8a70432a961931abde5adf06c42
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=aeb9c9e4b01af8a70432a961931abde5adf06c42

Author: Jon Severinsson 
Date:   Fri Aug 23 11:19:00 2013 +0200

gallium/osmesa: Always link with the c++ linker.

Just like all other gallium targets...

CC: "9.2" 
Reviewed-by: Matt Turner 

---

 src/gallium/targets/osmesa/Makefile.am |   11 ++-
 1 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/src/gallium/targets/osmesa/Makefile.am 
b/src/gallium/targets/osmesa/Makefile.am
index de78d8c..25fee6f 100644
--- a/src/gallium/targets/osmesa/Makefile.am
+++ b/src/gallium/targets/osmesa/Makefile.am
@@ -57,19 +57,12 @@ lib@OSMESA_LIB@_la_LIBADD = \
$(CLOCK_LIB)
 
 
+nodist_EXTRA_lib@OSMESA_LIB@_la_SOURCES = dummy.cpp
 
 if HAVE_MESA_LLVM
-lib@OSMESA_LIB@_la_LINK = $(CXXLINK) $(lib@OSMESA_LIB@_la_LDFLAGS)
-# Mention a dummy pure C++ file to trigger generation of the $(LINK) variable
-nodist_EXTRA_lib@OSMESA_LIB@_la_SOURCES = dummy-cpp.cpp
-
-lib@OSMESA_LIB@_la_LIBADD += 
$(top_builddir)/src/gallium/drivers/llvmpipe/libllvmpipe.la $(LLVM_LIBS)
 AM_CPPFLAGS += -DGALLIUM_LLVMPIPE
 lib@OSMESA_LIB@_la_LDFLAGS += $(LLVM_LDFLAGS)
-else
-lib@OSMESA_LIB@_la_LINK = $(CXXLINK) $(lib@OSMESA_LIB@_la_LDFLAGS)
-# Mention a dummy pure C file to trigger generation of the $(LINK) variable
-nodist_EXTRA_lib@OSMESA_LIB@_la_SOURCES = dummy-c.c
+lib@OSMESA_LIB@_la_LIBADD += 
$(top_builddir)/src/gallium/drivers/llvmpipe/libllvmpipe.la $(LLVM_LIBS)
 endif
 
 

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


Mesa (master): gallium/osmesa: Link, not copy, the shared library to the LIB_DIR.

2013-08-23 Thread Matt Turner
Module: Mesa
Branch: master
Commit: b47bde00790c4d4cef107c8cd33ed17a08415caf
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b47bde00790c4d4cef107c8cd33ed17a08415caf

Author: Jon Severinsson 
Date:   Fri Aug 23 11:19:01 2013 +0200

gallium/osmesa: Link, not copy, the shared library to the LIB_DIR.

Just like all other mesa libraries...

CC: "9.2" 
Reviewed-by: Matt Turner 

---

 src/gallium/targets/osmesa/Makefile.am |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/targets/osmesa/Makefile.am 
b/src/gallium/targets/osmesa/Makefile.am
index 25fee6f..8e6aff6 100644
--- a/src/gallium/targets/osmesa/Makefile.am
+++ b/src/gallium/targets/osmesa/Makefile.am
@@ -75,7 +75,7 @@ all-local: lib@OSMESA_LIB@.la
$(MKDIR_P) $(top_builddir)/$(LIB_DIR)/gallium;
ln -f .libs/lib@OSMESA_LIB@.so 
$(top_builddir)/$(LIB_DIR)/gallium/lib@OSMESA_LIB@.so;
ln -f .libs/lib@OSMESA_LIB@.so.@OSMESA_VERSION@ 
$(top_builddir)/$(LIB_DIR)/gallium/lib@OSMESA_LIB@.so.@OSMESA_VERSION@;
-   cp .libs/lib@OSMESA_LIB@.so.@OSMESA_VERSION@.0.0 
$(top_builddir)/$(LIB_DIR)/gallium/
+   ln -f .libs/lib@OSMESA_LIB@.so.@OSMESA_VERSION@.0.0 
$(top_builddir)/$(LIB_DIR)/gallium/
 endif
 
 pkgconfigdir = $(libdir)/pkgconfig

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


Mesa (master): gallium/osmesa: Make and install an osmesa.pc.

2013-08-23 Thread Matt Turner
Module: Mesa
Branch: master
Commit: c8111904304a878a3d5831b453255f04e1ddcf56
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c8111904304a878a3d5831b453255f04e1ddcf56

Author: Jon Severinsson 
Date:   Fri Aug 23 11:18:59 2013 +0200

gallium/osmesa: Make and install an osmesa.pc.

As of "2f142d59 build: Add --enable-gallium-osmesa flag." the pkgconfig
file from classic osmesa is no longer installed when building gallium
osmesa, so copy it to gallium osmesa and install the copy instead.

CC: "9.2" 
Reviewed-by: Matt Turner 

---

 configure.ac|1 +
 src/gallium/targets/osmesa/Makefile.am  |5 ++---
 src/gallium/targets/osmesa/osmesa.pc.in |   12 
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index 7a89591..40e052c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2066,6 +2066,7 @@ AC_CONFIG_FILES([Makefile
src/gallium/targets/gbm/Makefile
src/gallium/targets/opencl/Makefile
src/gallium/targets/osmesa/Makefile
+   src/gallium/targets/osmesa/osmesa.pc
src/gallium/targets/pipe-loader/Makefile
src/gallium/targets/libgl-xlib/Makefile
src/gallium/targets/vdpau-nouveau/Makefile
diff --git a/src/gallium/targets/osmesa/Makefile.am 
b/src/gallium/targets/osmesa/Makefile.am
index 38dbeb8..de78d8c 100644
--- a/src/gallium/targets/osmesa/Makefile.am
+++ b/src/gallium/targets/osmesa/Makefile.am
@@ -85,6 +85,5 @@ all-local: lib@OSMESA_LIB@.la
cp .libs/lib@OSMESA_LIB@.so.@OSMESA_VERSION@.0.0 
$(top_builddir)/$(LIB_DIR)/gallium/
 endif
 
-# XXX fix-up?
-#pkgconfigdir = $(libdir)/pkgconfig
-#pkgconfig_DATA = osmesa.pc
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = osmesa.pc
diff --git a/src/gallium/targets/osmesa/osmesa.pc.in 
b/src/gallium/targets/osmesa/osmesa.pc.in
new file mode 100644
index 000..cd77fd7
--- /dev/null
+++ b/src/gallium/targets/osmesa/osmesa.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=@libdir@
+includedir=@includedir@
+
+Name: osmesa
+Description: Mesa Off-screen Rendering library
+Requires: @OSMESA_PC_REQ@
+Version: @OSMESA_VERSION@
+Libs: -L${libdir} -l@OSMESA_LIB@
+Libs.private: @OSMESA_PC_LIB_PRIV@
+Cflags: -I${includedir}

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


Mesa (master): 24 new commits

2013-08-23 Thread Paul Berry
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=60ddb96f7e0ea8dfb277cd1f249c7912c07c46b1
Author: Paul Berry 
Date:   Fri Mar 22 12:34:19 2013 -0700

i965/gs: Add a data structure for tracking VS output VUE map.

Reviewed-by: Ian Romanick 
Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=06918f84c2d1092ac327d836ce9f136f41736e6f
Author: Paul Berry 
Date:   Tue Jun 11 14:23:12 2013 -0700

i965/vec4: Make a function for setting up vec4 program key clip info.

This functionality will need to be reused by geometry shaders.

Reviewed-by: Ian Romanick 
Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b5d10bcd353bf5bef1cd12f3a84625e56af3bb0
Author: Paul Berry 
Date:   Wed Mar 27 12:39:37 2013 -0700

i965: Make prim_to_hw_prim accessible outside brw_draw.c.

We will need access to this array in order to configure the geometry
shader.

Reviewed-by: Ian Romanick 
Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=16512ba70d5a9b4645508030acf1572ee7c660a3
Author: Paul Berry 
Date:   Tue Feb 19 07:31:16 2013 -0800

i965/gs: add GS visitors.

This patch introduces the vec4_gs_visitor class, which translates
geometry shaders from GLSL IR to back-end opcodes.

This class is derived from vec4_visitor (which is also the base class
for vec4_vs_visitor), so as a result most of the back end code is
shared.  The only parts that differ are:

- Geometry shaders use a different input payload organization, since
  the inputs need to match up with the outputs of the previous
  pipeline stage (vec4_gs_visitor::setup_payload() and
  vec4_gs_visitor::setup_varying_inputs()).

- Geometry shader input array dereferences need a special stride
  computation, since all geometry shader inputs are interleaved into
  one giant array (vec4_gs_visitor::compute_array_stride()).

- There are no geometry shader system values
  (vec4_gs_visitor::make_reg_for_system_value()).

- At the beginning of a geometry shader, extra data in R0 needs to be
  zeroed out, and a vertex counter needs to be initialized
  (vec4_gs_visitor::emit_prolog()).

- When EmitVertex() appears in the shader, the current contents of
  output variables need to be emitted to the URB, and the vertex
  counter needs to be incremented
  (vec4_gs_visitor::visit(ir_emit_vertex *)).

- When generating a URB_WRITE message to output vertex data, the
  current state of the vertex counter needs to be used to store a
  write offset in the message header
  (vec4_gs_visitor::emit_urb_write_header()).

- The URB_WRITE message that outputs vertex data needs to be sent
  using GS_OPCODE_URB_WRITE, since VS_OPCODE_URB_WRITE would overwrite
  the offsets in the message header
  (vec4_gs_visitor::emit_urb_write_opcode()).

- At the end of a geometry shader, the final vertex count needs to be
  delivered using a URB WRITE message
  (vec4_gs_visitor::emit_thread_end()).

- EndPrimitive() functionality is not implemented yet
  (vec4_gs_visitor::visit(ir_end_primitive *)).

- There is no support for assembly shaders
  (vec4_gs_visitor::emit_program_code()).

v2: Make num_input_vertices const.  Refer to registers as rN rather
than gN, for consistency with the PRM.  Fix misspelling.  Improve
comment in the ir_emit_vertex visitor explaining why we emit vertices
inside a conditional.  Enclose the conditional code in the
ir_emit_vertex visitor between curly braces.

Reviewed-by: Ian Romanick 
Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=35bdd552d5beb31e9b8319986c8f78d762c1228c
Author: Paul Berry 
Date:   Tue Feb 19 07:31:16 2013 -0800

i965/gs: Add GS_OPCODE_SET_DWORD_2_IMMED.

Reviewed-by: Ian Romanick 
Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7417eddea9969cf09f36b05f218a59b22c076f0c
Author: Paul Berry 
Date:   Sat Mar 23 08:18:43 2013 -0700

i965/gs: Add GS_OPCODE_SET_VERTEX_COUNT.

Reviewed-by: Ian Romanick 
Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ce722fd65dde02ed823cbc0b19863cae8d8f6ee2
Author: Paul Berry 
Date:   Sat Mar 23 07:59:13 2013 -0700

i965/gs: Add GS_OPCODE_SET_WRITE_OFFSET.

v2: Added a comment to vec4_generator::generate_gs_set_write_offset().

Reviewed-by: Ian Romanick 
Reviewed-by: Kenneth Graunke 
Reviewed-by: Matt Turner 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4416cb79926f08

Mesa: tag mesa-9.2-rc2: Mesa 9.2 release candidate 2

2013-08-23 Thread Ian Romanick
Module: Mesa
Branch: refs/tags/mesa-9.2-rc2
Tag:2e09358d4b5a23dfc0c3fb21946a68f68ac60665
URL:
http://cgit.freedesktop.org/mesa/mesa/tag/?id=2e09358d4b5a23dfc0c3fb21946a68f68ac60665

Tagger: Ian Romanick 
Date:   Thu Aug 22 15:22:17 2013 -0700

Mesa 9.2 release candidate 2
___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): mesa: Fix assertion error with glDebugMessageControl

2013-08-23 Thread Brian Paul
Module: Mesa
Branch: master
Commit: f0072e3c6b0bd46d8ebf7ac0a2cf1bf63dc370e8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f0072e3c6b0bd46d8ebf7ac0a2cf1bf63dc370e8

Author: Timothy Arceri 
Date:   Wed Aug 21 00:18:00 2013 -0600

mesa: Fix assertion error with glDebugMessageControl

enums were being converted twice resulting in incorrect values.
The extra conversion has been removed and the redundant assert is
removed also.

Cc: 9.2 

Signed-off-by: Timothy Arceri 
Reviewed-by: Brian Paul 

---

 src/mesa/main/errors.c |   15 ++-
 1 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c
index 5a0758d..cc93d3b 100644
--- a/src/mesa/main/errors.c
+++ b/src/mesa/main/errors.c
@@ -609,11 +609,6 @@ control_app_messages(struct gl_context *ctx, GLenum 
esource, GLenum etype,
enum mesa_debug_type type = gl_enum_to_debug_type(etype);
enum mesa_debug_severity severity = gl_enum_to_debug_severity(eseverity);
 
-   if (count)
-  assert(severity == MESA_DEBUG_SEVERITY_COUNT
- && type != MESA_DEBUG_TYPE_COUNT
- && source != MESA_DEBUG_SOURCE_COUNT);
-
for (i = 0; i < count; i++)
   set_message_state(ctx, source, type, ids[i], enabled);
 
@@ -629,9 +624,6 @@ _mesa_DebugMessageControlARB(GLenum gl_source, GLenum 
gl_type,
  GLsizei count, const GLuint *ids,
  GLboolean enabled)
 {
-   enum mesa_debug_source source;
-   enum mesa_debug_type type;
-   enum mesa_debug_severity severity;
GET_CURRENT_CONTEXT(ctx);
 
if (count < 0) {
@@ -651,11 +643,8 @@ _mesa_DebugMessageControlARB(GLenum gl_source, GLenum 
gl_type,
   return;
}
 
-   source = gl_enum_to_debug_source(gl_source);
-   type = gl_enum_to_debug_type(gl_type);
-   severity = gl_enum_to_debug_severity(gl_severity);
-
-   control_app_messages(ctx, source, type, severity, count, ids, enabled);
+   control_app_messages(ctx, gl_source, gl_type, gl_severity,
+count, ids, enabled);
 }
 
 void GLAPIENTRY

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