Mesa (master): nv30: Silence pipe_cap warnings

2012-05-11 Thread Ben Skeggs
Module: Mesa
Branch: master
Commit: e253ead78e65a64b606e8f46cdceec2689aaf9f4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e253ead78e65a64b606e8f46cdceec2689aaf9f4

Author: Roy Spliet 
Date:   Sat May 12 03:42:31 2012 +0200

nv30: Silence pipe_cap warnings

Signed-off-by: Roy Spliet 
Signed-off-by: Ben Skeggs 

---

 src/gallium/drivers/nv30/nv30_screen.c |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/nv30/nv30_screen.c 
b/src/gallium/drivers/nv30/nv30_screen.c
index c3e50a5..f5120e7 100644
--- a/src/gallium/drivers/nv30/nv30_screen.c
+++ b/src/gallium/drivers/nv30/nv30_screen.c
@@ -116,6 +116,10 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
   return 0;
+   case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
+   case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
+   case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
+  return 1;
default:
   debug_printf("unknown param %d\n", param);
   return 0;

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


Mesa (master): nv30/shader: SSG, LIT only requires one source register

2012-05-11 Thread Ben Skeggs
Module: Mesa
Branch: master
Commit: 897d2351322e4c516eee622b3f49eedca7a2e308
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=897d2351322e4c516eee622b3f49eedca7a2e308

Author: Roy Spliet 
Date:   Sat May 12 03:42:30 2012 +0200

nv30/shader: SSG, LIT only requires one source register

Fixes crashing due to assertion error

Signed-off-by: Roy Spliet 
Signed-off-by: Ben Skeggs 

---

 src/gallium/drivers/nv30/nvfx_fragprog.c |2 +-
 src/gallium/drivers/nv30/nvfx_vertprog.c |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/nv30/nvfx_fragprog.c 
b/src/gallium/drivers/nv30/nvfx_fragprog.c
index 592ad21..320efbb 100644
--- a/src/gallium/drivers/nv30/nvfx_fragprog.c
+++ b/src/gallium/drivers/nv30/nvfx_fragprog.c
@@ -623,7 +623,7 @@ nvfx_fragprog_parse_instruction(struct nv30_context* nvfx, 
struct nvfx_fpc *fpc,
   break;
case TGSI_OPCODE_LIT:
   if(!nvfx->is_nv4x)
- nvfx_fp_emit(fpc, arith(sat, LIT_NV30, dst, mask, src[0], src[1], 
src[2]));
+ nvfx_fp_emit(fpc, arith(sat, LIT_NV30, dst, mask, src[0], none, 
none));
   else {
  /* we use FLT_MIN, so that log2 never gives -infinity, and thus 
multiplication by
   * specular 0 always gives 0, so that ex2 gives 1, to satisfy the 0^0 
= 1 requirement
diff --git a/src/gallium/drivers/nv30/nvfx_vertprog.c 
b/src/gallium/drivers/nv30/nvfx_vertprog.c
index 82972b3..f41f82d 100644
--- a/src/gallium/drivers/nv30/nvfx_vertprog.c
+++ b/src/gallium/drivers/nv30/nvfx_vertprog.c
@@ -668,7 +668,7 @@ nvfx_vertprog_parse_instruction(struct nv30_context *nv30, 
struct nvfx_vpc *vpc,
   nvfx_vp_emit(vpc, arith(sat, VEC, SNE, dst, mask, src[0], src[1], none));
   break;
case TGSI_OPCODE_SSG:
-  nvfx_vp_emit(vpc, arith(sat, VEC, SSG, dst, mask, src[0], src[1], none));
+  nvfx_vp_emit(vpc, arith(sat, VEC, SSG, dst, mask, src[0], none, none));
   break;
case TGSI_OPCODE_STR:
   nvfx_vp_emit(vpc, arith(sat, VEC, STR, dst, mask, src[0], src[1], none));

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


Mesa (master): nouveau/vieux: finish != flush, how about we do that..

2012-05-11 Thread Ben Skeggs
Module: Mesa
Branch: master
Commit: 666004148353fa46e818772e496f6d09bd979737
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=666004148353fa46e818772e496f6d09bd979737

Author: Ben Skeggs 
Date:   Fri May 11 03:02:13 2012 +1000

nouveau/vieux: finish != flush, how about we do that..

Signed-off-by: Ben Skeggs 

---

 src/mesa/drivers/dri/nouveau/nouveau_context.c |8 
 src/mesa/drivers/dri/nouveau/nouveau_context.h |2 ++
 src/mesa/drivers/dri/nouveau/nouveau_driver.c  |   13 +
 3 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c 
b/src/mesa/drivers/dri/nouveau/nouveau_context.c
index 2625b76..d7d5a04 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
@@ -83,6 +83,13 @@ nouveau_context_create(gl_api api,
   return GL_FALSE;
}
 
+   if (nouveau_bo_new(context_dev(ctx), NOUVEAU_BO_VRAM, 0, 4096,
+  NULL, &nctx->fence)) {
+   nouveau_context_destroy(dri_ctx);
+   *error = __DRI_CTX_ERROR_NO_MEMORY;
+   return GL_FALSE;
+   }
+
*error = __DRI_CTX_ERROR_SUCCESS;
return GL_TRUE;
 }
@@ -209,6 +216,7 @@ nouveau_context_destroy(__DRIcontext *dri_ctx)
struct nouveau_context *nctx = dri_ctx->driverPrivate;
struct gl_context *ctx = &nctx->base;
 
+   nouveau_bo_ref(NULL, &nctx->fence);
context_drv(ctx)->context_destroy(ctx);
 }
 
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.h 
b/src/mesa/drivers/dri/nouveau/nouveau_context.h
index 8bba51e..2bcc1e1 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.h
@@ -72,6 +72,8 @@ struct nouveau_context {
BITSET_DECLARE(dirty, MAX_NOUVEAU_STATE);
enum nouveau_fallback fallback;
 
+   struct nouveau_bo *fence;
+
struct nouveau_hw_state hw;
struct nouveau_render_state render;
struct nouveau_scratch_state scratch;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.c 
b/src/mesa/drivers/dri/nouveau/nouveau_driver.c
index 69e5cac..e824d10 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_driver.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.c
@@ -76,7 +76,20 @@ nouveau_flush(struct gl_context *ctx)
 static void
 nouveau_finish(struct gl_context *ctx)
 {
+   struct nouveau_context *nctx = to_nouveau_context(ctx);
+   struct nouveau_pushbuf *push = context_push(ctx);
+   struct nouveau_pushbuf_refn refn =
+   { nctx->fence, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR };
+
nouveau_flush(ctx);
+
+   if (!nouveau_pushbuf_space(push, 16, 0, 0) &&
+   !nouveau_pushbuf_refn(push, &refn, 1)) {
+   PUSH_DATA(push, 0);
+   PUSH_KICK(push);
+   }
+
+   nouveau_bo_wait(nctx->fence, NOUVEAU_BO_RDWR, context_client(ctx));
 }
 
 void

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


Mesa (master): r300g/swtcl: move vertex buffer updates into set_vertex_buffers

2012-05-11 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 9d6b46b1cd459ee6c0db4bfe518adb6928c5b59f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9d6b46b1cd459ee6c0db4bfe518adb6928c5b59f

Author: Marek Olšák 
Date:   Fri May 11 23:33:50 2012 +0200

r300g/swtcl: move vertex buffer updates into set_vertex_buffers

---

 src/gallium/drivers/r300/r300_render.c |   11 ---
 src/gallium/drivers/r300/r300_state.c  |   52 +---
 2 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_render.c 
b/src/gallium/drivers/r300/r300_render.c
index ea82e49..ceda126 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -855,7 +855,6 @@ static void r300_swtcl_draw_vbo(struct pipe_context* pipe,
 const struct pipe_draw_info *info)
 {
 struct r300_context* r300 = r300_context(pipe);
-int i;
 boolean indexed = info->indexed;
 
 if (r300->skip_rendering) {
@@ -869,16 +868,6 @@ static void r300_swtcl_draw_vbo(struct pipe_context* pipe,
 (indexed ? PREP_INDEXED : 0),
 indexed ? 256 : 6);
 
-for (i = 0; i < r300->nr_vertex_buffers; i++) {
-if (r300->vertex_buffer[i].user_buffer) {
-draw_set_mapped_vertex_buffer(r300->draw, i,
-  r300->vertex_buffer[i].user_buffer);
-} else if (r300->vertex_buffer[i].buffer) {
-draw_set_mapped_vertex_buffer(r300->draw, i,
-r300_resource(r300->vertex_buffer[i].buffer)->malloced_buffer);
-}
-}
-
 r300->draw_vbo_locked = TRUE;
 r300->draw_first_emitted = FALSE;
 draw_vbo(r300->draw, info);
diff --git a/src/gallium/drivers/r300/r300_state.c 
b/src/gallium/drivers/r300/r300_state.c
index cecbfd2..812fe39 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -1588,29 +1588,45 @@ static void r300_set_viewport_state(struct 
pipe_context* pipe,
 }
 }
 
-static void r300_set_vertex_buffers(struct pipe_context* pipe,
+static void r300_set_vertex_buffers_hwtcl(struct pipe_context* pipe,
 unsigned count,
 const struct pipe_vertex_buffer* buffers)
 {
 struct r300_context* r300 = r300_context(pipe);
 
-if (r300->screen->caps.has_tcl) {
-/* There must be at least one vertex buffer set, otherwise it locks 
up. */
-if (!count) {
-buffers = &r300->dummy_vb;
-count = 1;
-}
+/* There must be at least one vertex buffer set, otherwise it locks up. */
+if (!count) {
+buffers = &r300->dummy_vb;
+count = 1;
+}
 
-util_copy_vertex_buffers(r300->vertex_buffer,
- &r300->nr_vertex_buffers,
- buffers, count);
+util_copy_vertex_buffers(r300->vertex_buffer,
+ &r300->nr_vertex_buffers,
+ buffers, count);
 
-r300->vertex_arrays_dirty = TRUE;
-} else {
-util_copy_vertex_buffers(r300->vertex_buffer,
- &r300->nr_vertex_buffers,
- buffers, count);
-draw_set_vertex_buffers(r300->draw, count, buffers);
+r300->vertex_arrays_dirty = TRUE;
+}
+
+static void r300_set_vertex_buffers_swtcl(struct pipe_context* pipe,
+unsigned count,
+const struct pipe_vertex_buffer* buffers)
+{
+struct r300_context* r300 = r300_context(pipe);
+unsigned i;
+
+util_copy_vertex_buffers(r300->vertex_buffer,
+ &r300->nr_vertex_buffers,
+ buffers, count);
+draw_set_vertex_buffers(r300->draw, count, buffers);
+
+for (i = 0; i < count; i++) {
+if (buffers[i].user_buffer) {
+draw_set_mapped_vertex_buffer(r300->draw, i,
+  buffers[i].user_buffer);
+} else if (buffers[i].buffer) {
+draw_set_mapped_vertex_buffer(r300->draw, i,
+r300_resource(buffers[i].buffer)->malloced_buffer);
+}
 }
 }
 
@@ -1952,11 +1968,11 @@ void r300_init_state_functions(struct r300_context* 
r300)
 
 r300->context.set_viewport_state = r300_set_viewport_state;
 
-r300->context.set_vertex_buffers = r300_set_vertex_buffers;
-
 if (r300->screen->caps.has_tcl) {
+r300->context.set_vertex_buffers = r300_set_vertex_buffers_hwtcl;
 r300->context.set_index_buffer = r300_set_index_buffer_hwtcl;
 } else {
+r300->context.set_vertex_buffers = r300_set_vertex_buffers_swtcl;
 r300->context.set_index_buffer = r300_set_index_buffer_swtcl;
 }
 

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

Mesa (master): r300g/swtcl: move index buffer updates from swtcl_draw_vbo into set_index_buffer

2012-05-11 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 735d0d93a7d748c2e0c0f13fcd6da0c13b678da9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=735d0d93a7d748c2e0c0f13fcd6da0c13b678da9

Author: Marek Olšák 
Date:   Fri May 11 23:33:50 2012 +0200

r300g/swtcl: move index buffer updates from swtcl_draw_vbo into set_index_buffer

---

 src/gallium/drivers/r300/r300_render.c |   10 --
 src/gallium/drivers/r300/r300_state.c  |   29 -
 2 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_render.c 
b/src/gallium/drivers/r300/r300_render.c
index d98b288..ea82e49 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -879,16 +879,6 @@ static void r300_swtcl_draw_vbo(struct pipe_context* pipe,
 }
 }
 
