Re: [Mesa-dev] [PATCH] mesa: Fix the Mesa IR copy propagation to not read past writes to the reg.

2011-02-08 Thread José Fonseca
Looks good to me FWIW.

When dst_reg.reladdr is set we could still restrict the reset to
dst_reg.writemask bits, but this was not done before either.

Jose

On Fri, 2011-02-04 at 12:50 -0800, Eric Anholt wrote:
 Fixes glsl-vs-post-increment-01.
 ---
  src/mesa/program/ir_to_mesa.cpp |   47 +-
  1 files changed, 40 insertions(+), 7 deletions(-)
 
 diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
 index 3794c0d..d0ec23f 100644
 --- a/src/mesa/program/ir_to_mesa.cpp
 +++ b/src/mesa/program/ir_to_mesa.cpp
 @@ -2742,13 +2742,46 @@ ir_to_mesa_visitor::copy_propagate(void)
/* Continuing the block, clear any written channels from
 * the ACP.
 */
 -  if (inst-dst_reg.file == PROGRAM_TEMPORARY) {
 - if (inst-dst_reg.reladdr) {
 -memset(acp, 0, sizeof(*acp) * this-next_temp * 4);
 - } else {
 -for (int i = 0; i  4; i++) {
 -   if (inst-dst_reg.writemask  (1  i)) {
 -  acp[4 * inst-dst_reg.index + i] = NULL;
 +  if (inst-dst_reg.file == PROGRAM_TEMPORARY  inst-dst_reg.reladdr) {
 + /* Any temporary might be written, so no copy propagation
 +  * across this instruction.
 +  */
 + memset(acp, 0, sizeof(*acp) * this-next_temp * 4);
 +  } else if (inst-dst_reg.file == PROGRAM_OUTPUT 
 + inst-dst_reg.reladdr) {
 + /* Any output might be written, so no copy propagation
 +  * from outputs across this instruction.
 +  */
 + for (int r = 0; r  this-next_temp; r++) {
 +for (int c = 0; c  4; c++) {
 +   if (acp[4 * r + c]-src_reg[0].file == PROGRAM_OUTPUT)
 +  acp[4 * r + c] = NULL;
 +}
 + }
 +  } else if (inst-dst_reg.file == PROGRAM_TEMPORARY ||
 + inst-dst_reg.file == PROGRAM_OUTPUT) {
 + /* Clear where it's used as dst. */
 + if (inst-dst_reg.file == PROGRAM_TEMPORARY) {
 +for (int c = 0; c  4; c++) {
 +   if (inst-dst_reg.writemask  (1  c)) {
 +  acp[4 * inst-dst_reg.index + c] = NULL;
 +   }
 +}
 + }
 +
 + /* Clear where it's used as src. */
 + for (int r = 0; r  this-next_temp; r++) {
 +for (int c = 0; c  4; c++) {
 +   if (!acp[4 * r + c])
 +  continue;
 +
 +   int src_chan = GET_SWZ(acp[4 * r + c]-src_reg[0].swizzle, c);
 +
 +   if (acp[4 * r + c]-src_reg[0].file == inst-dst_reg.file 
 +   acp[4 * r + c]-src_reg[0].index == inst-dst_reg.index 
 +   inst-dst_reg.writemask  (1  src_chan))
 +   {
 +  acp[4 * r + c] = NULL;
 }
  }
   }


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


[Mesa-dev] [Bug 23525] Software rendering on QEMU guests badly broken

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=23525

--- Comment #4 from Bernhard M. Wiedemann freedesktop...@lsmod.de 2011-02-08 
03:16:02 PST ---
Mesa-7.10 swrast on Qemu/KVM's emulated 24bit cirrus graphics is still broken.
Looks like this:
http://openqa.opensuse.org/opensuse/permanent/bug/bfo23525.png

but works on vesa driver that has
(II) VESA(0): Creating default Display subsection in Screen section
Default Screen for depth/fbbpp 24/24
(==) VESA(0): Depth 24, (==) framebuffer bpp 24
...
(==) Depth 24 pixmap format is 32 bpp

and also works on fbdev with 16/16

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] r600g, silence a few valgrind warnings

2011-02-08 Thread Marek Olšák
Pushed, thanks.

Marek

On Tue, Feb 8, 2011 at 2:57 AM, Brian Paterni bpate...@gmail.com wrote:

 Hi all,

 Here's a small patch which silences a few unitialized bytes warnings in
 valgrind:

 diff --git a/src/gallium/winsys/r600/drm/r600_drm.c
 b/src/gallium/winsys/r600/drm/r600_drm.c
 index 096c178..f5cd48d 100644
 --- a/src/gallium/winsys/r600/drm/r600_drm.c
 +++ b/src/gallium/winsys/r600/drm/r600_drm.c
 @@ -67,7 +67,7 @@ unsigned r600_get_clock_crystal_freq(struct radeon
 *radeon)

  static int radeon_get_device(struct radeon *radeon)
  {
 -   struct drm_radeon_info info;
 +   struct drm_radeon_info info = {};
int r;

radeon-device = 0;
 diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c
 b/src/gallium/winsys/r600/drm/r600_hw_context.c
 index a939ec6..f170640 100644
 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c
 +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
 @@ -1088,7 +1088,7 @@ void r600_context_draw(struct r600_context *ctx,
 const struct r600_draw *draw)

  void r600_context_flush(struct r600_context *ctx)
  {
 -   struct drm_radeon_cs drmib;
 +   struct drm_radeon_cs drmib = {};
struct drm_radeon_cs_chunk chunks[2];
uint64_t chunk_array[2];
unsigned fence;
 diff --git a/src/gallium/winsys/r600/drm/radeon_bo.c
 b/src/gallium/winsys/r600/drm/radeon_bo.c
 index 999de82..3643ddb 100644
 --- a/src/gallium/winsys/r600/drm/radeon_bo.c
 +++ b/src/gallium/winsys/r600/drm/radeon_bo.c
 @@ -98,7 +98,7 @@ struct radeon_bo *radeon_bo(struct radeon *radeon,
 unsigned handle,
bo-size = open_arg.size;
bo-shared = TRUE;
} else {
 -   struct drm_radeon_gem_create args;
 +   struct drm_radeon_gem_create args = {};

args.size = size;
args.alignment = alignment;
 @@ -204,7 +204,7 @@ int radeon_bo_get_tiling_flags(struct radeon *radeon,
   uint32_t *tiling_flags,
   uint32_t *pitch)
  {
 -   struct drm_radeon_gem_get_tiling args;
 +   struct drm_radeon_gem_get_tiling args = {};
int ret;

args.handle = bo-handle;
 ___
 mesa-dev mailing list
 mesa-dev@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/mesa-dev

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


[Mesa-dev] [Bug 33934] glBlitFramebuffer could have a fast path if there's no scaling

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=33934

--- Comment #3 from Neil Roberts n...@linux.intel.com 2011-02-08 05:08:06 PST 
---
Created an attachment (id=43096)
 -- (https://bugs.freedesktop.org/attachment.cgi?id=43096)
Test case showing the performance difference

Well at least on the Intel driver there is a faster path for blitting that
glCopyTexSubImage2D uses. If it's not also beneficial for Radeon then maybe we
should move the patch to be specific to the Intel drivers.

Attached is a test case to get some timing for the two functions.

Without patch:

time for glBlitFramebuffer = 122285
time for glCopyTexSubImage2D = 6097

So glCopyTexSubImage2D is 1906% faster than glBlitFramebuffer.

With the patch I get:

time for glBlitFramebuffer = 25740
time for glCopyTexSubImage2D = 6900

The patch improves the speed of glBlitFramebuffer by 375% but it's still pretty
slow compared to glCopyTexSubImage2D. Maybe the cost of glBlitFramebuffer is
mostly in preserving the GL state across the Mesa meta calls and the patch
still does a bit of this. Maybe we should make a proper Intel-specific fast
path for glBlitFramebuffer that directly calls intelEmitCopyBlit like
do_copy_texsubimage does so that it can avoid affecting the GL state.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 33934] 3D blitting is orders of magnitude slower than equivalent 2D blitting.

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=33934

Chris Wilson ch...@chris-wilson.co.uk changed:

   What|Removed |Added

Summary|glBlitFramebuffer could |3D blitting is orders of
   |have a fast path if there's |magnitude slower than
   |no scaling  |equivalent 2D blitting.
  Component|Mesa core   |Drivers/DRI/i965
 AssignedTo|mesa-dev@lists.freedesktop. |e...@anholt.net
   |org |

--- Comment #6 from Chris Wilson ch...@chris-wilson.co.uk 2011-02-08 06:39:32 
PST ---
Marek, this appears to be an intel issue, agreed?

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] Black window on Mesa 7.10

2011-02-08 Thread Lionel Landwerlin
Hi all,

I just upgraded Mesa to the 7.10 version. Here is the glxinfo trace :

user@worky:~$ glxinfo 
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, 
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, 
GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGIS_multisample, 
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, 
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync, 
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap, 
GLX_INTEL_swap_event
GLX version: 1.2
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, 
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_SGI_make_current_read, 
GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig, 
GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, 
GLX_EXT_texture_from_pixmap
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile GEM 20100330 
DEVELOPMENT 
OpenGL version string: 2.1 Mesa 7.10
OpenGL shading language version string: 1.20
OpenGL extensions:
GL_ARB_copy_buffer, GL_ARB_depth_clamp, GL_ARB_depth_texture, 
GL_ARB_draw_buffers, GL_ARB_draw_elements_base_vertex, 
GL_ARB_explicit_attrib_location, GL_ARB_fragment_coord_conventions, 
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, 
GL_ARB_fragment_shader, GL_ARB_framebuffer_object, 
GL_ARB_half_float_pixel, GL_ARB_half_float_vertex, 
GL_ARB_map_buffer_range, GL_ARB_multisample, GL_ARB_multitexture, 
GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object, 
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_provoking_vertex, 
GL_ARB_seamless_cube_map, GL_ARB_shader_objects, 
GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_sync, 
GL_ARB_texture_border_clamp, GL_ARB_texture_compression, 
GL_ARB_texture_cube_map, GL_ARB_texture_env_add, 
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, 
GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat, 
GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle, 
GL_ARB_texture_rg, GL_ARB_texture_swizzle, GL_ARB_transpose_matrix, 
GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, 
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader, 
GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, 
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, 
GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract, 
GL_EXT_compiled_vertex_array, GL_EXT_copy_texture, GL_EXT_draw_buffers2, 
GL_EXT_draw_range_elements, GL_EXT_framebuffer_blit, 
GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_object, 
GL_EXT_fog_coord, GL_EXT_gpu_program_parameters, GL_EXT_multi_draw_arrays, 
GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels, 
GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, 
GL_EXT_polygon_offset, GL_EXT_provoking_vertex, GL_EXT_rescale_normal, 
GL_EXT_secondary_color, GL_EXT_separate_shader_objects, 
GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, 
GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_subtexture, 
GL_EXT_texture, GL_EXT_texture3D, GL_EXT_texture_cube_map, 
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias, 
GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, 
GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_vertex_array, 
GL_EXT_vertex_array_bgra, GL_3DFX_texture_compression_FXT1, 
GL_APPLE_client_storage, GL_APPLE_packed_pixels, 
GL_APPLE_vertex_array_object, GL_APPLE_object_purgeable, 
GL_ATI_blend_equation_separate, GL_ATI_envmap_bumpmap, 
GL_ATI_texture_env_combine3, GL_ATI_separate_stencil, 
GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip, 
GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate, 
GL_MESA_pack_invert, GL_MESA_texture_signed_rgba, GL_MESA_ycbcr_texture, 
GL_MESA_window_pos, GL_NV_blend_square, GL_NV_depth_clamp, 
GL_NV_light_max_exponent, GL_NV_packed_depth_stencil, 
GL_NV_texgen_reflection, GL_NV_texture_env_combine4, 
GL_NV_texture_rectangle, GL_NV_vertex_program, GL_NV_vertex_program1_1, 
GL_OES_read_format, 

[Mesa-dev] [Bug 34042] New: Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34042

   Summary: Surfaceless eglMakeCurrent() fails if the supplied
EGLContext is not a dummy context
   Product: Mesa
   Version: git
  Platform: Other
OS/Version: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Mesa core
AssignedTo: mesa-dev@lists.freedesktop.org
ReportedBy: alexandros.frant...@linaro.org


Created an attachment (id=43116)
 -- (https://bugs.freedesktop.org/attachment.cgi?id=43116)
Example exhibiting the issue

In a EGL implementation that supports EGL_KHR_surfaceless_opengl, making an
EGLContext current without any surfaces works only if the supplied EGLContext
is a dummy one (see the example).

Running the example on my system (r600g but EGL_SOFTWARE=1 results are the
same) I get:

$ MESA_DEBUG=1 ./egl-surfaceless 
EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_image EGL_KHR_reusable_sync
EGL_KHR_fence_sync EGL_KHR_surfaceless_gles1 EGL_KHR_surfaceless_gles2
EGL_KHR_surfaceless_opengl 
Mesa warning: couldn't open libtxc_dxtn.so, software DXTn
compression/decompression unavailable
Mesa warning: couldn't open libtxc_dxtn.so, software DXTn
compression/decompression unavailable
eglMakeCurrent Dummy Succeeded: 0x3000
Mesa warning: MakeCurrent: incompatible visuals for context and drawbuffer
eglMakeCurrent Normal Failed: 0x3000

It is strange that although the second eglMakeCurrent fails, the eglError()
returns EGL_SUCCESS (0x3000).

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH] st/mesa: Fix surfaceless opengl with non-dummy contexts

2011-02-08 Thread Benjamin Franzke
main/context.c:check_complatible() detecs an incomplete
framebuffer using its pointer, so do not copy it.

This should fix https://bugs.freedesktop.org/show_bug.cgi?id=34042
---
 src/mesa/state_tracker/st_manager.c |   15 +--
 1 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/mesa/state_tracker/st_manager.c 
b/src/mesa/state_tracker/st_manager.c
index 179e5dc..17e11ec 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -426,19 +426,13 @@ st_framebuffer_create(struct st_framebuffer_iface *stfbi)
struct gl_config mode;
gl_buffer_index idx;
 
+   if (!stfbi)
+  return NULL;
+
stfb = CALLOC_STRUCT(st_framebuffer);
if (!stfb)
   return NULL;
 
-   /* for FBO-only context */
-   if (!stfbi) {
-  struct gl_framebuffer *base = _mesa_get_incomplete_framebuffer();
-
-  stfb-Base = *base;
-
-  return stfb;
-   }
-
st_visual_to_context_mode(stfbi-visual, mode);
_mesa_initialize_window_framebuffer(stfb-Base, mode);
 
@@ -764,7 +758,8 @@ st_api_make_current(struct st_api *stapi, struct 
st_context_iface *stctxi,
  ret = _mesa_make_current(st-ctx, stdraw-Base, stread-Base);
   }
   else {
- ret = FALSE;
+ struct gl_framebuffer *incomplete = 
_mesa_get_incomplete_framebuffer();
+ ret = _mesa_make_current(st-ctx, incomplete, incomplete);
   }
 
   st_framebuffer_reference(stdraw, NULL);
-- 
1.7.3.4

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


[Mesa-dev] [Bug 34042] Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34042

--- Comment #1 from Benjamin Franzke benjaminfran...@googlemail.com 
2011-02-08 10:05:18 PST ---
Should be fixed by:
http://lists.freedesktop.org/archives/mesa-dev/2011-February/005371.html

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] Black window on Mesa 7.10

2011-02-08 Thread Lionel Landwerlin


On Tue, 2011-02-08 at 16:16 +, Lionel Landwerlin wrote:
Hi all,
 
Ever since I can't see anything on the screen, even if the rendering
 seems to be done. For instance glxgears as well as any other opengl
app
 displays just a black window, but still manages to compute framerate :
 
 user@worky:~$ glxgears 
 10153 frames in 5.0 seconds = 2030.533 FPS
 10694 frames in 5.0 seconds = 2138.651 FPS
 10695 frames in 5.0 seconds = 2138.882 FPS
 10914 frames in 5.0 seconds = 2182.691 FPS
 10753 frames in 5.0 seconds = 2150.418 FPS
 10654 frames in 5.0 seconds = 2130.680 FPS
 10858 frames in 5.0 seconds = 2171.426 FPS
 
 If I switch to the software x11 rendering, there is no display
problem.
 
 Any idea how to find the problem ?
 
 Regards,
 
 
Back to 7.8.2 component by component seems to fix the problem when I
switch back by the libgl1-mesa-dri package containing :

/usr/lib/dri/radeon_dri.so
/usr/lib/dri/i915_dri.so
/usr/lib/dri/unichrome_dri.so
/usr/lib/dri/i965_dri.so
/usr/lib/dri/r600_dri.so
/usr/lib/dri/r200_dri.so
/usr/lib/dri/mach64_dri.so
/usr/lib/dri/tdfx_dri.so
/usr/lib/dri/savage_dri.so
/usr/lib/dri/r300_dri.so
/usr/lib/dri/sis_dri.so
/usr/lib/dri/r128_dri.so
/usr/lib/dri/mga_dri.so
/usr/lib/dri/swrast_dri.so

--
Lionel Landwerlin

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


[Mesa-dev] [Bug 34047] New: Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34047

   Summary: Assert in _tnl_import_array() when using GLfixed
vertex datatypes with GLESv2
   Product: Mesa
   Version: 7.9
  Platform: x86 (IA32)
OS/Version: other
Status: NEW
  Severity: critical
  Priority: medium
 Component: Other
AssignedTo: mesa-dev@lists.freedesktop.org
ReportedBy: david.le...@nokia.com


-Hardware/software setup:
Intel GMA 3150 (Atom N450) DRI i915
Meego 1.1 trunk 
Mesa 7.9.1 / Mesa 7.10 

Our program hits an assert in _tnl_import_array() when we try to use GLfixed
datatypes for vertices. It seems the _tnl_import_array() method is unable to
convert this datatype and just asserts to crash the program. According to the
GLESv2 spec, GLfixed datatypes are supported for vertex input. 

We are using the following gl functions to render:
glVertexAttribPointer();  // Datatype is GL_FIXED
glDrawElements(); 

I prototyped a GLfixed to GLfloat conversion function in _tnl_import_array()and
it seems to have fixed the problem. 

static void
convert_fixed_to_float(const struct gl_client_array *input,
   const GLubyte *ptr, GLfloat *fptr,
   GLuint count, GLuint sz)
{
GLuint i,j;
GLfixed *in =(GLfixed *)ptr;
for (i = 0; i  count; i++) {
for (j = 0; j  input-Size; j++) {
*fptr = (GLfloat)((*in)*(1/65536.0f));
in++;
fptr++;
}
ptr += input-StrideB;
}
}

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34047] Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34047

--- Comment #1 from David Leong david.le...@nokia.com 2011-02-08 10:30:24 PST 
---
Just to add a note. The same code using GL_FIXED works correctly when using the
SGX driver.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34047] Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34047

--- Comment #2 from David Leong david.le...@nokia.com 2011-02-08 10:59:04 PST 
---
Code also works ok on the Symbian GLESv2 and windows GLESv2 emulation
implementations.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34042] Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34042

--- Comment #2 from Alexandros Frantzis alexandros.frant...@linaro.org 
2011-02-08 11:50:46 PST ---
(In reply to comment #1)
 Should be fixed by:
 http://lists.freedesktop.org/archives/mesa-dev/2011-February/005371.html

I tried the patch, but the problem remains.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34049] New: r600g: assertion failure (regression)

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34049

   Summary: r600g: assertion failure (regression)
   Product: Mesa
   Version: git
  Platform: Other
OS/Version: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Mesa core
AssignedTo: mesa-dev@lists.freedesktop.org
ReportedBy: monr...@gmail.com


Mesa git master causes an assertion failure on r600g with the following piglit
tests.

bugs/fdo23670-drawpix_stencil
general/stencil-drawpixels

stencil-drawpixels: program/program.c:452: _mesa_reference_program: Assertion
`(*ptr)-RefCount  0' failed
Aborted


git bisect says:

5cbff0932e498f49b57cbb71037b93416bfe30e0 is the first bad commit
commit 5cbff0932e498f49b57cbb71037b93416bfe30e0
Author: Brian Paul bri...@vmware.com
Date:   Tue Feb 8 08:05:14 2011 -0700

st/mesa: free the temporary bitmap/drawpix shader code

Fixes a per-shader memory leak when drawing glBitmaps, glDrawPixels
or glCopyPixels.

NOTE: This is a candidate for the 7.9 and 7.10 branches.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34042] Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34042

--- Comment #3 from Alexandros Frantzis alexandros.frant...@linaro.org 
2011-02-08 12:27:23 PST ---
Note that I have this problem with all of r600g, r600c, i915c and gallium
softpipe.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34042] Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34042

Siarhei Siamashka siarhei.siamas...@gmail.com changed:

   What|Removed |Added

 CC||siarhei.siamas...@gmail.com

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34042] Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34042

--- Comment #4 from Benjamin Franzke benjaminfran...@googlemail.com 
2011-02-08 13:16:27 PST ---
(In reply to comment #3)
 Note that I have this problem with all of r600g, r600c, i915c and gallium
 softpipe.

I can't reproduce this using your test client (or cairo-egl).
Tested with r600g and softpipe using egl_gallium and egl_dri2.

You might want to use EGL_LOG_LEVEL=debug to get more output.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] Gallium proposal: add a user pointer in pipe_resource

2011-02-08 Thread Marek Olšák
Keith,

redefine_user_buffer() would be a good compromise and I believe the
performance hit wouldn't be so noticable. It would also allow partial
uploads of constants in a user buffer, which is something we'd like to have
too.

Currently, st/mesa in st_draw_vbo is doing:
- N calls to resource_destroy
- some unnecessary computations
- N calls to user_buffer_create
- 1 call to set_vertex_buffers
- 1 call to set_vertex_elements_state

If we can replace this by N calls to redefine_user_buffer, then I am all for
it, provided neither _NEW_ARRAY nor _NEW_PROGRAM is dirty of course.

Can the function look, let's say, like this?

void redefine_user_buffer(struct pipe_context *, struct pipe_resource *,
const struct pipe_box *);

Marek

On Mon, Feb 7, 2011 at 5:15 PM, Keith Whitwell kei...@vmware.com wrote:

 Marek,

 I'm fine with keeping user buffers -- it's only a  vague hope they'll fade
 away over time, and I'm comfortable with keeping them as long as their
 behaviour is well understood.

 The really important thing for me is to preserve traceability.  That is to
 say it should be possible to observe what happens over the interface and
 infer directly from that when something important happens.  In this case,
 that would mean having a way to notice that the contents and/or size of a
 userbuffer changed.

 That could be as simple as a notification call that this has happened, for
 example redefine_user_buffer().  On your current drivers that call would
 be a noop -- hopefully that's not going to be a noticiable performance hit?
 Then in some tracing or recording module, that call could be used to log the
 contents of the userbuffer to a file, or in some future indirect-rendering
 equivalent, the new contents could be transmitted across the wire, etc.

 This would mean that userbuffers continue to have a known size, etc, and
 would require the state-tracker to issue the redefine call as necessary.
 You're in a better position than me to comment on the performance impact of
 this.

 If you're saying this isn't workable from a performance POV, then as you
 suggest we'll have to find a way to push the logic for identifying when
 userbuffers changed down into those components (tracing, remoting, etc)
 which care about it.

 Keith

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


Re: [Mesa-dev] Gallium proposal: add a user pointer in pipe_resource

2011-02-08 Thread Keith Whitwell
On Tue, 2011-02-08 at 22:29 +0100, Marek Olšák wrote:
 
 
 Keith,
 
 redefine_user_buffer() would be a good compromise and I believe the
 performance hit wouldn't be so noticable. It would also allow partial
 uploads of constants in a user buffer, which is something we'd like to
 have
 too.
 
 Currently, st/mesa in st_draw_vbo is doing:
 - N calls to resource_destroy
 - some unnecessary computations
 - N calls to user_buffer_create
 - 1 call to set_vertex_buffers
 - 1 call to set_vertex_elements_state
 
 If we can replace this by N calls to redefine_user_buffer, then I am
 all for
 it, provided neither _NEW_ARRAY nor _NEW_PROGRAM is dirty of course.
 
 Can the function look, let's say, like this?
 
 void redefine_user_buffer(struct pipe_context *, struct pipe_resource
 *,
 const struct pipe_box *);
 

That looks good, but wouldn't you also want to be able to change the
size of the userbuffer?  I can see you might be able to implicitly grow
the buffer this way (when box-x +  box-width  resource-width0), but
that's fairly obtuse and it doesn't permit shrinking.

So perhaps as above with a unsigned new_width0 parameter?

Keith

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


Re: [Mesa-dev] Gallium proposal: add a user pointer in pipe_resource

2011-02-08 Thread Marek Olšák
On Tue, Feb 8, 2011 at 10:39 PM, Keith Whitwell kei...@vmware.com wrote:

 On Tue, 2011-02-08 at 22:29 +0100, Marek Olšák wrote:
 
 
  Keith,
 
  redefine_user_buffer() would be a good compromise and I believe the
  performance hit wouldn't be so noticable. It would also allow partial
  uploads of constants in a user buffer, which is something we'd like to
  have
  too.
 
  Currently, st/mesa in st_draw_vbo is doing:
  - N calls to resource_destroy
  - some unnecessary computations
  - N calls to user_buffer_create
  - 1 call to set_vertex_buffers
  - 1 call to set_vertex_elements_state
 
  If we can replace this by N calls to redefine_user_buffer, then I am
  all for
  it, provided neither _NEW_ARRAY nor _NEW_PROGRAM is dirty of course.
 
  Can the function look, let's say, like this?
 
  void redefine_user_buffer(struct pipe_context *, struct pipe_resource
  *,
  const struct pipe_box *);
 

 That looks good, but wouldn't you also want to be able to change the
 size of the userbuffer?  I can see you might be able to implicitly grow
 the buffer this way (when box-x +  box-width  resource-width0), but
 that's fairly obtuse and it doesn't permit shrinking.

 So perhaps as above with a unsigned new_width0 parameter?


I had in mind that width0 would be ~0, but I guess that's not nice. What
about this?

void redefine_user_buffer(
struct pipe_context*,
struct pipe_resource*,
unsigned offset,
unsigned size);

and new width0 would implicitly be offset+size;

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


Re: [Mesa-dev] Gallium proposal: add a user pointer in pipe_resource

2011-02-08 Thread Keith Whitwell
On Tue, 2011-02-08 at 22:51 +0100, Marek Olšák wrote:
 
 void redefine_user_buffer(
 struct pipe_context*,
 struct pipe_resource*,
 unsigned offset,
 unsigned size);
 
 and new width0 would implicitly be offset+size;
 

I think this is a great place to start, if you're happy with it too.

Lets see how well it works for you in implementation  make further
adjustments later if necessary.

Keith

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


[Mesa-dev] [Bug 34047] Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34047

Chad Versace c...@chad-versace.us changed:

   What|Removed |Added

 AssignedTo|mesa-dev@lists.freedesktop. |c...@chad-versace.us
   |org |

--- Comment #3 from Chad Versace c...@chad-versace.us 2011-02-08 14:35:35 PST 
---
Assign bug to myself: c...@chad-versace.us

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34042] Surfaceless eglMakeCurrent() fails if the supplied EGLContext is not a dummy context

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34042

--- Comment #5 from Alexandros Frantzis alexandros.frant...@linaro.org 
2011-02-08 15:42:29 PST ---
(In reply to comment #4)
 (In reply to comment #3)
  Note that I have this problem with all of r600g, r600c, i915c and gallium
  softpipe.
 
 I can't reproduce this using your test client (or cairo-egl).
 Tested with r600g and softpipe using egl_gallium and egl_dri2.
 
 You might want to use EGL_LOG_LEVEL=debug to get more output.

The proposed patch works after all. I was forgetting to set EGL_DRIVERS_PATH
when testing the libraries built from git. Sorry for the false alarm.

Thanks!

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [Bug 34049] r600g: assertion failure (regression)

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34049

--- Comment #1 from Brian Paul bri...@vmware.com 2011-02-08 17:25:01 PST ---
This should be fixed with commit 7230e1a22822ce91f2d2555da53404f195fa9aaf.
Can you retest and close if fixed?  I tested w/ softpipe and llvmpipe here but
not r600g.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 1/3] egl_dri2: rename loader_extension to dri2_loader_extension

2011-02-08 Thread Feng, Haitao

From 7db4f1f8a5c85666b3ea7e60ee58bd5e68457c20 Mon Sep 17 00:00:00 2001
From: Haitao Feng haitao.f...@intel.com
Date: Wed, 9 Feb 2011 14:18:48 -0500
Subject: [PATCH 1/3] egl_dri2: rename loader_extension to dri2_loader_extension


Signed-off-by: Haitao Feng haitao.f...@intel.com
---
 src/egl/drivers/dri2/egl_dri2.h |2 +-
 src/egl/drivers/dri2/platform_wayland.c |   12 ++--
 src/egl/drivers/dri2/platform_x11.c |   22 +++---
 3 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
index 72e887c..66d200d 100644
--- a/src/egl/drivers/dri2/egl_dri2.h
+++ b/src/egl/drivers/dri2/egl_dri2.h
@@ -79,7 +79,7 @@ struct dri2_egl_display
char *device_name;
char *driver_name;
 
-   __DRIdri2LoaderExtension  loader_extension;
+   __DRIdri2LoaderExtension  dri2_loader_extension;
const __DRIextension *extensions[3];
 #ifdef HAVE_WAYLAND_PLATFORM
struct wl_egl_display*wl_dpy;
diff --git a/src/egl/drivers/dri2/platform_wayland.c 
b/src/egl/drivers/dri2/platform_wayland.c
index 16e0888..e0eae08 100644
--- a/src/egl/drivers/dri2/platform_wayland.c
+++ b/src/egl/drivers/dri2/platform_wayland.c
@@ -568,14 +568,14 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay 
*disp)
if (!dri2_load_driver(disp))
   goto cleanup_driver_name;
 
-   dri2_dpy-loader_extension.base.name = __DRI_DRI2_LOADER;
-   dri2_dpy-loader_extension.base.version = 3;
-   dri2_dpy-loader_extension.getBuffers = dri2_get_buffers;
-   dri2_dpy-loader_extension.flushFrontBuffer = dri2_flush_front_buffer;
-   dri2_dpy-loader_extension.getBuffersWithFormat =
+   dri2_dpy-dri2_loader_extension.base.name = __DRI_DRI2_LOADER;
+   dri2_dpy-dri2_loader_extension.base.version = 3;
+   dri2_dpy-dri2_loader_extension.getBuffers = dri2_get_buffers;
+   dri2_dpy-dri2_loader_extension.flushFrontBuffer = dri2_flush_front_buffer;
+   dri2_dpy-dri2_loader_extension.getBuffersWithFormat =
   dri2_get_buffers_with_format;
   
-   dri2_dpy-extensions[0] = dri2_dpy-loader_extension.base;
+   dri2_dpy-extensions[0] = dri2_dpy-dri2_loader_extension.base;
dri2_dpy-extensions[1] = image_lookup_extension.base;
dri2_dpy-extensions[2] = NULL;
 
diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index 3b2f06e..ea4b717 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -735,21 +735,21 @@ dri2_initialize_x11(_EGLDriver *drv, _EGLDisplay *disp)
}
 
if (dri2_dpy-dri2_minor = 1) {
-  dri2_dpy-loader_extension.base.name = __DRI_DRI2_LOADER;
-  dri2_dpy-loader_extension.base.version = 3;
-  dri2_dpy-loader_extension.getBuffers = dri2_get_buffers;
-  dri2_dpy-loader_extension.flushFrontBuffer = dri2_flush_front_buffer;
-  dri2_dpy-loader_extension.getBuffersWithFormat =
+  dri2_dpy-dri2_loader_extension.base.name = __DRI_DRI2_LOADER;
+  dri2_dpy-dri2_loader_extension.base.version = 3;
+  dri2_dpy-dri2_loader_extension.getBuffers = dri2_get_buffers;
+  dri2_dpy-dri2_loader_extension.flushFrontBuffer = 
dri2_flush_front_buffer;
+  dri2_dpy-dri2_loader_extension.getBuffersWithFormat =
 dri2_get_buffers_with_format;
} else {
-  dri2_dpy-loader_extension.base.name = __DRI_DRI2_LOADER;
-  dri2_dpy-loader_extension.base.version = 2;
-  dri2_dpy-loader_extension.getBuffers = dri2_get_buffers;
-  dri2_dpy-loader_extension.flushFrontBuffer = dri2_flush_front_buffer;
-  dri2_dpy-loader_extension.getBuffersWithFormat = NULL;
+  dri2_dpy-dri2_loader_extension.base.name = __DRI_DRI2_LOADER;
+  dri2_dpy-dri2_loader_extension.base.version = 2;
+  dri2_dpy-dri2_loader_extension.getBuffers = dri2_get_buffers;
+  dri2_dpy-dri2_loader_extension.flushFrontBuffer = 
dri2_flush_front_buffer;
+  dri2_dpy-dri2_loader_extension.getBuffersWithFormat = NULL;
}
   
-   dri2_dpy-extensions[0] = dri2_dpy-loader_extension.base;
+   dri2_dpy-extensions[0] = dri2_dpy-dri2_loader_extension.base;
dri2_dpy-extensions[1] = image_lookup_extension.base;
dri2_dpy-extensions[2] = NULL;
 
-- 
1.7.1

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


[Mesa-dev] [PATCH 2/3] egl_dri2: add swrast

2011-02-08 Thread Feng, Haitao

From 4d2994362d53b0a7e00e6ec29433c648a3695208 Mon Sep 17 00:00:00 2001
From: Haitao Feng haitao.f...@intel.com
Date: Wed, 9 Feb 2011 14:43:23 -0500
Subject: [PATCH 2/3] egl_dri2: add swrast

This enables the egl_dri2 driver to load swrast driver
for software rendering. It could be used when hardware
dri2 drivers are not available, such as in VM.

Signed-off-by: Haitao Feng haitao.f...@intel.com
---
 src/egl/drivers/dri2/egl_dri2.c |  144 
 src/egl/drivers/dri2/egl_dri2.h |   10 +-
 src/egl/drivers/dri2/platform_drm.c |2 +
 src/egl/drivers/dri2/platform_wayland.c |2 +
 src/egl/drivers/dri2/platform_x11.c |  285 +--
 5 files changed, 393 insertions(+), 50 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 3e51077..919b996 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -244,6 +244,17 @@ static struct dri2_extension_match dri2_core_extensions[] 
= {
{ NULL, 0, 0 }
 };
 
+static struct dri2_extension_match swrast_driver_extensions[] = {
+   { __DRI_CORE, 1, offsetof(struct dri2_egl_display, core) },
+   { __DRI_SWRAST, 2, offsetof(struct dri2_egl_display, swrast) },
+   { NULL }
+};
+
+static struct dri2_extension_match swrast_core_extensions[] = {
+   { __DRI_TEX_BUFFER, 2, offsetof(struct dri2_egl_display, tex_buffer) },
+   { NULL }
+};
+
 static EGLBoolean
 dri2_bind_extensions(struct dri2_egl_display *dri2_dpy,
 struct dri2_extension_match *matches,
@@ -331,10 +342,17 @@ dri2_load_driver(_EGLDisplay *disp)
   return EGL_FALSE;
}
 
-   if (!dri2_bind_extensions(dri2_dpy, dri2_driver_extensions, extensions)) {
-  dlclose(dri2_dpy-driver);
-  return EGL_FALSE;
-   }
+   if (strcmp(dri2_dpy-driver_name, swrast) == 0) {
+  if (!dri2_bind_extensions(dri2_dpy, swrast_driver_extensions, 
extensions)) {
+ dlclose(dri2_dpy-driver);
+ return EGL_FALSE;
+  }
+   } else {
+  if (!dri2_bind_extensions(dri2_dpy, dri2_driver_extensions, extensions)) 
{
+ dlclose(dri2_dpy-driver);
+ return EGL_FALSE;
+  }
+   } 
 
return EGL_TRUE;
 }
@@ -347,9 +365,17 @@ dri2_create_screen(_EGLDisplay *disp)
unsigned int api_mask;
 
dri2_dpy = disp-DriverData;
-   dri2_dpy-dri_screen =
-  dri2_dpy-dri2-createNewScreen(0, dri2_dpy-fd, dri2_dpy-extensions,
- dri2_dpy-driver_configs, disp);
+
+   if (dri2_dpy-dri2) {
+  dri2_dpy-dri_screen =
+ dri2_dpy-dri2-createNewScreen(0, dri2_dpy-fd, dri2_dpy-extensions,
+dri2_dpy-driver_configs, disp);
+   } else {
+  assert(dri2_dpy-swrast);
+  dri2_dpy-dri_screen =
+ dri2_dpy-swrast-createNewScreen(0, dri2_dpy-extensions,
+   dri2_dpy-driver_configs, disp);
+   }
 
if (dri2_dpy-dri_screen == NULL) {
   _eglLog(_EGL_WARNING, DRI2: failed to create dri screen);
@@ -357,13 +383,28 @@ dri2_create_screen(_EGLDisplay *disp)
}
 
extensions = dri2_dpy-core-getExtensions(dri2_dpy-dri_screen);
-   if (!dri2_bind_extensions(dri2_dpy, dri2_core_extensions, extensions))
-  goto cleanup_dri_screen;
+   
+   if (dri2_dpy-dri2) {
+  if (!dri2_bind_extensions(dri2_dpy, dri2_core_extensions, extensions))
+ goto cleanup_dri_screen;
+   } else {
+  assert(dri2_dpy-swrast);
+  if (!dri2_bind_extensions(dri2_dpy, swrast_core_extensions, extensions))
+ goto cleanup_dri_screen;
+   }
 
-   if (dri2_dpy-dri2-base.version = 2)
-  api_mask = dri2_dpy-dri2-getAPIMask(dri2_dpy-dri_screen);
-   else
-  api_mask = 1  __DRI_API_OPENGL;
+   if (dri2_dpy-dri2) {
+  if (dri2_dpy-dri2-base.version = 2)
+ api_mask = dri2_dpy-dri2-getAPIMask(dri2_dpy-dri_screen);
+  else
+ api_mask = 1  __DRI_API_OPENGL;
+   } else {
+  assert(dri2_dpy-swrast);
+  if (dri2_dpy-swrast-base.version = 2)
+ api_mask = 1  __DRI_API_OPENGL | 1  __DRI_API_GLES | 1  
__DRI_API_GLES2;
+  else
+ api_mask = 1  __DRI_API_OPENGL;
+   }
 
disp-ClientAPIs = 0;
if (api_mask  (1 __DRI_API_OPENGL))
@@ -373,10 +414,19 @@ dri2_create_screen(_EGLDisplay *disp)
if (api_mask  (1  __DRI_API_GLES2))
   disp-ClientAPIs |= EGL_OPENGL_ES2_BIT;
 
-   if (dri2_dpy-dri2-base.version = 2) {
-  disp-Extensions.KHR_surfaceless_gles1 = EGL_TRUE;
-  disp-Extensions.KHR_surfaceless_gles2 = EGL_TRUE;
-  disp-Extensions.KHR_surfaceless_opengl = EGL_TRUE;
+   if (dri2_dpy-dri2) {
+  if (dri2_dpy-dri2-base.version = 2) {
+ disp-Extensions.KHR_surfaceless_gles1 = EGL_TRUE;
+ disp-Extensions.KHR_surfaceless_gles2 = EGL_TRUE;
+ disp-Extensions.KHR_surfaceless_opengl = EGL_TRUE;
+  }
+   } else {
+  assert(dri2_dpy-swrast);
+  if (dri2_dpy-swrast-base.version = 2) {
+ disp-Extensions.KHR_surfaceless_gles1 = 

[Mesa-dev] [PATCH 3/3] egl_dri2: make swrast always double buffered

2011-02-08 Thread Feng, Haitao

From 1ef02e603f0296e5d11df4e9a1b783fae2da3af8 Mon Sep 17 00:00:00 2001
From: Haitao Feng haitao.f...@intel.com
Date: Wed, 9 Feb 2011 14:52:59 -0500
Subject: [PATCH 3/3] egl_dri2: make swrast always double buffered


Signed-off-by: Haitao Feng haitao.f...@intel.com
---
 src/egl/drivers/dri2/egl_dri2.c |7 ---
 src/egl/drivers/dri2/platform_x11.c |1 +
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 919b996..ffd97a5 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -157,14 +157,15 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig 
*dri_config, int id,
   }
}
 
-   /* In EGL, double buffer or not isn't a config attribute.  Pixmaps
+   /* In EGL, for dri2, double buffer or not isn't a config attribute.  Pixmaps
 * surfaces are always single buffered, pbuffer surfaces are always
 * back buffers and windows can be either, selected by passing an
 * attribute at window surface construction time.  To support this
 * we ignore all double buffer configs and manipulate the buffer we
-* return in the getBuffer callback to get the behaviour we want. */
+* return in the getBuffer callback to get the behaviour we want. 
+* for swrast, all surfaces are always double buffered */
 
-   if (double_buffer)
+   if ((dri2_dpy-dri2  double_buffer) || (dri2_dpy-swrast  
!double_buffer))
   return NULL;
 
if (depth  0  depth != base.BufferSize)
diff --git a/src/egl/drivers/dri2/platform_x11.c 
b/src/egl/drivers/dri2/platform_x11.c
index d138763..8147e12 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -23,6 +23,7 @@
  *
  * Authors:
  *Kristian Høgsberg k...@bitplanet.net
+ *Haitao Feng haitao.f...@intel.com
  */
 
 #include stdlib.h
-- 
1.7.1

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


[Mesa-dev] [Bug 34049] r600g: assertion failure (regression)

2011-02-08 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=34049

Rafael Monica monr...@gmail.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #2 from Rafael Monica monr...@gmail.com 2011-02-08 23:17:36 PST 
---
yeah, that commit fixed it here also on r600g

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev