Mesa (gallium-rect-textures): st/dri: use PIPE_TEXTURE_RECT if appropriate

2010-08-20 Thread Luca Barbieri
Module: Mesa
Branch: gallium-rect-textures
Commit: adff7e0e6ac0dbd692f6234d4efab0e520d77081
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=adff7e0e6ac0dbd692f6234d4efab0e520d77081

Author: Luca Barbieri 
Date:   Wed Aug 18 22:57:22 2010 +0200

st/dri: use PIPE_TEXTURE_RECT if appropriate

---

 src/gallium/state_trackers/dri/common/dri_screen.c |5 +
 src/gallium/state_trackers/dri/common/dri_screen.h |1 +
 src/gallium/state_trackers/dri/drm/dri2.c  |4 ++--
 src/gallium/state_trackers/dri/sw/drisw.c  |2 +-
 4 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c 
b/src/gallium/state_trackers/dri/common/dri_screen.c
index 6ad2c7d..0ab4dd1 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.c
+++ b/src/gallium/state_trackers/dri/common/dri_screen.c
@@ -383,6 +383,11 @@ dri_init_screen_helper(struct dri_screen *screen,
if (!screen->st_api)
   return NULL;
 
+   if(pscreen->get_param(pscreen, PIPE_CAP_NPOT_TEXTURES))
+  screen->target = PIPE_TEXTURE_2D;
+   else
+  screen->target = PIPE_TEXTURE_RECT;
+
driParseOptionInfo(&screen->optionCache,
   __driConfigOptions, __driNConfigOptions);
 
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h 
b/src/gallium/state_trackers/dri/common/dri_screen.h
index 53ccce1..849f399 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.h
+++ b/src/gallium/state_trackers/dri/common/dri_screen.h
@@ -68,6 +68,7 @@ struct dri_screen
boolean d_depth_bits_last;
boolean sd_depth_bits_last;
boolean auto_fake_front;
+   enum pipe_texture_target target;
 };
 
 /** cast wrapper */
diff --git a/src/gallium/state_trackers/dri/drm/dri2.c 
b/src/gallium/state_trackers/dri/drm/dri2.c
index 47005c1..93f910a 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -195,7 +195,7 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
   pipe_resource_reference(&drawable->textures[i], NULL);
 
memset(&templ, 0, sizeof(templ));
-   templ.target = PIPE_TEXTURE_2D;
+   templ.target = screen->target;
templ.last_level = 0;
templ.width0 = dri_drawable->w;
templ.height0 = dri_drawable->h;
@@ -342,7 +342,7 @@ dri2_create_image_from_name(__DRIcontext *context,
memset(&templ, 0, sizeof(templ));
templ.bind = tex_usage;
templ.format = pf;
-   templ.target = PIPE_TEXTURE_2D;
+   templ.target = screen->target;
templ.last_level = 0;
templ.width0 = width;
templ.height0 = height;
diff --git a/src/gallium/state_trackers/dri/sw/drisw.c 
b/src/gallium/state_trackers/dri/sw/drisw.c
index 249ccd7..04bba63 100644
--- a/src/gallium/state_trackers/dri/sw/drisw.c
+++ b/src/gallium/state_trackers/dri/sw/drisw.c
@@ -216,7 +216,7 @@ drisw_allocate_textures(struct dri_drawable *drawable,
}
 
memset(&templ, 0, sizeof(templ));
-   templ.target = PIPE_TEXTURE_2D;
+   templ.target = screen->target;
templ.width0 = width;
templ.height0 = height;
templ.depth0 = 1;

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


Mesa (gallium-rect-textures): st/dri: use PIPE_TEXTURE_RECT if appropriate

2010-08-18 Thread Luca Barbieri
Module: Mesa
Branch: gallium-rect-textures
Commit: 64ab845b7e123e9305ccb260392eda217beaed93
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=64ab845b7e123e9305ccb260392eda217beaed93

Author: Luca Barbieri 
Date:   Wed Aug 18 22:57:22 2010 +0200

st/dri: use PIPE_TEXTURE_RECT if appropriate

---

 src/gallium/state_trackers/dri/common/dri_screen.c |5 +
 src/gallium/state_trackers/dri/common/dri_screen.h |1 +
 src/gallium/state_trackers/dri/drm/dri2.c  |4 ++--
 src/gallium/state_trackers/dri/sw/drisw.c  |2 +-
 4 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c 
b/src/gallium/state_trackers/dri/common/dri_screen.c
index 6ad2c7d..0ab4dd1 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.c
+++ b/src/gallium/state_trackers/dri/common/dri_screen.c
@@ -383,6 +383,11 @@ dri_init_screen_helper(struct dri_screen *screen,
if (!screen->st_api)
   return NULL;
 
+   if(pscreen->get_param(pscreen, PIPE_CAP_NPOT_TEXTURES))
+  screen->target = PIPE_TEXTURE_2D;
+   else
+  screen->target = PIPE_TEXTURE_RECT;
+
driParseOptionInfo(&screen->optionCache,
   __driConfigOptions, __driNConfigOptions);
 
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h 
b/src/gallium/state_trackers/dri/common/dri_screen.h
index 53ccce1..849f399 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.h
+++ b/src/gallium/state_trackers/dri/common/dri_screen.h
@@ -68,6 +68,7 @@ struct dri_screen
boolean d_depth_bits_last;
boolean sd_depth_bits_last;
boolean auto_fake_front;
+   enum pipe_texture_target target;
 };
 
 /** cast wrapper */
diff --git a/src/gallium/state_trackers/dri/drm/dri2.c 
b/src/gallium/state_trackers/dri/drm/dri2.c
index 47005c1..93f910a 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -195,7 +195,7 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
   pipe_resource_reference(&drawable->textures[i], NULL);
 
memset(&templ, 0, sizeof(templ));
-   templ.target = PIPE_TEXTURE_2D;
+   templ.target = screen->target;
templ.last_level = 0;
templ.width0 = dri_drawable->w;
templ.height0 = dri_drawable->h;
@@ -342,7 +342,7 @@ dri2_create_image_from_name(__DRIcontext *context,
memset(&templ, 0, sizeof(templ));
templ.bind = tex_usage;
templ.format = pf;
-   templ.target = PIPE_TEXTURE_2D;
+   templ.target = screen->target;
templ.last_level = 0;
templ.width0 = width;
templ.height0 = height;
diff --git a/src/gallium/state_trackers/dri/sw/drisw.c 
b/src/gallium/state_trackers/dri/sw/drisw.c
index 249ccd7..04bba63 100644
--- a/src/gallium/state_trackers/dri/sw/drisw.c
+++ b/src/gallium/state_trackers/dri/sw/drisw.c
@@ -216,7 +216,7 @@ drisw_allocate_textures(struct dri_drawable *drawable,
}
 
memset(&templ, 0, sizeof(templ));
-   templ.target = PIPE_TEXTURE_2D;
+   templ.target = screen->target;
templ.width0 = width;
templ.height0 = height;
templ.depth0 = 1;

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