-if (indexed) {
-if (r300->index_buffer.user_buffer) {
-draw_set_mapped_index_buffer(r300->draw,
- r300->index_buffer.user_buffer);
-} else if (r300->index_buffer.buffer) {
-draw_set_mapped_index_buffer(r300->draw,
-r300_resource(r300->index_buffer.buffer)->malloced_buffer);
-}
-}
-
 r300->draw_vbo_locked = TRUE;
 r300->draw_first_emitted = FALSE;
 draw_vbo(r300->draw, info);
diff --git a/src/gallium/drivers/r300/r300_state.c 
b/src/gallium/drivers/r300/r300_state.c
index 758fb40..cecbfd2 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -1614,8 +1614,8 @@ static void r300_set_vertex_buffers(struct pipe_context* 
pipe,
 }
 }
 
-static void r300_set_index_buffer(struct pipe_context* pipe,
-  const struct pipe_index_buffer *ib)
+static void r300_set_index_buffer_hwtcl(struct pipe_context* pipe,
+const struct pipe_index_buffer *ib)
 {
 struct r300_context* r300 = r300_context(pipe);
 
@@ -1625,9 +1625,23 @@ static void r300_set_index_buffer(struct pipe_context* 
pipe,
 } else {
 pipe_resource_reference(&r300->index_buffer.buffer, NULL);
 }
+}
+
+static void r300_set_index_buffer_swtcl(struct pipe_context* pipe,
+const struct pipe_index_buffer *ib)
+{
+struct r300_context* r300 = r300_context(pipe);
+
+draw_set_index_buffer(r300->draw, ib);
 
-if (!r300->screen->caps.has_tcl) {
-draw_set_index_buffer(r300->draw, ib);
+if (ib) {
+if (ib->user_buffer) {
+draw_set_mapped_index_buffer(r300->draw,
+ ib->user_buffer);
+} else if (ib->buffer) {
+draw_set_mapped_index_buffer(r300->draw,
+r300_resource(ib->buffer)->malloced_buffer);
+}
 }
 }
 
@@ -1939,7 +1953,12 @@ void r300_init_state_functions(struct r300_context* r300)
 r300->context.set_viewport_state = r300_set_viewport_state;
 
 r300->context.set_vertex_buffers = r300_set_vertex_buffers;
-r300->context.set_index_buffer = r300_set_index_buffer;
+
+if (r300->screen->caps.has_tcl) {
+r300->context.set_index_buffer = r300_set_index_buffer_hwtcl;
+} else {
+r300->context.set_index_buffer = r300_set_index_buffer_swtcl;
+}
 
 r300->context.create_vertex_elements_state = 
r300_create_vertex_elements_state;
 r300->context.bind_vertex_elements_state = r300_bind_vertex_elements_state;

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


Mesa (master): r300g/swtcl: malloc vertex and index buffers (don' t use radeon DRM to get them)

2012-05-11 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 21b012d3b022c1c55358226f7bcc52fe50078123
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=21b012d3b022c1c55358226f7bcc52fe50078123

Author: Marek Olšák 
Date:   Fri May 11 23:22:21 2012 +0200

r300g/swtcl: malloc vertex and index buffers (don't use radeon DRM to get them)

Vertex and index buffers are never used by hardware, only by Draw.
SWTCL chipsets usually have very little memory, so this might help
with stability and reliability.

---

 src/gallium/drivers/r300/r300_context.h   |5 ++-
 src/gallium/drivers/r300/r300_render.c|   39 +---
 src/gallium/drivers/r300/r300_screen_buffer.c |   18 ++-
 src/gallium/drivers/r300/r300_state.c |4 +-
 4 files changed, 23 insertions(+), 43 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_context.h 
b/src/gallium/drivers/r300/r300_context.h
index b58f514..6a06442 100644
--- a/src/gallium/drivers/r300/r300_context.h
+++ b/src/gallium/drivers/r300/r300_context.h
@@ -389,8 +389,9 @@ struct r300_resource
 struct radeon_winsys_cs_handle *cs_buf;
 enum radeon_bo_domain domain;
 
-/* Constant buffers are in user memory. */
-uint8_t *constant_buffer;
+/* Constant buffers and SWTCL vertex and index buffers are in user
+ * memory. */
+uint8_t *malloced_buffer;
 
 /* Texture description (addressing, layout, special features). */
 struct r300_texture_desc tex;
diff --git a/src/gallium/drivers/r300/r300_render.c 
b/src/gallium/drivers/r300/r300_render.c
index 56f480d..d98b288 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -855,10 +855,7 @@ static void r300_swtcl_draw_vbo(struct pipe_context* pipe,
 const struct pipe_draw_info *info)
 {
 struct r300_context* r300 = r300_context(pipe);
-struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS];
-struct pipe_transfer *ib_transfer = NULL;
 int i;
-const void *indices = NULL;
 boolean indexed = info->indexed;
 
 if (r300->skip_rendering) {
@@ -877,46 +874,26 @@ static void r300_swtcl_draw_vbo(struct pipe_context* pipe,
 draw_set_mapped_vertex_buffer(r300->draw, i,
   r300->vertex_buffer[i].user_buffer);
 } else if (r300->vertex_buffer[i].buffer) {
-void *buf = pipe_buffer_map(pipe,
-  r300->vertex_buffer[i].buffer,
-  PIPE_TRANSFER_READ |
-  PIPE_TRANSFER_UNSYNCHRONIZED,
-  &vb_transfer[i]);
-draw_set_mapped_vertex_buffer(r300->draw, i, buf);
+draw_set_mapped_vertex_buffer(r300->draw, i,
+r300_resource(r300->vertex_buffer[i].buffer)->malloced_buffer);
 }
 }
 
 if (indexed) {
 if (r300->index_buffer.user_buffer) {
-indices = r300->index_buffer.user_buffer;
-} else {
-indices = pipe_buffer_map(pipe, r300->index_buffer.buffer,
-  PIPE_TRANSFER_READ |
-  PIPE_TRANSFER_UNSYNCHRONIZED, 
&ib_transfer);
+draw_set_mapped_index_buffer(r300->draw,
+ r300->index_buffer.user_buffer);
+} else if (r300->index_buffer.buffer) {
+draw_set_mapped_index_buffer(r300->draw,
+r300_resource(r300->index_buffer.buffer)->malloced_buffer);
 }
 }
 
-draw_set_mapped_index_buffer(r300->draw, indices);
-
 r300->draw_vbo_locked = TRUE;
 r300->draw_first_emitted = FALSE;
 draw_vbo(r300->draw, info);
 draw_flush(r300->draw);
 r300->draw_vbo_locked = FALSE;
-
-for (i = 0; i < r300->nr_vertex_buffers; i++) {
-if (r300->vertex_buffer[i].buffer) {
-if (vb_transfer[i])
-pipe_buffer_unmap(pipe, vb_transfer[i]);
-draw_set_mapped_vertex_buffer(r300->draw, i, NULL);
-}
-}
-
-if (indexed) {
-if (ib_transfer)
-pipe_buffer_unmap(pipe, ib_transfer);
-draw_set_mapped_index_buffer(r300->draw, NULL);
-}
 }
 
 /* Object for rendering using Draw. */
@@ -969,7 +946,7 @@ static boolean r300_render_allocate_vertices(struct 
vbuf_render* render,
 {
pipe_resource_reference(&r300->vbo, NULL);
 r300->vbo = pipe_buffer_create(screen,
-  PIPE_BIND_VERTEX_BUFFER,
+  PIPE_BIND_CUSTOM,
   PIPE_USAGE_STREAM,
   R300_MAX_DRAW_VBO_SIZE);
 r300->draw_vbo_offset = 0;
diff --git a/src/gallium/drivers/r300/r300_screen_buffer.c 
b/src/gallium/drivers/r300/r300_screen_buffer.c
index 9ab2acd..7cb8cd6 100644
--- a/src/gallium/drivers/r300/r300_screen_buffer.c
+++ b/src/gallium/drivers/r300/r300_screen_buffer.c
@@

Mesa (master): r300g/swtcl: don't do stuff which is only for HWTCL

2012-05-11 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 8a963d122d4b67209214b0483084ba950814f42b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8a963d122d4b67209214b0483084ba950814f42b

Author: Marek Olšák 
Date:   Fri May 11 23:09:05 2012 +0200

r300g/swtcl: don't do stuff which is only for HWTCL

---

 src/gallium/drivers/r300/r300_context.c |   11 +++
 src/gallium/drivers/r300/r300_state.c   |   21 -
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_context.c 
b/src/gallium/drivers/r300/r300_context.c
index 1006336..8cbe246 100644
--- a/src/gallium/drivers/r300/r300_context.c
+++ b/src/gallium/drivers/r300/r300_context.c
@@ -80,7 +80,8 @@ static void r300_destroy_context(struct pipe_context* context)
 if (r300->draw)
 draw_destroy(r300->draw);
 
-u_upload_destroy(r300->uploader);
+if (r300->uploader)
+u_upload_destroy(r300->uploader);
 
 /* XXX: This function assumes r300->query_list was initialized */
 r300_release_referenced_objects(r300);
@@ -402,8 +403,10 @@ struct pipe_context* r300_create_context(struct 
pipe_screen* screen,
 r300->context.create_video_decoder = vl_create_decoder;
 r300->context.create_video_buffer = vl_video_buffer_create;
 
-r300->uploader = u_upload_create(&r300->context, 256 * 1024, 4,
- PIPE_BIND_INDEX_BUFFER);
+if (r300screen->caps.has_tcl) {
+r300->uploader = u_upload_create(&r300->context, 256 * 1024, 4,
+ PIPE_BIND_INDEX_BUFFER);
+}
 
 r300->blitter = util_blitter_create(&r300->context);
 if (r300->blitter == NULL)
@@ -437,7 +440,7 @@ struct pipe_context* r300_create_context(struct 
pipe_screen* screen,
 pipe_resource_reference(&tex, NULL);
 }
 
-{
+if (r300screen->caps.has_tcl) {
 struct pipe_resource vb;
 memset(&vb, 0, sizeof(vb));
 vb.target = PIPE_BUFFER;
diff --git a/src/gallium/drivers/r300/r300_state.c 
b/src/gallium/drivers/r300/r300_state.c
index a9a76c5..5b02cfd 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -1594,19 +1594,22 @@ static void r300_set_vertex_buffers(struct 
pipe_context* pipe,
 {
 struct r300_context* r300 = r300_context(pipe);
 
-/* There must be at least one vertex buffer set, otherwise it locks up. */
-if (!count) {
-buffers = &r300->dummy_vb;
-count = 1;
-}
+if (r300->screen->caps.has_tcl) {
+/* There must be at least one vertex buffer set, otherwise it locks 
up. */
+if (!count) {
+buffers = &r300->dummy_vb;
+count = 1;
+}
 
-util_copy_vertex_buffers(r300->vertex_buffer,
- &r300->nr_vertex_buffers,
- buffers, count);
+util_copy_vertex_buffers(r300->vertex_buffer,
+ &r300->nr_vertex_buffers,
+ buffers, count);
 
-if (r300->screen->caps.has_tcl) {
 r300->vertex_arrays_dirty = TRUE;
 } else {
+util_copy_vertex_buffers(r300->vertex_buffer,
+ &r300->nr_vertex_buffers,
+ buffers, count);
 draw_set_vertex_buffers(r300->draw, count, buffers);
 }
 }

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


Mesa (master): r300g: remove slab allocator for pipe_resource ( used mainly for user buffers)

2012-05-11 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: f808984f438b827afff6fdbe52ac52dee8781d03
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f808984f438b827afff6fdbe52ac52dee8781d03

Author: Marek Olšák 
Date:   Fri May 11 22:56:08 2012 +0200

r300g: remove slab allocator for pipe_resource (used mainly for user buffers)

---

 src/gallium/drivers/r300/r300_context.c   |   24 
 src/gallium/drivers/r300/r300_screen.c|9 -
 src/gallium/drivers/r300/r300_screen.h|8 
 src/gallium/drivers/r300/r300_screen_buffer.c |7 +++
 4 files changed, 3 insertions(+), 45 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_context.c 
b/src/gallium/drivers/r300/r300_context.c
index e1330a4..1006336 100644
--- a/src/gallium/drivers/r300/r300_context.c
+++ b/src/gallium/drivers/r300/r300_context.c
@@ -36,26 +36,6 @@
 #include "r300_screen.h"
 #include "r300_screen_buffer.h"
 
-static void r300_update_num_contexts(struct r300_screen *r300screen,
- int diff)
-{
-pipe_mutex_lock(r300screen->num_contexts_mutex);
-if (diff > 0) {
-r300screen->num_contexts++;
-
-if (r300screen->num_contexts > 1)
-util_slab_set_thread_safety(&r300screen->pool_buffers,
-UTIL_SLAB_MULTITHREADED);
-} else {
-r300screen->num_contexts--;
-
-if (r300screen->num_contexts <= 1)
-util_slab_set_thread_safety(&r300screen->pool_buffers,
-UTIL_SLAB_SINGLETHREADED);
-}
-pipe_mutex_unlock(r300screen->num_contexts_mutex);
-}
-
 static void r300_release_referenced_objects(struct r300_context *r300)
 {
 struct pipe_framebuffer_state *fb =
@@ -111,8 +91,6 @@ static void r300_destroy_context(struct pipe_context* 
context)
 /* XXX: No way to tell if this was initialized or not? */
 util_slab_destroy(&r300->pool_transfers);
 
-r300_update_num_contexts(r300->screen, -1);
-
 /* Free the structs allocated in r300_setup_atoms() */
 if (r300->aa_state.state) {
 FREE(r300->aa_state.state);
@@ -379,8 +357,6 @@ struct pipe_context* r300_create_context(struct 
pipe_screen* screen,
 if (!r300)
 return NULL;
 
-r300_update_num_contexts(r300screen, 1);
-
 r300->rws = rws;
 r300->screen = r300screen;
 
diff --git a/src/gallium/drivers/r300/r300_screen.c 
b/src/gallium/drivers/r300/r300_screen.c
index 1e7f927..82bde2a 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -458,9 +458,6 @@ static void r300_destroy_screen(struct pipe_screen* pscreen)
 struct r300_screen* r300screen = r300_screen(pscreen);
 struct radeon_winsys *rws = radeon_winsys(pscreen);
 
-util_slab_destroy(&r300screen->pool_buffers);
-pipe_mutex_destroy(r300screen->num_contexts_mutex);
-
 if (rws)
   rws->destroy(rws);
 
@@ -533,12 +530,6 @@ struct pipe_screen* r300_screen_create(struct 
radeon_winsys *rws)
 if (r300screen->info.drm_minor < 8)
 r300screen->caps.has_us_format = FALSE;
 
-pipe_mutex_init(r300screen->num_contexts_mutex);
-
-util_slab_create(&r300screen->pool_buffers,
- sizeof(struct r300_resource), 64,
- UTIL_SLAB_SINGLETHREADED);
-
 r300screen->rws = rws;
 r300screen->screen.destroy = r300_destroy_screen;
 r300screen->screen.get_name = r300_get_name;
diff --git a/src/gallium/drivers/r300/r300_screen.h 
b/src/gallium/drivers/r300/r300_screen.h
index 82b2068..86bb09c 100644
--- a/src/gallium/drivers/r300/r300_screen.h
+++ b/src/gallium/drivers/r300/r300_screen.h
@@ -40,16 +40,8 @@ struct r300_screen {
 struct radeon_info info;
 struct r300_capabilities caps;
 
-/* Memory pools. */
-struct util_slab_mempool pool_buffers;
-
 /** Combination of DBG_xxx flags */
 unsigned debug;
-
-/* The number of created contexts to know whether we have multiple
- * contexts or not. */
-int num_contexts;
-pipe_mutex num_contexts_mutex;
 };
 
 
diff --git a/src/gallium/drivers/r300/r300_screen_buffer.c 
b/src/gallium/drivers/r300/r300_screen_buffer.c
index 0c3f870..9ab2acd 100644
--- a/src/gallium/drivers/r300/r300_screen_buffer.c
+++ b/src/gallium/drivers/r300/r300_screen_buffer.c
@@ -53,7 +53,6 @@ void r300_upload_index_buffer(struct r300_context *r300,
 static void r300_buffer_destroy(struct pipe_screen *screen,
struct pipe_resource *buf)
 {
-struct r300_screen *r300screen = r300_screen(screen);
 struct r300_resource *rbuf = r300_resource(buf);
 
 if (rbuf->constant_buffer)
@@ -62,7 +61,7 @@ static void r300_buffer_destroy(struct pipe_screen *screen,
 if (rbuf->buf)
 pb_reference(&rbuf->buf, NULL);
 
-util_slab_free(&r300screen->pool_buffers, rbuf);
+FREE(rbuf);
 }
 
 static struct pipe_transfer*
@@ -151,7 +150,7 @@ struct pipe_resource *r300_buffer_create(struct pi

Mesa (master): r300g: fix breakage after gallium-userbuf merge

2012-05-11 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: bdba35befac74a0bef0d1be657e4e77de628e28b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bdba35befac74a0bef0d1be657e4e77de628e28b

Author: Marek Olšák 
Date:   Fri May 11 22:25:03 2012 +0200

r300g: fix breakage after gallium-userbuf merge

---

 src/gallium/drivers/r300/r300_screen.c |   29 -
 src/gallium/drivers/r300/r300_state.c  |   21 -
 2 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_screen.c 
b/src/gallium/drivers/r300/r300_screen.c
index f84f3e5..1e7f927 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -103,9 +103,6 @@ static int r300_get_param(struct pipe_screen* pscreen, enum 
pipe_cap param)
 case PIPE_CAP_TGSI_CAN_COMPACT_VARYINGS:
 case PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS:
 case PIPE_CAP_VERTEX_COLOR_CLAMPED:
-case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
-case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
-case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
 case PIPE_CAP_USER_INDEX_BUFFERS:
 case PIPE_CAP_USER_CONSTANT_BUFFERS:
 return 1;
@@ -149,13 +146,19 @@ static int r300_get_param(struct pipe_screen* pscreen, 
enum pipe_cap param)
 case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME:
 case PIPE_CAP_FRAGMENT_COLOR_CLAMPED:
 case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
-case PIPE_CAP_USER_VERTEX_BUFFERS:
 return 0;
 
 /* SWTCL-only features. */
 case PIPE_CAP_PRIMITIVE_RESTART:
+case PIPE_CAP_USER_VERTEX_BUFFERS:
 return !r300screen->caps.has_tcl;
 
+/* HWTCL-only features / limitations. */
+case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
+case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
+case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
+return r300screen->caps.has_tcl;
+
 /* Texturing. */
 case PIPE_CAP_MAX_COMBINED_SAMPLERS:
 return r300screen->caps.num_tex_units;
@@ -426,11 +429,19 @@ static boolean r300_is_format_supported(struct 
pipe_screen* screen,
 }
 
 /* Check vertex buffer format support. */
-if (usage & PIPE_BIND_VERTEX_BUFFER &&
-/* Half float is supported on >= R400. */
-(is_r400 || is_r500 || !is_half_float) &&
-r300_translate_vertex_data_type(format) != R300_INVALID_FORMAT) {
-retval |= PIPE_BIND_VERTEX_BUFFER;
+if (usage & PIPE_BIND_VERTEX_BUFFER) {
+if (r300_screen(screen)->caps.has_tcl) {
+/* Half float is supported on >= R400. */
+if ((is_r400 || is_r500 || !is_half_float) &&
+r300_translate_vertex_data_type(format) != 
R300_INVALID_FORMAT) {
+retval |= PIPE_BIND_VERTEX_BUFFER;
+}
+} else {
+/* SW TCL */
+if (!util_format_is_pure_integer(format)) {
+retval |= PIPE_BIND_VERTEX_BUFFER;
+}
+}
 }
 
 /* Transfers are always supported. */
diff --git a/src/gallium/drivers/r300/r300_state.c 
b/src/gallium/drivers/r300/r300_state.c
index 566bc44..a9a76c5 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -1822,11 +1822,12 @@ static void r300_set_constant_buffer(struct 
pipe_context *pipe,
  struct pipe_constant_buffer *cb)
 {
 struct r300_context* r300 = r300_context(pipe);
-struct pipe_resource *buf = cb ? cb->buffer : NULL;
 struct r300_constant_buffer *cbuf;
-struct r300_resource *rbuf = r300_resource(buf);
 uint32_t *mapped;
 
+if (!cb)
+return;
+
 switch (shader) {
 case PIPE_SHADER_VERTEX:
 cbuf = (struct r300_constant_buffer*)r300->vs_constants.state;
@@ -1838,15 +1839,17 @@ static void r300_set_constant_buffer(struct 
pipe_context *pipe,
 return;
 }
 
-if (buf == NULL || buf->width0 == 0)
-return;
 
 if (cb->user_buffer)
 mapped = (uint32_t*)cb->user_buffer;
-else if (rbuf->constant_buffer)
-mapped = (uint32_t*)rbuf->constant_buffer;
-else
-return;
+else {
+struct r300_resource *rbuf = r300_resource(cb->buffer);
+
+if (rbuf && rbuf->constant_buffer)
+mapped = (uint32_t*)rbuf->constant_buffer;
+else
+return;
+}
 
 if (shader == PIPE_SHADER_FRAGMENT ||
 (shader == PIPE_SHADER_VERTEX && r300->screen->caps.has_tcl)) {
@@ -1873,7 +1876,7 @@ static void r300_set_constant_buffer(struct pipe_context 
*pipe,
 r300_mark_atom_dirty(r300, &r300->vs_constants);
 } else if (r300->draw) {
 draw_set_mapped_constant_buffer(r300->draw, PIPE_SHADER_VERTEX,
-0, mapped, buf->width0);
+0, mapped, cb->buffer_siz

Mesa (master): r300g: remove user_buffer_create

2012-05-11 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 4fd60ad6dae7e5cf3eb0ab4f49bf86378230b65f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4fd60ad6dae7e5cf3eb0ab4f49bf86378230b65f

Author: Marek Olšák 
Date:   Fri May 11 22:34:34 2012 +0200

r300g: remove user_buffer_create

---

 src/gallium/drivers/r300/r300_resource.c  |1 -
 src/gallium/drivers/r300/r300_screen_buffer.c |   27 -
 src/gallium/drivers/r300/r300_screen_buffer.h |4 ---
 3 files changed, 0 insertions(+), 32 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_resource.c 
b/src/gallium/drivers/r300/r300_resource.c
index 823bc0f..46399fb 100644
--- a/src/gallium/drivers/r300/r300_resource.c
+++ b/src/gallium/drivers/r300/r300_resource.c
@@ -56,5 +56,4 @@ void r300_init_screen_resource_functions(struct r300_screen 
*r300screen)
r300screen->screen.resource_from_handle = r300_texture_from_handle;
r300screen->screen.resource_get_handle = r300_resource_get_handle;
r300screen->screen.resource_destroy = u_resource_destroy_vtbl;
-   r300screen->screen.user_buffer_create = r300_user_buffer_create;
 }
diff --git a/src/gallium/drivers/r300/r300_screen_buffer.c 
b/src/gallium/drivers/r300/r300_screen_buffer.c
index 7927310..0c3f870 100644
--- a/src/gallium/drivers/r300/r300_screen_buffer.c
+++ b/src/gallium/drivers/r300/r300_screen_buffer.c
@@ -181,30 +181,3 @@ struct pipe_resource *r300_buffer_create(struct 
pipe_screen *screen,
 
 return &rbuf->b.b;
 }
-
-struct pipe_resource *r300_user_buffer_create(struct pipe_screen *screen,
- void *ptr, unsigned size,
- unsigned bind)
-{
-struct r300_screen *r300screen = r300_screen(screen);
-struct r300_resource *rbuf;
-
-rbuf = util_slab_alloc(&r300screen->pool_buffers);
-
-pipe_reference_init(&rbuf->b.b.reference, 1);
-rbuf->b.b.screen = screen;
-rbuf->b.b.target = PIPE_BUFFER;
-rbuf->b.b.format = PIPE_FORMAT_R8_UNORM;
-rbuf->b.b.usage = PIPE_USAGE_IMMUTABLE;
-rbuf->b.b.bind = bind;
-rbuf->b.b.width0 = ~0;
-rbuf->b.b.height0 = 1;
-rbuf->b.b.depth0 = 1;
-rbuf->b.b.array_size = 1;
-rbuf->b.b.flags = 0;
-rbuf->b.vtbl = &r300_buffer_vtbl;
-rbuf->domain = RADEON_DOMAIN_GTT;
-rbuf->buf = NULL;
-rbuf->constant_buffer = NULL;
-return &rbuf->b.b;
-}
diff --git a/src/gallium/drivers/r300/r300_screen_buffer.h 
b/src/gallium/drivers/r300/r300_screen_buffer.h
index 482b6e4..b4c8520 100644
--- a/src/gallium/drivers/r300/r300_screen_buffer.h
+++ b/src/gallium/drivers/r300/r300_screen_buffer.h
@@ -44,10 +44,6 @@ void r300_upload_index_buffer(struct r300_context *r300,
 struct pipe_resource *r300_buffer_create(struct pipe_screen *screen,
 const struct pipe_resource *templ);
 
-struct pipe_resource *r300_user_buffer_create(struct pipe_screen *screen,
- void *ptr, unsigned size,
- unsigned bind);
-
 /* Inline functions. */
 
 static INLINE struct r300_buffer *r300_buffer(struct pipe_resource *buffer)

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


Mesa (master): llvmpipe: add cast to silence warning

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 550de24c17fd4873b0200c0d4a61656e184631ac
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=550de24c17fd4873b0200c0d4a61656e184631ac

Author: Brian Paul 
Date:   Fri May 11 16:16:11 2012 -0600

llvmpipe: add cast to silence warning

---

 src/gallium/drivers/llvmpipe/lp_state_fs.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c 
b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index 2d2391e..d16952c 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -1174,7 +1174,8 @@ llvmpipe_set_constant_buffer(struct pipe_context *pipe,
const void *data;
 
if (cb && cb->user_buffer) {
-  constants = llvmpipe_user_buffer_create(pipe->screen, cb->user_buffer,
+  constants = llvmpipe_user_buffer_create(pipe->screen,
+  (void *) cb->user_buffer,
   cb->buffer_size,
   PIPE_BIND_CONSTANT_BUFFER);
}

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


Mesa (master): vega: fix 565 color unpacking bug

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 9d6e908f140d0ed2fe8031d0f8084aaf2c3477db
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9d6e908f140d0ed2fe8031d0f8084aaf2c3477db

Author: Andreas Betz 
Date:   Fri May 11 07:29:06 2012 -0600

vega: fix 565 color unpacking bug

NOTE: This is a candidate for the 8.0 branch.

Signed-off-by: Brian Paul 

---

 src/gallium/state_trackers/vega/vg_translate.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/state_trackers/vega/vg_translate.c 
b/src/gallium/state_trackers/vega/vg_translate.c
index 06cc003..7b3df27 100644
--- a/src/gallium/state_trackers/vega/vg_translate.c
+++ b/src/gallium/state_trackers/vega/vg_translate.c
@@ -526,8 +526,8 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
   src += offset;
   for (i = 0; i < n; ++i) {
  VGfloat clr[4];
- clr[0] = ((*src >> 10) & 31)/31.;
- clr[1] = ((*src >>  5) & 95)/95.;
+ clr[0] = ((*src >> 11) & 31)/31.;
+ clr[1] = ((*src >>  5) & 63)/63.;
  clr[2] = ((*src >>  0) & 31)/31.;
  clr[3] = 1.f;
 

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


Mesa (master): mesa: add DEBUG_INCOMPLETE_TEXTURE, DEBUG_INCOMPLETE_FBO flags

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 93bcf7825d023d3d7108bc47a7a0929338bba6b9
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=93bcf7825d023d3d7108bc47a7a0929338bba6b9

Author: Brian Paul 
Date:   Wed May  9 12:09:21 2012 -0600

mesa: add DEBUG_INCOMPLETE_TEXTURE, DEBUG_INCOMPLETE_FBO flags

Instead of having to hack the code to enable these debugging options,
set them through the MESA_DEBUG env var.

Reviewed-by: Eric Anholt 

---

 src/mesa/main/debug.c|4 +++-
 src/mesa/main/fbobject.c |   20 ++--
 src/mesa/main/mtypes.h   |4 +++-
 src/mesa/main/texobj.c   |   17 +
 4 files changed, 21 insertions(+), 24 deletions(-)

diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c
index 0e73fcb..62b8e00 100644
--- a/src/mesa/main/debug.c
+++ b/src/mesa/main/debug.c
@@ -204,7 +204,9 @@ set_debug_flags(const char *str)
};
static const struct option opts[] = {
   { "silent", DEBUG_SILENT }, /* turn off debug messages */
-  { "flush", DEBUG_ALWAYS_FLUSH } /* flush after each drawing command */
+  { "flush", DEBUG_ALWAYS_FLUSH }, /* flush after each drawing command */
+  { "incomplete_tex", DEBUG_INCOMPLETE_TEXTURE },
+  { "incomplete_fbo", DEBUG_INCOMPLETE_FBO }
};
GLuint i;
 
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index f563694..83e 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -49,9 +49,6 @@
 #include "texobj.h"
 
 
-/** Set this to 1 to help debug FBO incompleteness problems */
-#define DEBUG_FBO 0
-
 /** Set this to 1 to debug/log glBlitFramebuffer() calls */
 #define DEBUG_BLIT 0
 
@@ -462,11 +459,9 @@ _mesa_validate_framebuffer(struct gl_context *ctx, struct 
gl_framebuffer *fb)
 static void
 att_incomplete(const char *msg)
 {
-#if DEBUG_FBO
-   _mesa_debug(NULL, "attachment incomplete: %s\n", msg);
-#else
-   (void) msg;
-#endif
+   if (MESA_DEBUG_FLAGS & DEBUG_INCOMPLETE_FBO) {
+  _mesa_debug(NULL, "attachment incomplete: %s\n", msg);
+   }
 }
 
 
@@ -476,12 +471,9 @@ att_incomplete(const char *msg)
 static void
 fbo_incomplete(const char *msg, int index)
 {
-#if DEBUG_FBO
-   _mesa_debug(NULL, "FBO Incomplete: %s [%d]\n", msg, index);
-#else
-   (void) msg;
-   (void) index;
-#endif
+   if (MESA_DEBUG_FLAGS & DEBUG_INCOMPLETE_FBO) {
+  _mesa_debug(NULL, "FBO Incomplete: %s [%d]\n", msg, index);
+   }
 }
 
 
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 8b26d2a..c306ac6 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -3523,7 +3523,9 @@ enum _verbose
 enum _debug
 {
DEBUG_SILENT = (1 << 0),
-   DEBUG_ALWAYS_FLUSH  = (1 << 1)
+   DEBUG_ALWAYS_FLUSH  = (1 << 1),
+   DEBUG_INCOMPLETE_TEXTURE = (1 << 2),
+   DEBUG_INCOMPLETE_FBO = (1 << 3)
 };
 
 
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index 155b255..365169d 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -410,16 +410,17 @@ static void
 incomplete(struct gl_texture_object *t, enum base_mipmap bm,
const char *fmt, ...)
 {
-#if 0
-   va_list args;
-   char s[100];
+   if (MESA_DEBUG_FLAGS & DEBUG_INCOMPLETE_TEXTURE) {
+  va_list args;
+  char s[100];
 
-   va_start(args, fmt);
-   vsnprintf(s, sizeof(s), fmt, args);
-   va_end(args);
+  va_start(args, fmt);
+  vsnprintf(s, sizeof(s), fmt, args);
+  va_end(args);
+
+  _mesa_debug(NULL, "Texture Obj %d incomplete because: %s\n", t->Name, s);
+   }
 
-   printf("Texture Obj %d incomplete because: %s\n", t->Name, s);
-#endif
if (bm == BASE)
   t->_BaseComplete = GL_FALSE;
t->_MipmapComplete = GL_FALSE;

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


Mesa (master): mesa: implement DEBUG_ALWAYS_FLUSH debug option

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 014306578be1f7aeb883e7b22eb255eda82fa011
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=014306578be1f7aeb883e7b22eb255eda82fa011

Author: Brian Paul 
Date:   Wed May  9 12:08:47 2012 -0600

mesa: implement DEBUG_ALWAYS_FLUSH debug option

This flag has been around for a while but it wasn't actually used anywhere.

Now, setting this flag causes a glFlush() to be issued after each
drawing call (including glBegin/End, glDrawElements, glDrawArrays,
glDrawPixels, glCopyPixels and glBitmap).

---

 src/mesa/main/drawpix.c   |   12 
 src/mesa/vbo/vbo_exec_api.c   |4 
 src/mesa/vbo/vbo_exec_array.c |   16 
 3 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c
index c2f7db2..def55dd 100644
--- a/src/mesa/main/drawpix.c
+++ b/src/mesa/main/drawpix.c
@@ -180,6 +180,10 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
 
 end:
_mesa_set_vp_override(ctx, GL_FALSE);
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+  _mesa_flush(ctx);
+   }
 }
 
 
@@ -280,6 +284,10 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, 
GLsizei height,
 
 end:
_mesa_set_vp_override(ctx, GL_FALSE);
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+  _mesa_flush(ctx);
+   }
 }
 
 
@@ -354,6 +362,10 @@ _mesa_Bitmap( GLsizei width, GLsizei height,
/* update raster position */
ctx->Current.RasterPos[0] += xmove;
ctx->Current.RasterPos[1] += ymove;
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+  _mesa_flush(ctx);
+   }
 }
 
 
diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c
index 0fd8d59..28d2c4d 100644
--- a/src/mesa/vbo/vbo_exec_api.c
+++ b/src/mesa/vbo/vbo_exec_api.c
@@ -862,6 +862,10 @@ static void GLAPIENTRY vbo_exec_End( void )
}
else 
   _mesa_error( ctx, GL_INVALID_OPERATION, "glEnd" );
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+  _mesa_flush(ctx);
+   }
 }
 
 
diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
index cc94e76..9303ad7 100644
--- a/src/mesa/vbo/vbo_exec_array.c
+++ b/src/mesa/vbo/vbo_exec_array.c
@@ -614,6 +614,10 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint 
start,
   GL_TRUE, start, start + count - 1,
   NULL);
}
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+  _mesa_flush(ctx);
+   }
 }
 
 
@@ -803,6 +807,10 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, 
GLenum mode,
check_buffers_are_unmapped(exec->array.inputs);
vbo->draw_prims( ctx, prim, 1, &ib,
index_bounds_valid, start, end, NULL );
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+  _mesa_flush(ctx);
+   }
 }
 
 
@@ -1127,6 +1135,10 @@ vbo_validated_multidrawelements(struct gl_context *ctx, 
GLenum mode,
}
 
free(prim);
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+  _mesa_flush(ctx);
+   }
 }
 
 
@@ -1201,6 +1213,10 @@ vbo_draw_transform_feedback(struct gl_context *ctx, 
GLenum mode,
check_buffers_are_unmapped(exec->array.inputs);
vbo->draw_prims(ctx, prim, 1, NULL,
GL_TRUE, 0, 0, obj);
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+  _mesa_flush(ctx);
+   }
 }
 
 /**

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


Mesa (master): mesa: define DEBUG_SILENT flag, use in output_if_debug()

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: da35c2b38c1419690b6647fbc2f930cb04c6877f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=da35c2b38c1419690b6647fbc2f930cb04c6877f

Author: Brian Paul 
Date:   Wed May  9 13:25:00 2012 -0600

mesa: define DEBUG_SILENT flag, use in output_if_debug()

---

 src/mesa/main/debug.c  |1 +
 src/mesa/main/errors.c |   21 ++---
 src/mesa/main/mtypes.h |3 ++-
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c
index 5f37f37..0e73fcb 100644
--- a/src/mesa/main/debug.c
+++ b/src/mesa/main/debug.c
@@ -203,6 +203,7 @@ set_debug_flags(const char *str)
   GLbitfield flag;
};
static const struct option opts[] = {
+  { "silent", DEBUG_SILENT }, /* turn off debug messages */
   { "flush", DEBUG_ALWAYS_FLUSH } /* flush after each drawing command */
};
GLuint i;
diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c
index 4a187b7..69dbb65 100644
--- a/src/mesa/main/errors.c
+++ b/src/mesa/main/errors.c
@@ -802,21 +802,20 @@ output_if_debug(const char *prefixString, const char 
*outputString,
 {
static int debug = -1;
 
-   /* Check the MESA_DEBUG environment variable if it hasn't
-* been checked yet.  We only have to check it once...
+   /* Init the local 'debug' var once.
+* Note: the _mesa_init_debug() function should have been called
+* by now so MESA_DEBUG_FLAGS will be initialized.
 */
if (debug == -1) {
-  char *env = _mesa_getenv("MESA_DEBUG");
-
-  /* In a debug build, we print warning messages *unless*
-   * MESA_DEBUG is 0.  In a non-debug build, we don't
-   * print warning messages *unless* MESA_DEBUG is
-   * set *to any value*.
-   */
 #ifdef DEBUG
-  debug = (env != NULL && atoi(env) == 0) ? 0 : 1;
+  /* in debug builds, print messages unless MESA_DEBUG="silent" */
+  if (MESA_DEBUG_FLAGS & DEBUG_SILENT)
+ debug = 0;
+  else
+ debug = 1;
 #else
-  debug = (env != NULL) ? 1 : 0;
+  /* in release builds, be silent unless MESA_DEBUG is set */
+  debug = _mesa_getenv("MESA_DEBUG") != NULL;
 #endif
}
 
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 06ca0d5..8b26d2a 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -3522,7 +3522,8 @@ enum _verbose
 /** The MESA_DEBUG_FLAGS var is a bitmask of these flags */
 enum _debug
 {
-   DEBUG_ALWAYS_FLUSH  = 0x1
+   DEBUG_SILENT = (1 << 0),
+   DEBUG_ALWAYS_FLUSH  = (1 << 1)
 };
 
 

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


Mesa (master): mesa: clean-up the debug/verbose flag setup code

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 88cd47187c35fab89f5868d90a87a2d88232f871
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=88cd47187c35fab89f5868d90a87a2d88232f871

Author: Brian Paul 
Date:   Wed May  9 12:07:28 2012 -0600

mesa: clean-up the debug/verbose flag setup code

Split the verbose and debug flag setup code into separate functions.

---

 src/mesa/main/debug.c |   72 +++-
 1 files changed, 46 insertions(+), 26 deletions(-)

diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c
index f7b1f71..5f37f37 100644
--- a/src/mesa/main/debug.c
+++ b/src/mesa/main/debug.c
@@ -149,21 +149,19 @@ void _mesa_print_info( void )
 
 
 /**
- * Set the debugging flags.
- *
- * \param debug debug string
- *
- * If compiled with debugging support then search for keywords in \p debug and
- * enables the verbose debug output of the respective feature.
+ * Set verbose logging flags.  When these flags are set, GL API calls
+ * in the various categories will be printed to stderr.
+ * \param str  a comma-separated list of keywords
  */
-static void add_debug_flags( const char *debug )
+static void
+set_verbose_flags(const char *str)
 {
 #ifdef DEBUG
-   struct debug_option {
+   struct option {
   const char *name;
   GLbitfield flag;
};
-   static const struct debug_option debug_opt[] = {
+   static const struct option opts[] = {
   { "varray",VERBOSE_VARRAY },
   { "tex",   VERBOSE_TEXTURE },
   { "mat",   VERBOSE_MATERIAL },
@@ -179,34 +177,56 @@ static void add_debug_flags( const char *debug )
};
GLuint i;
 
+   if (!str)
+  return;
+
MESA_VERBOSE = 0x0;
-   for (i = 0; i < Elements(debug_opt); i++) {
-  if (strstr(debug, debug_opt[i].name) || strcmp(debug, "all") == 0)
- MESA_VERBOSE |= debug_opt[i].flag;
+   for (i = 0; i < Elements(opts); i++) {
+  if (strstr(str, opts[i].name) || strcmp(str, "all") == 0)
+ MESA_VERBOSE |= opts[i].flag;
}
+#endif
+}
 
-   /* Debug flag:
-*/
-   if (strstr(debug, "flush"))
-  MESA_DEBUG_FLAGS |= DEBUG_ALWAYS_FLUSH;
 
-#else
-   (void) debug;
+/**
+ * Set debugging flags.  When these flags are set, Mesa will do additional
+ * debug checks or actions.
+ * \param str  a comma-separated list of keywords
+ */
+static void
+set_debug_flags(const char *str)
+{
+#ifdef DEBUG
+   struct option {
+  const char *name;
+  GLbitfield flag;
+   };
+   static const struct option opts[] = {
+  { "flush", DEBUG_ALWAYS_FLUSH } /* flush after each drawing command */
+   };
+   GLuint i;
+
+   if (!str)
+  return;
+
+   MESA_DEBUG_FLAGS = 0x0;
+   for (i = 0; i < Elements(opts); i++) {
+  if (strstr(str, opts[i].name))
+ MESA_DEBUG_FLAGS |= opts[i].flag;
+   }
 #endif
 }
 
 
+/**
+ * Initialize debugging variables from env vars.
+ */
 void 
 _mesa_init_debug( struct gl_context *ctx )
 {
-   char *c;
-   c = _mesa_getenv("MESA_DEBUG");
-   if (c)
-  add_debug_flags(c);
-
-   c = _mesa_getenv("MESA_VERBOSE");
-   if (c)
-  add_debug_flags(c);
+   set_debug_flags(_mesa_getenv("MESA_DEBUG"));
+   set_verbose_flags(_mesa_getenv("MESA_VERBOSE"));
 }
 
 

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


Mesa (master): mesa: do FLUSH_VERTICES() in _mesa_flush/finish()

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 443195bdf897aa2146363134bc9ece167d121c97
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=443195bdf897aa2146363134bc9ece167d121c97

Author: Brian Paul 
Date:   Wed May  9 11:56:10 2012 -0600

mesa: do FLUSH_VERTICES() in _mesa_flush/finish()

This was being done in the _mesa_Flush/Finish() calls but if there
was an internal call to _mesa_flush/finish() the FLUSH_VERTICES()
wouldn't happen.  Looks like only the intel and radeon drivers made
such calls in MakeCurrent().

---

 src/mesa/main/context.c |6 --
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 7e2ac98..bafd250 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -1635,6 +1635,7 @@ _mesa_record_error(struct gl_context *ctx, GLenum error)
 void
 _mesa_finish(struct gl_context *ctx)
 {
+   FLUSH_VERTICES( ctx, 0 );
FLUSH_CURRENT( ctx, 0 );
if (ctx->Driver.Finish) {
   ctx->Driver.Finish(ctx);
@@ -1648,6 +1649,7 @@ _mesa_finish(struct gl_context *ctx)
 void
 _mesa_flush(struct gl_context *ctx)
 {
+   FLUSH_VERTICES( ctx, 0 );
FLUSH_CURRENT( ctx, 0 );
if (ctx->Driver.Flush) {
   ctx->Driver.Flush(ctx);
@@ -1666,7 +1668,7 @@ void GLAPIENTRY
 _mesa_Finish(void)
 {
GET_CURRENT_CONTEXT(ctx);
-   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+   ASSERT_OUTSIDE_BEGIN_END(ctx);
_mesa_finish(ctx);
 }
 
@@ -1681,7 +1683,7 @@ void GLAPIENTRY
 _mesa_Flush(void)
 {
GET_CURRENT_CONTEXT(ctx);
-   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+   ASSERT_OUTSIDE_BEGIN_END(ctx);
_mesa_flush(ctx);
 }
 

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


Mesa (master): mesa: fix glMaterial / dlist bug

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: 1bc16bf98a1b5a4cca0c0ae2a80ba7982c6e4651
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1bc16bf98a1b5a4cca0c0ae2a80ba7982c6e4651

Author: Brian Paul 
Date:   Tue May  8 11:41:03 2012 -0600

mesa: fix glMaterial / dlist bug

When glColorMaterial() is used to latch glColor commands to a material
attribute, glMaterial calls to change that material should become no-ops.
This failed to work properly when the glMaterial call was inside a
display list.

This removes the Material function from the vbo_attrib_tmp.h template
file.  We have separate/different implementations for the "save" and
"exec" cases now.

NOTE: This is a candidate for the 8.0 branch.

---

 src/mesa/vbo/vbo_attrib_tmp.h |   58 -
 src/mesa/vbo/vbo_exec_api.c   |   95 +
 src/mesa/vbo/vbo_save_api.c   |   57 
 3 files changed, 152 insertions(+), 58 deletions(-)

diff --git a/src/mesa/vbo/vbo_attrib_tmp.h b/src/mesa/vbo/vbo_attrib_tmp.h
index 0bf5c91..d3fc77e 100644
--- a/src/mesa/vbo/vbo_attrib_tmp.h
+++ b/src/mesa/vbo/vbo_attrib_tmp.h
@@ -792,63 +792,6 @@ TAG(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
 }
 
 
-
-#define MAT( ATTR, N, face, params )   \
-do {   \
-   if (face != GL_BACK)\
-  MAT_ATTR( ATTR, N, params ); /* front */ \
-   if (face != GL_FRONT)   \
-  MAT_ATTR( ATTR + 1, N, params ); /* back */  \
-} while (0)
-
-
-/* Colormaterial conflicts are dealt with later.
- */
-static void GLAPIENTRY
-TAG(Materialfv)(GLenum face, GLenum pname,
- const GLfloat * params)
-{
-   GET_CURRENT_CONTEXT(ctx);
-
-   if (face != GL_FRONT && face != GL_BACK && face != GL_FRONT_AND_BACK) {
-  _mesa_error(ctx, GL_INVALID_ENUM, "glMaterial(invalid face)");
-  return;
-   }
-
-   switch (pname) {
-   case GL_EMISSION:
-  MAT(VBO_ATTRIB_MAT_FRONT_EMISSION, 4, face, params);
-  break;
-   case GL_AMBIENT:
-  MAT(VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params);
-  break;
-   case GL_DIFFUSE:
-  MAT(VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params);
-  break;
-   case GL_SPECULAR:
-  MAT(VBO_ATTRIB_MAT_FRONT_SPECULAR, 4, face, params);
-  break;
-   case GL_SHININESS:
-  if (*params < 0 || *params > ctx->Const.MaxShininess)
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glMaterial(invalid shininess: %f out range [0, %f])",
-*params, ctx->Const.MaxShininess);
-  else
- MAT(VBO_ATTRIB_MAT_FRONT_SHININESS, 1, face, params);
-  break;
-   case GL_COLOR_INDEXES:
-  MAT(VBO_ATTRIB_MAT_FRONT_INDEXES, 3, face, params);
-  break;
-   case GL_AMBIENT_AND_DIFFUSE:
-  MAT(VBO_ATTRIB_MAT_FRONT_AMBIENT, 4, face, params);
-  MAT(VBO_ATTRIB_MAT_FRONT_DIFFUSE, 4, face, params);
-  break;
-   default:
-  ERROR(GL_INVALID_ENUM);
-  return;
-   }
-}
-
 static void GLAPIENTRY
 TAG(VertexP2ui)(GLenum type, GLuint value)
 {
@@ -1145,4 +1088,3 @@ TAG(VertexAttribP4uiv)(GLuint index, GLenum type, 
GLboolean normalized,
 #undef ATTR_UI
 
 #undef MAT
-#undef MAT_ATTR
diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c
index b87da18..0fd8d59 100644
--- a/src/mesa/vbo/vbo_exec_api.c
+++ b/src/mesa/vbo/vbo_exec_api.c
@@ -433,6 +433,101 @@ do {  
\
 #include "vbo_attrib_tmp.h"
 
 
+
+/**
+ * Execute a glMaterial call.  Note that if GL_COLOR_MATERIAL is enabled,
+ * this may be a (partial) no-op.
+ */
+static void GLAPIENTRY
+vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params)
+{
+   GLbitfield updateMats;
+   GET_CURRENT_CONTEXT(ctx);
+
+   /* This function should be a no-op when it tries to update material
+* attributes which are currently tracking glColor via glColorMaterial.
+* The updateMats var will be a mask of the MAT_BIT_FRONT/BACK_x bits
+* indicating which material attributes can actually be updated below.
+*/
+   if (ctx->Light.ColorMaterialEnabled) {
+  updateMats = ~ctx->Light.ColorMaterialBitmask;
+   }
+   else {
+  /* GL_COLOR_MATERIAL is disabled so don't skip any material updates */
+  updateMats = ALL_MATERIAL_BITS;
+   }
+
+   if (face == GL_FRONT) {
+  updateMats &= FRONT_MATERIAL_BITS;
+   }
+   else if (face == GL_BACK) {
+  updateMats &= BACK_MATERIAL_BITS;
+   }
+   else if (face != GL_FRONT_AND_BACK) {
+  _mesa_error(ctx, GL_INVALID_ENUM, "glMaterial(invalid face)");
+  return;
+   }
+
+   switch (pname) {
+   case GL_EMISSION:
+  if (updateMats & MAT_BIT_FRONT_EMISSION)
+ MAT_ATTR(VBO_ATTRIB_MAT_FRONT_EMISSION, 4, params);
+  if (updateMats & MAT_BIT_BACK_EMISSION)
+ MAT_ATTR(VBO_ATTRIB_MAT_BACK_EMISSION, 4, params);
+  break;
+   case GL_AMBIENT:
+  if (updateMa

Mesa (master): mesa: fix/add error check in _mesa_ColorMaterial()

2012-05-11 Thread Brian Paul
Module: Mesa
Branch: master
Commit: f2724905469bbcde820b9ece2e4f44a610a75a65
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f2724905469bbcde820b9ece2e4f44a610a75a65

Author: Brian Paul 
Date:   Tue May  8 10:22:20 2012 -0600

mesa: fix/add error check in _mesa_ColorMaterial()

_mesa_material_bitmask() will record a GL error and return 0 if
face or mode are illegal.  Return early in that case.

NOTE: This is a candidate for the 8.0 branch.

---

 src/mesa/main/light.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/light.c b/src/mesa/main/light.c
index 7bc22e2..38ec1b6 100644
--- a/src/mesa/main/light.c
+++ b/src/mesa/main/light.c
@@ -728,6 +728,8 @@ _mesa_ColorMaterial( GLenum face, GLenum mode )
   _mesa_lookup_enum_by_nr(mode));
 
bitmask = _mesa_material_bitmask(ctx, face, mode, legal, "glColorMaterial");
+   if (bitmask == 0)
+  return; /* error was recorded */
 
if (ctx->Light.ColorMaterialBitmask == bitmask &&
ctx->Light.ColorMaterialFace == face &&

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


Mesa (master): radeon/llvm: More comments and cleanups

2012-05-11 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: bcfc97dbf40c256ed59c2424e0c55b845f0f2569
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bcfc97dbf40c256ed59c2424e0c55b845f0f2569

Author: Tom Stellard 
Date:   Fri May 11 13:44:24 2012 -0400

radeon/llvm: More comments and cleanups

---

 src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp  |   19 +++
 src/gallium/drivers/radeon/AMDGPUISelLowering.cpp  |4 +-
 src/gallium/drivers/radeon/AMDGPUISelLowering.h|   13 -
 src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp |6 +-
 src/gallium/drivers/radeon/AMDGPUInstrInfo.h   |6 ++-
 .../drivers/radeon/AMDGPULowerInstructions.cpp |   26 +
 src/gallium/drivers/radeon/AMDGPURegisterInfo.h|   23 +
 src/gallium/drivers/radeon/AMDGPUTargetMachine.cpp |6 +-
 src/gallium/drivers/radeon/AMDGPUTargetMachine.h   |4 +-
 src/gallium/drivers/radeon/AMDGPUUtil.cpp  |   12 ++--
 src/gallium/drivers/radeon/AMDGPUUtil.h|2 +-
 src/gallium/drivers/radeon/R600CodeEmitter.cpp |   16 --
 src/gallium/drivers/radeon/R600ISelLowering.h  |4 ++
 src/gallium/drivers/radeon/R600RegisterInfo.h  |   41 +--
 src/gallium/drivers/radeon/SIAssignInterpRegs.cpp  |   22 
 src/gallium/drivers/radeon/SICodeEmitter.cpp   |   23 ++---
 src/gallium/drivers/radeon/SIISelLowering.cpp  |4 +-
 src/gallium/drivers/radeon/SIISelLowering.h|4 ++
 src/gallium/drivers/radeon/SIInstrInfo.h   |   54 +++-
 src/gallium/drivers/radeon/SIPropagateImmReads.cpp |   24 +
 src/gallium/drivers/radeon/SIRegisterInfo.cpp  |   10 
 src/gallium/drivers/radeon/SIRegisterInfo.h|   30 ++-
 22 files changed, 190 insertions(+), 163 deletions(-)

diff --git a/src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp 
b/src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp
index 8e82b84..1a3cf01 100644
--- a/src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp
+++ b/src/gallium/drivers/radeon/AMDGPUConvertToISA.cpp
@@ -19,21 +19,20 @@
 using namespace llvm;
 
 namespace {
-  class AMDGPUConvertToISAPass : public MachineFunctionPass {
 
-  private:
-static char ID;
-TargetMachine &TM;
+class AMDGPUConvertToISAPass : public MachineFunctionPass {
 
-void lowerFLT(MachineInstr &MI);
+private:
+  static char ID;
+  TargetMachine &TM;
 
-  public:
-AMDGPUConvertToISAPass(TargetMachine &tm) :
-  MachineFunctionPass(ID), TM(tm) { }
+public:
+  AMDGPUConvertToISAPass(TargetMachine &tm) :
+MachineFunctionPass(ID), TM(tm) { }
 
-virtual bool runOnMachineFunction(MachineFunction &MF);
+  virtual bool runOnMachineFunction(MachineFunction &MF);
+};
 
-  };
 } // End anonymous namespace
 
 char AMDGPUConvertToISAPass::ID = 0;
diff --git a/src/gallium/drivers/radeon/AMDGPUISelLowering.cpp 
b/src/gallium/drivers/radeon/AMDGPUISelLowering.cpp
index 2bdc8a7..8d4207f 100644
--- a/src/gallium/drivers/radeon/AMDGPUISelLowering.cpp
+++ b/src/gallium/drivers/radeon/AMDGPUISelLowering.cpp
@@ -24,8 +24,8 @@ AMDGPUTargetLowering::AMDGPUTargetLowering(TargetMachine &TM) 
:
 
 void AMDGPUTargetLowering::addLiveIn(MachineInstr * MI,
 MachineFunction * MF, MachineRegisterInfo & MRI,
-const struct TargetInstrInfo * TII, unsigned reg) const
+const TargetInstrInfo * TII, unsigned reg) const
 {
-  AMDGPU::utilAddLiveIn(MF, MRI, TII, reg, MI->getOperand(0).getReg()); 
+  AMDGPU::utilAddLiveIn(MF, MRI, TII, reg, MI->getOperand(0).getReg());
 }
 
diff --git a/src/gallium/drivers/radeon/AMDGPUISelLowering.h 
b/src/gallium/drivers/radeon/AMDGPUISelLowering.h
index 1b3f710..16adf1b 100644
--- a/src/gallium/drivers/radeon/AMDGPUISelLowering.h
+++ b/src/gallium/drivers/radeon/AMDGPUISelLowering.h
@@ -22,8 +22,15 @@ namespace llvm {
 class AMDGPUTargetLowering : public AMDILTargetLowering
 {
 protected:
+
+  /// addLiveIn - This functions adds reg to the live in list of the entry 
block
+  /// and emits a copy from reg to MI.getOperand(0).
+  ///
+  //  Some registers are loaded with values before the program
+  /// begins to execute.  The loading of these values is modeled with pseudo
+  /// instructions which are lowered using this function. 
   void addLiveIn(MachineInstr * MI, MachineFunction * MF,
- MachineRegisterInfo & MRI, const struct TargetInstrInfo * TII,
+ MachineRegisterInfo & MRI, const TargetInstrInfo * TII,
 unsigned reg) const;
 
 public:
@@ -31,6 +38,6 @@ public:
 
 };
 
-} /* End namespace llvm */
+} // End namespace llvm
 
-#endif /* AMDGPUISELLOWERING_H */
+#endif // AMDGPUISELLOWERING_H
diff --git a/src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp 
b/src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp
index ecd8ac9..2d683c7 100644
--- a/src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp
+++ b/src/gallium/drivers/radeon/AMDGPUInstrInfo.cpp
@@ -76,12 +76,12 @@ MachineInstr * AMDGPUInstrInfo::convertToISA(MachineInstr & 
MI, MachineFunction
   const AM

Mesa (master): gallivm: Fix copy'n'paste typo bug translating CEIL opcode.

2012-05-11 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 23c0d469e55b3cb79ad4b2fd0d961562a26234fd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=23c0d469e55b3cb79ad4b2fd0d961562a26234fd

Author: José Fonseca 
Date:   Fri May 11 16:43:28 2012 +0100

gallivm: Fix copy'n'paste typo bug translating CEIL opcode.

Trivial.

---

 src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c 
b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c
index d278444..e0a5180 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_action.c
@@ -892,8 +892,8 @@ ceil_emit_cpu(
struct lp_build_tgsi_context * bld_base,
struct lp_build_emit_data * emit_data)
 {
-   emit_data->output[emit_data->chan] = lp_build_trunc(&bld_base->base,
- emit_data->args[0]);
+   emit_data->output[emit_data->chan] = lp_build_ceil(&bld_base->base,
+  emit_data->args[0]);
 }
 
 /* TGSI_OPCODE_CMP (CPU Only) */

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


Mesa (master): r600g: assume DISCARD_WHOLE_RESOURCE is always used with WRITE

2012-05-11 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: d3bab0c7bee7439fa834fd86a835119fc5fa3307
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d3bab0c7bee7439fa834fd86a835119fc5fa3307

Author: Marek Olšák 
Date:   Fri May 11 17:34:26 2012 +0200

r600g: assume DISCARD_WHOLE_RESOURCE is always used with WRITE

---

 src/gallium/drivers/r600/r600_buffer.c |   11 +--
 1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_buffer.c 
b/src/gallium/drivers/r600/r600_buffer.c
index 0ca6ff1..857d860 100644
--- a/src/gallium/drivers/r600/r600_buffer.c
+++ b/src/gallium/drivers/r600/r600_buffer.c
@@ -86,14 +86,13 @@ static void *r600_buffer_transfer_map(struct pipe_context 
*pipe,
struct r600_context *rctx = (struct r600_context*)pipe;
uint8_t *data;
 
-   if (transfer->usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE) {
-   /* When mapping for read, we only need to check if the GPU is 
writing to it. */
-   enum radeon_bo_usage rusage = transfer->usage & 
PIPE_TRANSFER_WRITE ?
-   RADEON_USAGE_READWRITE : RADEON_USAGE_WRITE;
+   if (transfer->usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE &&
+   !(transfer->usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
+   assert(transfer->usage & PIPE_TRANSFER_WRITE);
 
/* Check if mapping this buffer would cause waiting for the 
GPU. */
-   if (rctx->ws->cs_is_buffer_referenced(rctx->cs, 
rbuffer->cs_buf, rusage) ||
-   rctx->ws->buffer_is_busy(rbuffer->buf, rusage)) {
+   if (rctx->ws->cs_is_buffer_referenced(rctx->cs, 
rbuffer->cs_buf, RADEON_USAGE_READWRITE) ||
+   rctx->ws->buffer_is_busy(rbuffer->buf, 
RADEON_USAGE_READWRITE)) {
unsigned i;
 
/* Discard the buffer. */

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


Mesa (master): 28 new commits

2012-05-11 Thread Marek Olšák
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7435c043988dd83b430f3d3a7ca5a5a1b2f30d61
Merge: bb4c5d72d7c7cb1d9e7016e2c07c36875f30011a 
4d11a6a0c798301863d5b202703dcca37dc24e7c
Author: Marek Olšák 
Date:   Fri May 11 16:42:20 2012 +0200

Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/mesa

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bb4c5d72d7c7cb1d9e7016e2c07c36875f30011a
Merge: 96956dc5076fc03b9290368ca90e3f3b870ee613 
8dd3e341b337ca2d22bcc0e7548a78a6c36ca77d
Author: Marek Olšák 
Date:   Fri May 11 16:38:13 2012 +0200

Merge branch 'gallium-userbuf'

Conflicts:
src/gallium/docs/source/screen.rst
src/gallium/drivers/nv50/nv50_state.c
src/gallium/include/pipe/p_defines.h
src/mesa/state_tracker/st_draw.c

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8dd3e341b337ca2d22bcc0e7548a78a6c36ca77d
Author: Brian Paul 
Date:   Mon Apr 30 14:44:26 2012 -0600

svga: check for and skip null vertex buffer pointers

Fixes regressions with google earth and other things.

Reviewed-by: José Fonseca 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b5752e16e82d4375171d157cb116a81ea025ea7b
Author: Brian Paul 
Date:   Mon Apr 30 14:37:12 2012 -0600

softpipe: cast away const to silence warning

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e588dff57a7a1f8c4d4f243cdf0580121fa9843
Author: Brian Paul 
Date:   Mon Apr 30 14:36:50 2012 -0600

svga: cast away const to silence warning

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=96863baa42564ce2daa5f4651f1c52f1d281d9a5
Author: Marek Olšák 
Date:   Tue May 1 00:11:25 2012 +0200

u_vbuf: set user buffer pointer for drivers which support user buffers

It's not common to end up in u_vbuf and at the same time support user 
buffers
in a driver, but such a combination should work.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c5ff5a41fa63634e2cc8037a0a601c60d233537
Author: Marek Olšák 
Date:   Mon Apr 30 20:56:25 2012 +0200

st/mesa: unmap upload buffer after uploading indices and constants

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3ed72dd31d45b66e54724dcd20b6875313c3
Author: Marek Olšák 
Date:   Sun Apr 29 21:34:43 2012 +0200

st/xorg: don't use user_buffer_create

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=889c9a566c1b0e1d3ef269c53900e5cfbd6d7b45
Author: Marek Olšák 
Date:   Sun Apr 29 21:34:18 2012 +0200

st/xa: don't use user_buffer_create

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fa20733a622770eaaa941f64d570d7b63d8f37b6
Author: Marek Olšák 
Date:   Sun Apr 29 21:33:37 2012 +0200

st/vega: don't use user_buffer_create

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0279d15c990d831c7cc4e76cbe7caeba1347b689
Author: Marek Olšák 
Date:   Sun Apr 29 21:32:52 2012 +0200

st/vega: use cso_draw_arrays

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=46fe17930ec71be3489fbb844de2bf16d877437e
Author: Marek Olšák 
Date:   Sun Apr 29 21:24:39 2012 +0200

cso: cso_context should install u_vbuf by itself and not st/mesa

so that it's installed in the other state trackers too

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f656607c35c80250f0217b6c03b9312987450f13
Author: Marek Olšák 
Date:   Sun Apr 29 20:43:12 2012 +0200

st/xorg: fix compilation - wrong libkms include file

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b5f4b173b2703b7f72dcf33ad4cb00347712733
Author: Marek Olšák 
Date:   Thu Apr 26 13:45:29 2012 +0200

gallium/util: stop using user buffers in util_draw_texquad

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3ac0683d632347347c2fdbd546da0c7c2effb08a
Author: Marek Olšák 
Date:   Thu Apr 26 13:41:33 2012 +0200

gallium: remove pipe_resource::user_ptr

It's unused now.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=65d451d9fa1192c386301ca0b84b6c5cd369f92d
Author: Marek Olšák 
Date:   Thu Apr 26 13:39:19 2012 +0200

radeonsi: don't create temporary user buffer for r600_upload_const_buffer

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b7d48cbad86eaac21fce3793da41b46db8be3b4
Author: Marek Olšák 
Date:   Tue Apr 24 22:53:05 2012 +0200

gallium: add void *user_buffer to pipe_constant_buffer

This reduces CPU overhead when updating constants.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=01bf5569c44389c1127bbb9e873c8a234ac92ff7
Author: Marek Olšák 
Date:   Thu Apr 26 11:19:35 2012 +0200

st/mesa: reorder code in draw_vbo

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=944b97990bbdf61b2be2e92c3641d3240e12fe58
Author: Marek Olšák 
Date:   Thu Apr 26 11:14:51 2012 +0200

st/mesa: remove more unnecessary code in draw_vbo

The variables set here are not used anywhere.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bf469f4edc60bd1c5fd770cb231b8d5ab801427f
Autho

Mesa (master): radeon/llvm: Fix Evergreen/Cayman tablegen predicates

2012-05-11 Thread Tom Stellard
Module: Mesa
Branch: master
Commit: 4d11a6a0c798301863d5b202703dcca37dc24e7c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4d11a6a0c798301863d5b202703dcca37dc24e7c

Author: Tom Stellard 
Date:   Fri May 11 09:31:00 2012 -0400

radeon/llvm: Fix Evergreen/Cayman tablegen predicates

Some Evergreen/Cayman instructions were being enabled for SI.

---

 src/gallium/drivers/radeon/R600Instructions.td |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/radeon/R600Instructions.td 
b/src/gallium/drivers/radeon/R600Instructions.td
index a18240f..9b59171 100644
--- a/src/gallium/drivers/radeon/R600Instructions.td
+++ b/src/gallium/drivers/radeon/R600Instructions.td
@@ -227,7 +227,9 @@ def isEG : Predicate<"Subtarget.device()"
 def isCayman : Predicate<"Subtarget.device()"
 "->getDeviceFlag() == OCL_DEVICE_CAYMAN">;
 def isEGorCayman : Predicate<"Subtarget.device()"
-"->getGeneration() >= AMDILDeviceInfo::HD5XXX">;
+"->getGeneration() == AMDILDeviceInfo::HD5XXX"
+   "|| Subtarget.device()->getGeneration() =="
+   "AMDILDeviceInfo::HD6XXX">;
 
 def isR600toCayman : Predicate<
  "Subtarget.device()->getGeneration() <= 
AMDILDeviceInfo::HD6XXX">;

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


Mesa (master): gallium/tgsi: Redefine the TGSI_TEXTURE_UNKNOWN texture target.

2012-05-11 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 223831ca146bc3aca615542794a7c3800ccbcc6f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=223831ca146bc3aca615542794a7c3800ccbcc6f

Author: José Fonseca 
Date:   Fri May 11 13:36:46 2012 +0100

gallium/tgsi: Redefine the TGSI_TEXTURE_UNKNOWN texture target.

Some code relies on the existing of an invalid texture target. It seems
safer to bring it back than to deal with unintended consequences.

This partially reverts commit a4ebb04214bab1cd9bd41967232ec89441e31744.

Reviewed-by: Brian Paul 

---

 src/gallium/auxiliary/tgsi/tgsi_build.c|2 +-
 src/gallium/auxiliary/tgsi/tgsi_strings.c  |3 ++-
 src/gallium/auxiliary/util/u_blitter.c |2 +-
 .../drivers/nv50/codegen/nv50_ir_from_tgsi.cpp |2 ++
 src/gallium/include/pipe/p_shader_tokens.h |3 ++-
 5 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.c 
b/src/gallium/auxiliary/tgsi/tgsi_build.c
index 1d3c4bc..869faa1 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_build.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_build.c
@@ -707,7 +707,7 @@ tgsi_default_instruction_texture( void )
 {
struct tgsi_instruction_texture instruction_texture;
 
-   instruction_texture.Texture = TGSI_BUFFER;
+   instruction_texture.Texture = TGSI_TEXTURE_UNKNOWN;
instruction_texture.NumOffsets = 0;
instruction_texture.Padding = 0;
 
diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c 
b/src/gallium/auxiliary/tgsi/tgsi_strings.c
index d7b74ba..b5fd1fc 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_strings.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c
@@ -96,7 +96,8 @@ const char *tgsi_texture_names[TGSI_TEXTURE_COUNT] =
"2DARRAY",
"SHADOW1DARRAY",
"SHADOW2DARRAY",
-   "SHADOWCUBE"
+   "SHADOWCUBE",
+   "UNKNOWN"
 };
 
 const char *tgsi_property_names[TGSI_PROPERTY_COUNT] =
diff --git a/src/gallium/auxiliary/util/u_blitter.c 
b/src/gallium/auxiliary/util/u_blitter.c
index 28e7383..d0b9187 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -674,7 +674,7 @@ pipe_tex_to_tgsi_tex(enum pipe_texture_target 
pipe_tex_target)
   return TGSI_TEXTURE_2D_ARRAY;
default:
   assert(0 && "unexpected texture target");
-  return 0;
+  return TGSI_TEXTURE_UNKNOWN;
}
 }
 
diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp 
b/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
index 955eb92..ba08493 100644
--- a/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
+++ b/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
@@ -349,6 +349,8 @@ static nv50_ir::TexTarget translateTexture(uint tex)
NV50_IR_TEX_TARG_CASE(SHADOWRECT, RECT_SHADOW);
case TGSI_BUFFER:
   return nv50_ir::TEX_TARGET_BUFFER;
+
+   case TGSI_TEXTURE_UNKNOWN:
default:
   assert(!"invalid texture target");
   return nv50_ir::TEX_TARGET_2D;
diff --git a/src/gallium/include/pipe/p_shader_tokens.h 
b/src/gallium/include/pipe/p_shader_tokens.h
index 5325e43..615a89a 100644
--- a/src/gallium/include/pipe/p_shader_tokens.h
+++ b/src/gallium/include/pipe/p_shader_tokens.h
@@ -504,7 +504,8 @@ struct tgsi_instruction_label
 #define TGSI_TEXTURE_SHADOW1D_ARRAY 11
 #define TGSI_TEXTURE_SHADOW2D_ARRAY 12
 #define TGSI_TEXTURE_SHADOWCUBE 13
-#define TGSI_TEXTURE_COUNT  14
+#define TGSI_TEXTURE_UNKNOWN14
+#define TGSI_TEXTURE_COUNT  15
 
 struct tgsi_instruction_texture
 {

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


Mesa (master): gallium/tgsi: s/TGSI_BUFFER/TGSI_TEXTURE_BUFFER/

2012-05-11 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 96956dc5076fc03b9290368ca90e3f3b870ee613
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=96956dc5076fc03b9290368ca90e3f3b870ee613

Author: José Fonseca 
Date:   Fri May 11 13:41:56 2012 +0100

gallium/tgsi: s/TGSI_BUFFER/TGSI_TEXTURE_BUFFER/

For consistency.

Reviewed-by: Brian Paul 

---

 src/gallium/auxiliary/tgsi/tgsi_build.c|4 ++--
 .../drivers/nv50/codegen/nv50_ir_from_tgsi.cpp |3 +--
 src/gallium/include/pipe/p_shader_tokens.h |2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.c 
b/src/gallium/auxiliary/tgsi/tgsi_build.c
index 869faa1..1c24b9b 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_build.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_build.c
@@ -259,7 +259,7 @@ tgsi_default_declaration_resource(void)
 {
struct tgsi_declaration_resource dr;
 
-   dr.Resource = TGSI_BUFFER;
+   dr.Resource = TGSI_TEXTURE_BUFFER;
dr.Raw = 0;
dr.Writable = 0;
 
@@ -290,7 +290,7 @@ tgsi_default_declaration_sampler_view(void)
 {
struct tgsi_declaration_sampler_view dsv;
 
-   dsv.Resource = TGSI_BUFFER;
+   dsv.Resource = TGSI_TEXTURE_BUFFER;
dsv.ReturnTypeX = PIPE_TYPE_UNORM;
dsv.ReturnTypeY = PIPE_TYPE_UNORM;
dsv.ReturnTypeZ = PIPE_TYPE_UNORM;
diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp 
b/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
index ba08493..16f191d 100644
--- a/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
+++ b/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
@@ -347,8 +347,7 @@ static nv50_ir::TexTarget translateTexture(uint tex)
NV50_IR_TEX_TARG_CASE(SHADOW2D_ARRAY, 2D_ARRAY_SHADOW);
NV50_IR_TEX_TARG_CASE(SHADOWCUBE, CUBE_SHADOW);
NV50_IR_TEX_TARG_CASE(SHADOWRECT, RECT_SHADOW);
-   case TGSI_BUFFER:
-  return nv50_ir::TEX_TARGET_BUFFER;
+   NV50_IR_TEX_TARG_CASE(BUFFER, BUFFER);
 
case TGSI_TEXTURE_UNKNOWN:
default:
diff --git a/src/gallium/include/pipe/p_shader_tokens.h 
b/src/gallium/include/pipe/p_shader_tokens.h
index 615a89a..6b58293 100644
--- a/src/gallium/include/pipe/p_shader_tokens.h
+++ b/src/gallium/include/pipe/p_shader_tokens.h
@@ -490,7 +490,7 @@ struct tgsi_instruction_label
unsigned Padding  : 8;
 };
 
-#define TGSI_BUFFER 0
+#define TGSI_TEXTURE_BUFFER 0
 #define TGSI_TEXTURE_1D 1
 #define TGSI_TEXTURE_2D 2
 #define TGSI_TEXTURE_3D 3

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


Mesa (master): llvmpipe: Fix triangle bounding box calculation to be correctly inclusive or exclusive

2012-05-11 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 11aa82cc0bda6bd9162f76553a3f68e28978edae
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=11aa82cc0bda6bd9162f76553a3f68e28978edae

Author: James Benton 
Date:   Thu May 10 17:15:28 2012 +0100

llvmpipe: Fix triangle bounding box calculation to be correctly inclusive or 
exclusive

Tested with custom rasterisation test tool added to piglit suite, reduced errors

Signed-off-by: José Fonseca 

---

 src/gallium/drivers/llvmpipe/lp_setup_tri.c |   14 ++
 1 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c 
b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
index b50c354..26d35de 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
@@ -271,15 +271,13 @@ do_triangle_ccw(struct lp_setup_context *setup,
*/
   int adj = (setup->pixel_offset != 0) ? 1 : 0;
 
-  bbox.x0 = (MIN3(x[0], x[1], x[2]) + (FIXED_ONE-1)) >> FIXED_ORDER;
-  bbox.x1 = (MAX3(x[0], x[1], x[2]) + (FIXED_ONE-1)) >> FIXED_ORDER;
-  bbox.y0 = (MIN3(y[0], y[1], y[2]) + (FIXED_ONE-1) + adj) >> FIXED_ORDER;
-  bbox.y1 = (MAX3(y[0], y[1], y[2]) + (FIXED_ONE-1) + adj) >> FIXED_ORDER;
+  /* Inclusive x0, exclusive x1 */
+  bbox.x0 = MIN3(x[0], x[1], x[2]) >> FIXED_ORDER;
+  bbox.x1 = (MAX3(x[0], x[1], x[2]) - 1) >> FIXED_ORDER;
 
-  /* Inclusive coordinates:
-   */
-  bbox.x1--;
-  bbox.y1--;
+  /* Inclusive / exclusive depending upon adj (bottom-left or top-right) */
+  bbox.y0 = (MIN3(y[0], y[1], y[2]) + adj) >> FIXED_ORDER;
+  bbox.y1 = (MAX3(y[0], y[1], y[2]) - 1 + adj) >> FIXED_ORDER;
}
 
if (bbox.x1 < bbox.x0 ||

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


Mesa (master): llvmpipe: Change triangle rasterization comparison from < 0 to <= 0

2012-05-11 Thread Jose Fonseca
Module: Mesa
Branch: master
Commit: 0c8a8a35e107bcb04de94154933156165fed62a8
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0c8a8a35e107bcb04de94154933156165fed62a8

Author: James Benton 
Date:   Thu May 10 17:15:27 2012 +0100

llvmpipe: Change triangle rasterization comparison from < 0 to <= 0

Tested with custom rasterisation test tool added to piglit suite, reduced errors

Signed-off-by: José Fonseca 

---

 src/gallium/drivers/llvmpipe/lp_rast_tri.c |9 -
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c 
b/src/gallium/drivers/llvmpipe/lp_rast_tri.c
index 71d0ddf..230b80a 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c
+++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c
@@ -290,6 +290,10 @@ lp_rast_triangle_3_16(struct lp_rasterizer_task *task,
c = _mm_add_epi32(c, mm_mullo_epi32(dcdy, _mm_set1_epi32(y)));
rej4 = _mm_slli_epi32(rej4, 2);
 
+   /* Adjust so we can just check the sign bit (< 0 comparison), instead of 
having to do a less efficient <= 0 comparison */
+   c = _mm_sub_epi32(c, _mm_set1_epi32(1));
+   rej4 = _mm_add_epi32(rej4, _mm_set1_epi32(1));
+
dcdx2 = _mm_add_epi32(dcdx, dcdx);
dcdx3 = _mm_add_epi32(dcdx2, dcdx);
 
@@ -383,7 +387,7 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task,
__m128i span_1;/* 0,dcdx,2dcdx,3dcdx for plane 1 */
__m128i span_2;/* 0,dcdx,2dcdx,3dcdx for plane 2 */
__m128i unused;
-   
+
transpose4_epi32(&p0, &p1, &p2, &zero,
 &c, &dcdx, &dcdy, &unused);
 
@@ -394,6 +398,9 @@ lp_rast_triangle_3_4(struct lp_rasterizer_task *task,
c = _mm_add_epi32(c, mm_mullo_epi32(dcdx, _mm_set1_epi32(x)));
c = _mm_add_epi32(c, mm_mullo_epi32(dcdy, _mm_set1_epi32(y)));
 
+   /* Adjust so we can just check the sign bit (< 0 comparison), instead of 
having to do a less efficient <= 0 comparison */
+   c = _mm_sub_epi32(c, _mm_set1_epi32(1));
+
dcdx2 = _mm_add_epi32(dcdx, dcdx);
dcdx3 = _mm_add_epi32(dcdx2, dcdx);
 

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


Mesa (master): 30 new commits

2012-05-11 Thread Francisco Jerez
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=60e7b08101295099618a3c1f879440b257265253
Author: Francisco Jerez 
Date:   Fri May 4 15:02:21 2012 +0200

clover: Implement CL_MEM_COPY_HOST_PTR.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=19eae45e012d917b682758abeaf4fb7074c00839
Author: Alexey Shvetsov 
Date:   Wed Apr 11 01:11:56 2012 +0300

gallium/targets/pipe-loader: Prepend DESTDIR to the installation directory.

Signed-off-by: Alexey Shvetsov 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=79d77b38b85aa8e906d602dd106264a8010724f1
Author: Tom Stellard 
Date:   Fri Apr 20 16:56:46 2012 +0200

clover: Assorted build fixes.

Contains the following patches squashed in:

commit 9fff1dc0875f7c9591550fa3ebbe1ba7a18483fa
Author: Tom Stellard 
Date:   Tue Mar 20 23:20:03 2012 +0100

configure.ac: Build gallium loader when OpenCL is enabled

commit 542111cb02957418c6a285cb6ef2924e49adc66e
Author: Tom Stellard 
Date:   Tue Mar 20 23:30:29 2012 +0100

configure.ac: Add sw/null to GALLIUM_WINSYS_DIRS for gallium loader

commit 876f8de46062dde76b6075be3b6628f969b16648
Author: Tom Stellard 
Date:   Thu Feb 9 11:26:05 2012 -0500

configure.ac: Require gcc > 4.6.0 for clover

commit 99049d50fa3d9a23297ae658189c19c89dca1766
Author: Tom Stellard 
Date:   Tue Mar 20 23:32:06 2012 +0100

configure.ac: Require Gallium drm loader when gallium loader is enabled

No longer silently exclude this when building OpenCL drivers
for nouveau and r600.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6db1b3396384186aab5b685fe1fd540e17b3a62
Author: Francisco Jerez 
Date:   Fri Apr 20 16:56:19 2012 +0200

clover: Import OpenCL state tracker.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=309a186987cea7f62dfd41fef66fac6d79fca96c
Author: Francisco Jerez 
Date:   Tue Mar 20 23:41:09 2012 +0100

gallium/tests/trivial: Import compute unit tests.

Add a test program that tries to exercise some of the language
features commonly used by compute programs at the Gallium API level:

   - Correctness of the values returned by the grid parameters.
   - Proper functioning of resource LOADs and STOREs.
   - Subroutine calls.
   - Argument passing to the compute parameter through the INPUT
 memory space.
   - Mapping of buffer objects to the GLOBAL memory space.
   - Proper functioning of the PRIVATE and LOCAL memory spaces.
   - Texture sampling and constant buffers.
   - Support for multiple kernels in the same program.
   - Indirect resource indexing.
   - Formatted resource loads and stores (i.e. with channel conversion
 and scaling) using several different formats.
   - Proper functioning of work-group barriers.
   - Atomicity and semantics of the atomic opcodes.

As of now all of them seem to pass on my nvA8.

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b52a0f22813c8e09747ece41173c21f22d4fc369
Author: Francisco Jerez 
Date:   Fri Apr 20 16:31:23 2012 +0200

gallium/gbm: Switch to auxiliary/pipe-loader.

Reviewed-by: Jakob Bornecrantz 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=66f7fd99fa1d8c8e3b09fadd5624db9968b67506
Author: Francisco Jerez 
Date:   Wed Apr 25 22:16:26 2012 +0200

gallium/tests/trivial: Switch to the pipe loader.

It simplifies things slightly, and besides, it makes possible to
execute the trivial tests on a hardware device instead of being
limited to software rendering.

Reviewed-by: Jakob Bornecrantz 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=317be33d73228fe8b340de8e029ff24b6e0d95b5
Author: Francisco Jerez 
Date:   Fri Nov 25 14:26:00 2011 +0100

gallium: Add "pipe-loader" target.

This target generates pipe driver modules intended to be consumed by
auxiliary/pipe-loader.  Most of it was taken from the "gbm" target --
the duplicated code will be replaced with references to this target in
a future commit.

Reviewed-by: Jakob Bornecrantz 

URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e1364530622a26f11c79694429cf84418a0b7ef7
Author: Francisco Jerez 
Date:   Wed Apr 25 22:16:00 2012 +0200

gallium: Add pipe loader for device enumeration and driver multiplexing.

The goal is to have a uniform interface to create winsys and
pipe_screen instances for any driver, exposing the device enumeration
capabilities that might be supported by the operating system (for now
there's a "drm" back-end using udev and a "sw" back-end that always
returns the same built-in devices).

The typical use case of this library will be:
>
> struct pipe_loader_device devs[n];
> struct pipe_screen *screen;
>
> pipe_loader_probe(&devs, n);
>[pick some device from the

Mesa (master): radeonsi: Properly translate vertex format swizzle.

2012-05-11 Thread Michel Dänzer
Module: Mesa
Branch: master
Commit: c2f1fbf912c0b95e09cb64db10dfbe8abff9f5d6
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2f1fbf912c0b95e09cb64db10dfbe8abff9f5d6

Author: Michel Dänzer 
Date:   Fri May 11 11:52:16 2012 +0200

radeonsi: Properly translate vertex format swizzle.

egltri_screen works correctly!

---

 src/gallium/drivers/radeonsi/evergreen_state.c   |   18 --
 src/gallium/drivers/radeonsi/r600_state_common.c |9 -
 src/gallium/drivers/radeonsi/radeonsi_pipe.h |   19 +++
 3 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/evergreen_state.c 
b/src/gallium/drivers/radeonsi/evergreen_state.c
index c7e4a13..6d345b0 100644
--- a/src/gallium/drivers/radeonsi/evergreen_state.c
+++ b/src/gallium/drivers/radeonsi/evergreen_state.c
@@ -1166,24 +1166,6 @@ static void si_delete_sampler_state(struct pipe_context 
*ctx,
free(state);
 }
 
-static unsigned si_map_swizzle(unsigned swizzle)
-{
-   switch (swizzle) {
-   case UTIL_FORMAT_SWIZZLE_Y:
-   return V_008F1C_SQ_SEL_Y;
-   case UTIL_FORMAT_SWIZZLE_Z:
-   return V_008F1C_SQ_SEL_Z;
-   case UTIL_FORMAT_SWIZZLE_W:
-   return V_008F1C_SQ_SEL_W;
-   case UTIL_FORMAT_SWIZZLE_0:
-   return V_008F1C_SQ_SEL_0;
-   case UTIL_FORMAT_SWIZZLE_1:
-   return V_008F1C_SQ_SEL_1;
-   default: /* UTIL_FORMAT_SWIZZLE_X */
-   return V_008F1C_SQ_SEL_X;
-   }
-}
-
 static struct pipe_sampler_view *evergreen_create_sampler_view(struct 
pipe_context *ctx,
struct pipe_resource 
*texture,
const struct 
pipe_sampler_view *state)
diff --git a/src/gallium/drivers/radeonsi/r600_state_common.c 
b/src/gallium/drivers/radeonsi/r600_state_common.c
index ebed5b3..416c890 100644
--- a/src/gallium/drivers/radeonsi/r600_state_common.c
+++ b/src/gallium/drivers/radeonsi/r600_state_common.c
@@ -630,11 +630,10 @@ static void r600_vertex_buffer_update(struct r600_context 
*rctx)
  vertex_buffer->stride);
else
ptr[2] = vertex_buffer->buffer->width0 - offset;
-   /* XXX: Hardcoding RGBA */
-   ptr[3] = (S_008F0C_DST_SEL_X(V_008F0C_SQ_SEL_X) |
- S_008F0C_DST_SEL_Y(V_008F0C_SQ_SEL_Y) |
- S_008F0C_DST_SEL_Z(V_008F0C_SQ_SEL_Z) |
- S_008F0C_DST_SEL_W(V_008F0C_SQ_SEL_W) |
+   ptr[3] = (S_008F0C_DST_SEL_X(si_map_swizzle(desc->swizzle[0])) |
+ S_008F0C_DST_SEL_Y(si_map_swizzle(desc->swizzle[1])) |
+ S_008F0C_DST_SEL_Z(si_map_swizzle(desc->swizzle[2])) |
+ S_008F0C_DST_SEL_W(si_map_swizzle(desc->swizzle[3])) |
  S_008F0C_NUM_FORMAT(num_format) |
  S_008F0C_DATA_FORMAT(data_format));
 
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.h 
b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
index 64ddd5d..3077f06 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.h
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
@@ -37,6 +37,7 @@
 #include "r600.h"
 #include "radeonsi_public.h"
 #include "r600_resource.h"
+#include "sid.h"
 
 #define R600_MAX_CONST_BUFFERS 1
 #define R600_MAX_CONST_BUFFER_SIZE 4096
@@ -467,6 +468,24 @@ static INLINE uint32_t S_FIXED(float value, uint32_t 
frac_bits)
 }
 #define ALIGN_DIVUP(x, y) (((x) + (y) - 1) / (y))
 
+static INLINE unsigned si_map_swizzle(unsigned swizzle)
+{
+   switch (swizzle) {
+   case UTIL_FORMAT_SWIZZLE_Y:
+   return V_008F0C_SQ_SEL_Y;
+   case UTIL_FORMAT_SWIZZLE_Z:
+   return V_008F0C_SQ_SEL_Z;
+   case UTIL_FORMAT_SWIZZLE_W:
+   return V_008F0C_SQ_SEL_W;
+   case UTIL_FORMAT_SWIZZLE_0:
+   return V_008F0C_SQ_SEL_0;
+   case UTIL_FORMAT_SWIZZLE_1:
+   return V_008F0C_SQ_SEL_1;
+   default: /* UTIL_FORMAT_SWIZZLE_X */
+   return V_008F0C_SQ_SEL_X;
+   }
+}
+
 static inline unsigned r600_tex_aniso_filter(unsigned filter)
 {
if (filter <= 1)   return 0;

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